Update and improvements to the config-schema reference#710
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WalkthroughRefactors schema anchors to def-* names, adds top-level properties Changes
Sequence Diagram(s)sequenceDiagram
participant CLI as docs generator CLI
participant Gen as generate-config-schema-doc.js
participant Root as root schema ($defs)
participant MD as Markdown output
CLI->>Gen: request doc generation
Gen->>Root: load rootSchema
loop traverse schema nodes
Gen->>Root: resolve $ref (with rootSchema context)
alt $ref -> TransactionField/BlockField
Root-->>Gen: enum values
Gen->>Gen: inline "Available values" list & emit `def-*` anchor
else other $ref/object/array
Root-->>Gen: resolved schema node
Gen->>Gen: render type with `def-*` anchor
end
end
Gen-->>MD: write updated Markdown with def-* anchors and inline enums
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| Ecosystem of the project. | ||
|
|
||
| - **type**: `anyOf(unknown | null)` | ||
| - **type**: `anyOf(object<EcosystemTag> | null)` |
There was a problem hiding this comment.
These 'unknown' fields were annoying, since we did actually have the type.
| - [preload_handlers](#preloadhandlers) | ||
| - [address_format](#addressformat) |
There was a problem hiding this comment.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
docs/HyperIndex/Advanced/config-schema-reference.md(19 hunks)docs/HyperRPC/hyperrpc-supported-networks.md(1 hunks)docs/HyperSync/hypersync-supported-networks.md(1 hunks)scripts/generate-config-schema-doc.js(10 hunks)static/schemas/config.evm.json(3 hunks)supported-networks.json(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-07-29T14:30:03.677Z
Learnt from: DenhamPreen
PR: enviodev/docs#673
File: docs/HyperIndex/supported-networks/chainweb-testnet-21.md:14-16
Timestamp: 2025-07-29T14:30:03.677Z
Learning: Chainweb Testnet 20 (ID: 5920) and Chainweb Testnet 21 (ID: 5921) have non-functional HyperSync endpoints that return HTTP 404, indicating these networks are not properly supported and should be removed from documentation.
Applied to files:
docs/HyperSync/hypersync-supported-networks.mddocs/HyperRPC/hyperrpc-supported-networks.md
🪛 markdownlint-cli2 (0.18.1)
docs/HyperSync/hypersync-supported-networks.md
51-51: Bare URL used
(MD034, no-bare-urls)
51-51: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (1)
docs/HyperRPC/hyperrpc-supported-networks.md (1)
43-44: Chainweb Testnet 21 RPC is live (405 expected)
The 405 responses confirm the service is running (GET is disallowed on JSON-RPC endpoints). Keep the Chainweb Testnet 21 row as-is.
| | Chainweb Testnet 21 | 5921 | https://chainweb-testnet-21.hypersync.xyz or https://5921.hypersync.xyz | 🪨 | | | ||
| | Chainweb Testnet 22 | 5922 | https://chainweb-testnet-22.hypersync.xyz or https://5922.hypersync.xyz | 🪨 | | |
There was a problem hiding this comment.
🧩 Analysis chain
Verify Chainweb Testnet 21 before advertising support
We previously removed this row after confirming the HyperSync endpoint returned HTTP 404; unless the service is now live, re-adding it gives users a broken URL. Please confirm the endpoint is operational (e.g. simple curl -I https://chainweb-testnet-21.hypersync.xyz) before keeping it here.
Based on learnings
🏁 Script executed:
#!/bin/bash
curl -s -o /dev/null -w "%{http_code}\n" https://chainweb-testnet-21.hypersync.xyz
curl -s -o /dev/null -w "%{http_code}\n" https://5921.hypersync.xyzLength of output: 7
Remove Chainweb Testnet 21 Both endpoints return HTTP 404; remove this row until support is restored.
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
51-51: Bare URL used
(MD034, no-bare-urls)
51-51: Bare URL used
(MD034, no-bare-urls)
52-52: Bare URL used
(MD034, no-bare-urls)
52-52: Bare URL used
(MD034, no-bare-urls)
🤖 Prompt for AI Agents
docs/HyperSync/hypersync-supported-networks.md around lines 51 to 52: remove the
entire table row for "Chainweb Testnet 21" (the row containing port 5921 and the
two endpoints) so the table no longer lists that network; ensure the table
remains syntactically valid (remove the line only, do not alter other rows or
table headers) and save the file.
| const prop = props[propName]; | ||
| out += | ||
| `- ${toInlineCode(propName)}: ${toInlineCode(describeType(prop))}${ | ||
| prop.description ? ` – ${prop.description}` : "" | ||
| `- ${toInlineCode(propName)}: ${toInlineCode(describeType(prop))}${prop.description ? ` – ${prop.description}` : "" | ||
| }` + "\n"; | ||
| }); | ||
| } |
There was a problem hiding this comment.
Pass root schema when listing nested property types
Inside the object “Properties” list we still call describeType(prop) without the new rootSchema context, so $ref-backed children now render as unknown (e.g. FieldSelection fields) instead of object<...>. Please thread the rootSchema argument through this call as well.
- `- ${toInlineCode(propName)}: ${toInlineCode(describeType(prop))}${prop.description ? ` – ${prop.description}` : ""}` + "\n";
+ `- ${toInlineCode(propName)}: ${toInlineCode(describeType(prop, rootSchema))}${prop.description ? ` – ${prop.description}` : ""}` + "\n";📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| const prop = props[propName]; | |
| out += | |
| `- ${toInlineCode(propName)}: ${toInlineCode(describeType(prop))}${ | |
| prop.description ? ` – ${prop.description}` : "" | |
| `- ${toInlineCode(propName)}: ${toInlineCode(describeType(prop))}${prop.description ? ` – ${prop.description}` : "" | |
| }` + "\n"; | |
| }); | |
| } | |
| const prop = props[propName]; | |
| out += | |
| `- ${toInlineCode(propName)}: ${toInlineCode(describeType(prop, rootSchema))}${prop.description ? ` – ${prop.description}` : "" | |
| }` + "\n"; |
🤖 Prompt for AI Agents
In scripts/generate-config-schema-doc.js around lines 237 to 242, the call
describeType(prop) inside the Properties list needs the rootSchema context so
$ref-backed children render correctly; update the call to pass the same
rootSchema used elsewhere (e.g. describeType(prop, rootSchema)), ensuring
rootSchema is in scope or passed into the enclosing function/closure if
necessary, so nested property types resolve correctly.
| "supported-networks/local-anvil", | ||
| "supported-networks/local-hardhat", | ||
| "supported-networks/0g-newton-testnet","supported-networks/abstract","supported-networks/aleph-zero-evm","supported-networks/altlayer-op-demo-testnet","supported-networks/ancient8","supported-networks/arbitrum","supported-networks/arbitrum-blueberry","supported-networks/arbitrum-nova","supported-networks/arbitrum-sepolia","supported-networks/artela-testnet","supported-networks/arthera-mainnet","supported-networks/asset-chain-mainnet","supported-networks/astar-zkevm","supported-networks/astar-zkyoto","supported-networks/aurora","supported-networks/aurora-turbo","supported-networks/avalanche","supported-networks/b2-hub-testnet","supported-networks/b3","supported-networks/b3-sepolia-testnet","supported-networks/base","supported-networks/base-sepolia","supported-networks/beam","supported-networks/berachain","supported-networks/berachain-artio-testnet","supported-networks/berachain-bartio","supported-networks/bevm-mainnet","supported-networks/bevm-testnet","supported-networks/bitfinity-mainnet","supported-networks/bitfinity-testnet","supported-networks/bitgert-mainnet","supported-networks/bitlayer","supported-networks/blast","supported-networks/blast-sepolia","supported-networks/bob-mainnet","supported-networks/boba","supported-networks/boba-bnb-mainnet","supported-networks/botanix-testnet","supported-networks/bsc","supported-networks/bsc-testnet","supported-networks/canto","supported-networks/canto-testnet","supported-networks/celo","supported-networks/celo-alfajores-testnet","supported-networks/chainweb-testnet-20","supported-networks/chainweb-testnet-22","supported-networks/chainweb-testnet-23","supported-networks/chainweb-testnet-24","supported-networks/chiliz","supported-networks/chiliz-testnet-spicy","supported-networks/citrea-devnet","supported-networks/citrea-testnet","supported-networks/core","supported-networks/creator-testnet","supported-networks/cronos-zkevm","supported-networks/cronos-zkevm-testnet","supported-networks/crossfi-mainnet","supported-networks/crossfi-mainnet","supported-networks/crossfi-testnet","supported-networks/curtis","supported-networks/cyber","supported-networks/damon","supported-networks/degen-chain","supported-networks/dfk-chain","supported-networks/dogechain-mainnet","supported-networks/dogechain-testnet","supported-networks/dos-chain","supported-networks/energy-web","supported-networks/eos","supported-networks/eth","supported-networks/etherlink-testnet","supported-networks/exosama","supported-networks/fantom","supported-networks/fantom-testnet","supported-networks/flare","supported-networks/flare-songbird","supported-networks/flow","supported-networks/flow-testnet","supported-networks/fraxtal","supported-networks/fuel-mainnet","supported-networks/fuel-testnet","supported-networks/fuji","supported-networks/galadriel-devnet","supported-networks/gnosis","supported-networks/gnosis-chiado","supported-networks/gravity-alpha-mainnet","supported-networks/harmony-shard-0","supported-networks/heco-chain","supported-networks/holesky","supported-networks/hyperliquid","supported-networks/immutable-zkevm","supported-networks/immutable-zkevm-testnet","supported-networks/ink","supported-networks/iotex-network","supported-networks/japan-open-chain","supported-networks/kaia","supported-networks/kakarot-starknet-sepolia","supported-networks/kroma","supported-networks/layeredge-testnet","supported-networks/lightlink-pegasus-testnet","supported-networks/lightlink-phoenix","supported-networks/linea","supported-networks/lisk","supported-networks/lukso","supported-networks/lukso-testnet","supported-networks/manta","supported-networks/manta-pacific-sepolia","supported-networks/mantle","supported-networks/megaeth-testnet","supported-networks/merlin","supported-networks/metall2","supported-networks/meter-mainnet","supported-networks/meter-testnet","supported-networks/mev-commit","supported-networks/mint-mainnet","supported-networks/mode","supported-networks/monad-testnet","supported-networks/moonbase-alpha","supported-networks/moonbeam","supported-networks/morph","supported-networks/nautilus","supported-networks/neo-x-testnet","supported-networks/nibiru-testnet","supported-networks/now-chaint","supported-networks/oasis-emerald","supported-networks/oasis-sapphire","supported-networks/onigiri-subnet","supported-networks/onigiri-test-subnet","supported-networks/ontology-mainnet","supported-networks/ontology-testnet","supported-networks/op-celestia-raspberry","supported-networks/opbnb","supported-networks/optimism","supported-networks/optimism-sepolia","supported-networks/optopia","supported-networks/peaq","supported-networks/plume","supported-networks/polygon","supported-networks/polygon-amoy","supported-networks/polygon-zkevm","supported-networks/polygon-zkevm-cardona-testnet","supported-networks/public-goods-network","supported-networks/pulsechain","supported-networks/puppynet-shibarium","supported-networks/ronin","supported-networks/rootstock","supported-networks/saakuru","supported-networks/satoshivm","supported-networks/scroll","supported-networks/scroll-sepolia","supported-networks/sentient-testnet","supported-networks/sepolia","supported-networks/shibarium","supported-networks/shimmer-evm","supported-networks/skale-europa","supported-networks/soneium","supported-networks/sonic","supported-networks/sophon","supported-networks/sophon-testnet","supported-networks/stratovm-testnet","supported-networks/superseed","supported-networks/superseed-sepolia-testnet","supported-networks/swell","supported-networks/taiko","supported-networks/tangle","supported-networks/tanssi-demo","supported-networks/taraxa","supported-networks/telos-evm-mainnet","supported-networks/telos-evm-testnet","supported-networks/torus-mainnet","supported-networks/torus-testnet","supported-networks/unichain","supported-networks/unichain-sepolia","supported-networks/unicorn-ultra-nebulas-testnet","supported-networks/velas-mainnet","supported-networks/viction","supported-networks/worldchain","supported-networks/x-layer-mainnet","supported-networks/x-layer-testnet","supported-networks/xdc","supported-networks/xdc-testnet","supported-networks/zeta","supported-networks/zeta-testnet","supported-networks/zircuit","supported-networks/zklink-nova-mainnet","supported-networks/zksync","supported-networks/zksync-sepolia-testnet","supported-networks/zora","supported-networks/zora-sepolia"]} No newline at end of file | ||
| "supported-networks/0g-newton-testnet","supported-networks/abstract","supported-networks/aleph-zero-evm","supported-networks/altlayer-op-demo-testnet","supported-networks/ancient8","supported-networks/arbitrum","supported-networks/arbitrum-blueberry","supported-networks/arbitrum-nova","supported-networks/arbitrum-sepolia","supported-networks/artela-testnet","supported-networks/arthera-mainnet","supported-networks/asset-chain-mainnet","supported-networks/astar-zkevm","supported-networks/astar-zkyoto","supported-networks/aurora","supported-networks/aurora-turbo","supported-networks/avalanche","supported-networks/b2-hub-testnet","supported-networks/b3","supported-networks/b3-sepolia-testnet","supported-networks/base","supported-networks/base-sepolia","supported-networks/beam","supported-networks/berachain","supported-networks/berachain-artio-testnet","supported-networks/berachain-bartio","supported-networks/bevm-mainnet","supported-networks/bevm-testnet","supported-networks/bitfinity-mainnet","supported-networks/bitfinity-testnet","supported-networks/bitgert-mainnet","supported-networks/bitlayer","supported-networks/blast","supported-networks/blast-sepolia","supported-networks/bob-mainnet","supported-networks/boba","supported-networks/boba-bnb-mainnet","supported-networks/botanix-testnet","supported-networks/bsc","supported-networks/bsc-testnet","supported-networks/canto","supported-networks/canto-testnet","supported-networks/celo","supported-networks/celo-alfajores-testnet","supported-networks/chainweb-testnet-20","supported-networks/chainweb-testnet-21","supported-networks/chainweb-testnet-22","supported-networks/chainweb-testnet-23","supported-networks/chainweb-testnet-24","supported-networks/chiliz","supported-networks/chiliz-testnet-spicy","supported-networks/citrea-devnet","supported-networks/citrea-testnet","supported-networks/core","supported-networks/creator-testnet","supported-networks/cronos-zkevm","supported-networks/cronos-zkevm-testnet","supported-networks/crossfi-mainnet","supported-networks/crossfi-mainnet","supported-networks/crossfi-testnet","supported-networks/curtis","supported-networks/cyber","supported-networks/damon","supported-networks/degen-chain","supported-networks/dfk-chain","supported-networks/dogechain-mainnet","supported-networks/dogechain-testnet","supported-networks/dos-chain","supported-networks/energy-web","supported-networks/eos","supported-networks/eth","supported-networks/etherlink-testnet","supported-networks/exosama","supported-networks/fantom","supported-networks/fantom-testnet","supported-networks/flare","supported-networks/flare-songbird","supported-networks/flow","supported-networks/flow-testnet","supported-networks/fraxtal","supported-networks/fuel-mainnet","supported-networks/fuel-testnet","supported-networks/fuji","supported-networks/galadriel-devnet","supported-networks/gnosis","supported-networks/gnosis-chiado","supported-networks/gravity-alpha-mainnet","supported-networks/harmony-shard-0","supported-networks/heco-chain","supported-networks/holesky","supported-networks/hyperliquid","supported-networks/immutable-zkevm","supported-networks/immutable-zkevm-testnet","supported-networks/ink","supported-networks/iotex-network","supported-networks/japan-open-chain","supported-networks/kaia","supported-networks/kakarot-starknet-sepolia","supported-networks/kroma","supported-networks/layeredge-testnet","supported-networks/lightlink-pegasus-testnet","supported-networks/lightlink-phoenix","supported-networks/linea","supported-networks/lisk","supported-networks/lukso","supported-networks/lukso-testnet","supported-networks/manta","supported-networks/manta-pacific-sepolia","supported-networks/mantle","supported-networks/megaeth-testnet","supported-networks/merlin","supported-networks/metall2","supported-networks/meter-mainnet","supported-networks/meter-testnet","supported-networks/mev-commit","supported-networks/mint-mainnet","supported-networks/mode","supported-networks/monad-testnet","supported-networks/moonbase-alpha","supported-networks/moonbeam","supported-networks/morph","supported-networks/nautilus","supported-networks/neo-x-testnet","supported-networks/nibiru-testnet","supported-networks/now-chaint","supported-networks/oasis-emerald","supported-networks/oasis-sapphire","supported-networks/onigiri-subnet","supported-networks/onigiri-test-subnet","supported-networks/ontology-mainnet","supported-networks/ontology-testnet","supported-networks/op-celestia-raspberry","supported-networks/opbnb","supported-networks/optimism","supported-networks/optimism-sepolia","supported-networks/optopia","supported-networks/peaq","supported-networks/plume","supported-networks/polygon","supported-networks/polygon-amoy","supported-networks/polygon-zkevm","supported-networks/polygon-zkevm-cardona-testnet","supported-networks/public-goods-network","supported-networks/pulsechain","supported-networks/puppynet-shibarium","supported-networks/ronin","supported-networks/rootstock","supported-networks/saakuru","supported-networks/satoshivm","supported-networks/scroll","supported-networks/scroll-sepolia","supported-networks/sentient-testnet","supported-networks/sepolia","supported-networks/shibarium","supported-networks/shimmer-evm","supported-networks/skale-europa","supported-networks/soneium","supported-networks/sonic","supported-networks/sophon","supported-networks/sophon-testnet","supported-networks/stratovm-testnet","supported-networks/superseed","supported-networks/superseed-sepolia-testnet","supported-networks/swell","supported-networks/taiko","supported-networks/tangle","supported-networks/tanssi-demo","supported-networks/taraxa","supported-networks/telos-evm-mainnet","supported-networks/telos-evm-testnet","supported-networks/torus-mainnet","supported-networks/torus-testnet","supported-networks/unichain","supported-networks/unichain-sepolia","supported-networks/unicorn-ultra-nebulas-testnet","supported-networks/velas-mainnet","supported-networks/viction","supported-networks/worldchain","supported-networks/x-layer-mainnet","supported-networks/x-layer-testnet","supported-networks/xdc","supported-networks/xdc-testnet","supported-networks/zeta","supported-networks/zeta-testnet","supported-networks/zircuit","supported-networks/zklink-nova-mainnet","supported-networks/zksync","supported-networks/zksync-sepolia-testnet","supported-networks/zora","supported-networks/zora-sepolia"]} No newline at end of file |
There was a problem hiding this comment.
🧩 Analysis chain
Hold off on listing chainweb-testnet-21 until the endpoint works
This JSON powers the docs, so adding supported-networks/chainweb-testnet-21 will surface the same non-functional HyperSync endpoint noted earlier. Please keep it out (and avoid publishing duplicates like this) until the network is actually live.
Based on learnings
🏁 Script executed:
#!/bin/bash
curl -s -o /dev/null -w "%{http_code}\n" https://chainweb-testnet-21.hypersync.xyz
curl -s -o /dev/null -w "%{http_code}\n" https://5921.hypersync.xyzLength of output: 7
Remove chainweb-testnet-21 from supported-networks.json
Its HyperSync endpoint returns HTTP 404; re-add the entry only once the network is live.
🤖 Prompt for AI Agents
In supported-networks.json around line 5, remove the
"supported-networks/chainweb-testnet-21" entry from the array (delete the exact
string and adjust surrounding commas so the JSON remains valid), save the file
and run a JSON lint/formatter to ensure no trailing commas or syntax errors;
re-add the entry later only when the network is live.
|
|
||
| Variants: | ||
| - `1`: [EcosystemTag](#ecosystemtag) | ||
| - `1`: [EcosystemTag](#def-ecosystemtag) |
There was a problem hiding this comment.
There were clashes, eg on the old site there was no way to link to this part of the page (since they both had the same link: https://docs.envio.dev/docs/HyperIndex/config-schema-reference#fieldselection)
| - hash | ||
| block_fields: | ||
| - timestamp | ||
| - miner |
There was a problem hiding this comment.
This was just wrong, Timestamp is always included on the block and if you add this here the codegen will not allow it (and fail with error)
| - `confirmed_block_threshold`: `integer | null` – The number of blocks from the head that the indexer should account for in case of reorgs. | ||
| - `start_block`: `integer` – The block at which the indexer should start ingesting data | ||
| - `end_block`: `integer | null` – The block at which the indexer should terminate. | ||
| - `contracts`: `array<unknown>` – All the contracts that should be indexed on the given network |
There was a problem hiding this comment.
This was just a bug, it was overwriting it for some reason.
| } | ||
|
|
||
| function toInlineCode(value) { | ||
| const s = String(value).replace(/</g, "<").replace(/>/g, ">"); |
There was a problem hiding this comment.
Not necessary - keeping the < / > is better.
| // Handle $ref first | ||
| if (schema.$ref && rootSchema) { | ||
| const refName = schema.$ref.split("/").slice(-1)[0]; | ||
| const resolved = resolveRef(schema.$ref, rootSchema); | ||
| if (resolved) { | ||
| return `object<${refName}>`; | ||
| } | ||
| } |
There was a problem hiding this comment.
This removes the "unknown" fields...
| raw_events: "raw_events: true", | ||
| }, | ||
| defs: { | ||
| FieldSelection: `events:\n - event: "Assigned(address indexed user, uint256 amount)"\n field_selection:\n transaction_fields:\n - transactionIndex\n block_fields:\n - timestamp`, |
There was a problem hiding this comment.
Unnecessary duplicate example
There was a problem hiding this comment.
Taken back, added - it shows that it works under contracts as per event also!
Summary by CodeRabbit
New Features
Documentation
Chores