Skip to content

refactor(ensnode-sdk): make Indexing Status a top-level module#1635

Merged
tk-o merged 2 commits intomainfrom
refactor/ensnode-sdk-general-indexing-status-module
Feb 16, 2026
Merged

refactor(ensnode-sdk): make Indexing Status a top-level module#1635
tk-o merged 2 commits intomainfrom
refactor/ensnode-sdk-general-indexing-status-module

Conversation

@tk-o
Copy link
Contributor

@tk-o tk-o commented Feb 16, 2026

Lite PR

Tip: Review docs on the ENSNode PR process

Summary

  • Indexing Status has become a general module, not tied to ENSIndexer.
    • Code from ./ensindexer/indexing-status has been moved to ./indexing-status.

Why

  • This change will enable an update where ENSNode SDK will have two separate API modules, one for ENSApi (./ensapi/api) and one for ENSIndexer (./ensindexer/api). Each of those separate API modules will be able to use shared Indexing Status data model.
  • For now, we just have ENSNodeClient which works with ENSApi. However, to achieve goals of issue ENSApi: Persist ENSIndexerPublicConfig to the database #1252, we'll also need ENSIndexerClient that will use data model distinct from ENSNodeClient.

Testing

  • Ran static code checks and testing suite.
  • Tested major HTTP API endpoints for both, ENSApi and ENSIndexer services.

Notes for Reviewer (Optional)


Pre-Review Checklist (Blocking)

  • This PR does not introduce significant changes and is low-risk to review quickly.
  • Relevant changesets are included (or are not required)

tk-o added 2 commits February 16, 2026 13:27
Moves `./ensindexer/indexing-status` to `./indexing-status`. This update enables sharing base Indexing Status data model between ENSApi and ENSIndexer response data models.
@tk-o tk-o requested a review from a team as a code owner February 16, 2026 12:43
Copilot AI review requested due to automatic review settings February 16, 2026 12:43
@changeset-bot
Copy link

changeset-bot bot commented Feb 16, 2026

⚠️ No Changeset found

Latest commit: 94dd0c5

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link
Contributor

vercel bot commented Feb 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
admin.ensnode.io Ready Ready Preview, Comment Feb 16, 2026 0:43am
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
ensnode.io Skipped Skipped Feb 16, 2026 0:43am
ensrainbow.io Skipped Skipped Feb 16, 2026 0:43am

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 16, 2026

📝 Walkthrough

Walkthrough

This PR refactors the module structure by relocating indexing-status types and exports from the central ensindexer barrel to dedicated submodules, and updates all affected import paths throughout the codebase accordingly.

Changes

Cohort / File(s) Summary
Public API Structure
client.test.ts, ensindexer/index.ts, index.ts
Reorganizes public re-exports by removing indexing-status from ensindexer barrel and promoting it to main index; updates client imports to reference dedicated type modules instead of ensindexer barrel.
ensapi/indexing-status Imports
ensapi/api/indexing-status/deserialize.ts, ensapi/api/indexing-status/response.ts, ensapi/api/indexing-status/serialize.ts, ensapi/api/indexing-status/serialized-response.ts, ensapi/api/indexing-status/zod-schemas.ts
Updates import paths for indexing-status modules from deeper ensindexer paths to direct relative paths under indexing-status directory.
ensapi Integration
ensapi/api/name-tokens/prerequisites.ts, ensapi/api/registrar-actions/prerequisites.ts, ensapi/api/types.ts
Adjusts imports to reference indexing-status types from updated module locations.
Core Indexing-Status Types
indexing-status/block-refs.mock.ts, indexing-status/chain-indexing-status-snapshot.ts, indexing-status/cross-chain-indexing-status-snapshot.ts, indexing-status/omnichain-indexing-status-snapshot.ts, indexing-status/realtime-indexing-status-projection.ts, indexing-status/omnichain-indexing-status-snapshot.test.ts
Updates relative import paths for shared types from two levels (../../shared/types) to one level (../shared/types).
Indexing-Status Deserialize
indexing-status/deserialize/chain-indexing-status-snapshot.ts, indexing-status/deserialize/cross-chain-indexing-status-snapshot.ts, indexing-status/deserialize/omnichain-indexing-status-snapshot.ts, indexing-status/deserialize/realtime-indexing-status-projection.ts
Adjusts import paths for shared types and utilities from three levels to two levels (../../../shared/ to ../../shared/).
Indexing-Status Serialize
indexing-status/serialize/chain-indexing-status-snapshot.ts, indexing-status/serialize/omnichain-indexing-status-snapshot.ts
Updates import paths for serialized types and schema utilities from deeper paths to shallower relative paths.
Indexing-Status Validate
indexing-status/validate/chain-indexing-status-snapshot.ts, indexing-status/validate/cross-chain-indexing-status-snapshot.ts, indexing-status/validate/omnichain-indexing-status-snapshot.ts, indexing-status/validate/realtime-indexing-status-projection.ts
Adjusts import paths for Unvalidated type and validation utilities from three levels to two levels deep.
Indexing-Status Zod Schemas
indexing-status/zod-schema/chain-indexing-status-snapshot.ts, indexing-status/zod-schema/cross-chain-indexing-status-snapshot.ts, indexing-status/zod-schema/omnichain-indexing-status-snapshot.ts, indexing-status/zod-schema/realtime-indexing-status-projection.ts
Updates import paths for shared zod schema utilities and types from deeper nested paths to shallower relative paths.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

ensnode-sdk

Poem

🐰 Hops through modules with a clearer sight,
From nested paths to shallower height,
Imports reorganized, exports take flight—
The indexing-status now shines so bright! ✨

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main
Title check ✅ Passed The title accurately summarizes the main change: refactoring the Indexing Status module to be a top-level, general-purpose module independent of ENSIndexer.
Description check ✅ Passed The description follows the template and includes all required sections: Summary, Why, Testing, Notes for Reviewer, and Pre-Review Checklist. It clearly explains the change, rationale, testing approach, and context.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch refactor/ensnode-sdk-general-indexing-status-module

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor Author

@tk-o tk-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review completed.

@tk-o tk-o changed the title Refactor/ensnode sdk general indexing status module refactor(ensnode-sdk): make Indexing Status a top-level module Feb 16, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 16, 2026

Greptile Summary

This PR moves the indexing-status module from src/ensindexer/indexing-status/ up to src/indexing-status/, decoupling it from the ENSIndexer-specific namespace to make it a general-purpose SDK module. This is a preparatory refactor for introducing a separate ENSIndexerClient alongside the existing ENSNodeClient.

  • Relocated the entire indexing-status directory (27 files including types, serialization, deserialization, validation, zod schemas, and tests) from src/ensindexer/indexing-status/ to src/indexing-status/.
  • Updated all relative import paths in moved files (adjusting ../../ to ../ since the module is now one level closer to src/).
  • Updated all consumer import paths across ensapi/api/ submodules and client.test.ts to reference the new location.
  • Removed the indexing-status re-export from src/ensindexer/index.ts and added a direct export * from "./indexing-status" in src/index.ts.
  • Public API surface remains unchanged — all previously exported symbols are still exported at the same top-level paths.
  • No logic, type, or behavioral changes were made; this is a pure structural refactor.

Confidence Score: 5/5

  • This PR is safe to merge — it is a pure file relocation refactor with no logic changes and preserves the public API surface.
  • All 38 changed files are either file renames or import path updates. The diff is symmetrical (37 insertions, 37 deletions), no source code references to the old ensindexer/indexing-status path remain, the barrel exports are identical, and there are no export name collisions between ./ensindexer and ./indexing-status. The net change count per file is 0-3 lines, all of which are mechanical path adjustments.
  • No files require special attention.

Important Files Changed

Filename Overview
packages/ensnode-sdk/src/index.ts Added export * from "./indexing-status" to top-level barrel export. Correctly placed in alphabetical order.
packages/ensnode-sdk/src/ensindexer/index.ts Removed export * from "./indexing-status" re-export since the module has been moved up to src/indexing-status.
packages/ensnode-sdk/src/client.test.ts Updated imports to use new ./indexing-status/ paths instead of ./ensindexer. PluginName correctly imported separately from ./ensindexer/config/types.
packages/ensnode-sdk/src/ensapi/api/indexing-status/deserialize.ts Updated import path from ../../../ensindexer/indexing-status/ to ../../../indexing-status/.
packages/ensnode-sdk/src/ensapi/api/name-tokens/prerequisites.ts Updated import path from ../../../ensindexer/indexing-status/ to ../../../indexing-status/. PluginName import correctly unchanged.
packages/ensnode-sdk/src/ensapi/api/registrar-actions/prerequisites.ts Updated import path from ../../../ensindexer/indexing-status/ to ../../../indexing-status/. PluginName import correctly unchanged.
packages/ensnode-sdk/src/ensapi/api/types.ts Updated import path from ../../ensindexer/indexing-status/ to ../../indexing-status/.
packages/ensnode-sdk/src/indexing-status/index.ts Barrel export file moved from ensindexer/indexing-status/ to indexing-status/. Content unchanged.

Flowchart

flowchart TD
    subgraph "Before (src/)"
        A1["index.ts"] -->|"export *"| B1["ensindexer/index.ts"]
        B1 -->|"export *"| C1["ensindexer/indexing-status/"]
        B1 -->|"export *"| D1["ensindexer/config/"]
    end

    subgraph "After (src/)"
        A2["index.ts"] -->|"export *"| B2["ensindexer/index.ts"]
        A2 -->|"export * (new)"| C2["indexing-status/"]
        B2 -->|"export *"| D2["ensindexer/config/"]
    end

    subgraph "Consumers (unchanged public API)"
        E["ensapi/api/indexing-status/"]
        F["ensapi/api/name-tokens/"]
        G["ensapi/api/registrar-actions/"]
        H["ensapi/api/types.ts"]
        I["client.test.ts"]
    end

    C2 --> E
    C2 --> F
    C2 --> G
    C2 --> H
    C2 --> I
Loading

Last reviewed commit: 94dd0c5

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

38 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request refactors the indexing-status module from being a submodule of ENSIndexer (./ensindexer/indexing-status) to a general-purpose module (./indexing-status). This architectural change enables future work to introduce separate API clients for ENSApi and ENSIndexer, as outlined in issue #1252.

Changes:

  • Moved indexing-status module from ./ensindexer/indexing-status to ./indexing-status
  • Updated all import paths throughout the codebase to reflect the new module location
  • Added new test files for indexing-status functionality
  • Updated package exports to expose the indexing-status module at the top level

Reviewed changes

Copilot reviewed 31 out of 38 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/ensnode-sdk/src/indexing-status/index.ts New index file exporting all indexing-status submodules
packages/ensnode-sdk/src/indexing-status/zod-schema/*.ts Import paths updated from ../../../shared to ../../shared
packages/ensnode-sdk/src/indexing-status/validate/*.ts Import paths updated from ../../../shared to ../../shared
packages/ensnode-sdk/src/indexing-status/serialize/*.ts Import paths updated from ../../../shared to ../../shared; added new cross-chain serialization file
packages/ensnode-sdk/src/indexing-status/deserialize/*.ts Import paths updated from ../../../shared to ../../shared
packages/ensnode-sdk/src/indexing-status/*.ts Import paths updated from ../../shared to ../shared
packages/ensnode-sdk/src/indexing-status/*.test.ts New test files added with correct relative imports
packages/ensnode-sdk/src/index.ts Added export for ./indexing-status module
packages/ensnode-sdk/src/ensindexer/index.ts Removed export for ./indexing-status
packages/ensnode-sdk/src/ensapi/api/**/*.ts Import paths updated from ../../ensindexer/indexing-status to ../../indexing-status
packages/ensnode-sdk/src/client.test.ts Import paths updated to use new module structure

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Member

@lightwalker-eth lightwalker-eth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tk-o Looks good, thanks 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants