From 86ff71c82bcce9bc37992d3e2b45cc07d962d075 Mon Sep 17 00:00:00 2001
From: Tomasz Kopacki
Date: Wed, 1 Apr 2026 07:29:11 +0200
Subject: [PATCH 1/3] Remove `nodejs` version info from data model
---
apps/ensadmin/src/app/mock/config-api.mock.ts | 1 -
.../connection/cards/ensnode-info.tsx | 17 -----------------
apps/ensapi/src/config/config.schema.test.ts | 1 -
.../ensdb-writer-worker.mock.ts | 1 -
.../public-config-builder.test.ts | 10 +---------
.../public-config-builder.ts | 3 +--
apps/ensindexer/src/lib/version-info.ts | 7 -------
.../src/content/docs/docs/usage/api.mdx | 3 +--
.../ensdb-sdk/src/client/ensdb-client.mock.ts | 1 -
packages/ensnode-sdk/src/ensapi/client.test.ts | 1 -
.../src/ensapi/config/conversions.test.ts | 2 --
.../ensnode-sdk/src/ensindexer/client.mock.ts | 1 -
.../src/ensindexer/config/conversions.test.ts | 2 --
.../ensnode-sdk/src/ensindexer/config/types.ts | 7 -------
.../src/ensindexer/config/zod-schemas.test.ts | 8 --------
.../src/ensindexer/config/zod-schemas.ts | 1 -
16 files changed, 3 insertions(+), 63 deletions(-)
diff --git a/apps/ensadmin/src/app/mock/config-api.mock.ts b/apps/ensadmin/src/app/mock/config-api.mock.ts
index 54d0244f9..71158f69c 100644
--- a/apps/ensadmin/src/app/mock/config-api.mock.ts
+++ b/apps/ensadmin/src/app/mock/config-api.mock.ts
@@ -27,7 +27,6 @@ export const ensIndexerPublicConfig = deserializeENSIndexerPublicConfig({
"tokenscope",
],
versionInfo: {
- nodejs: "22.18.0",
ponder: "0.11.43",
ensIndexer: "0.35.0",
ensDb: "0.35.0",
diff --git a/apps/ensadmin/src/components/connection/cards/ensnode-info.tsx b/apps/ensadmin/src/components/connection/cards/ensnode-info.tsx
index d922aa946..2b579f290 100644
--- a/apps/ensadmin/src/components/connection/cards/ensnode-info.tsx
+++ b/apps/ensadmin/src/components/connection/cards/ensnode-info.tsx
@@ -447,23 +447,6 @@ function ENSNodeConfigCardContent({
}
/>
- {ensIndexerPublicConfig.versionInfo.nodejs}
- }
- additionalInfo={
-
- Version of the{" "}
-
- Node.js
- {" "}
- runtime.
-
- }
- />
({
// Mock the version-info module
vi.mock("@/lib/version-info", () => ({
getEnsIndexerVersion: vi.fn(),
- getNodeJsVersion: vi.fn(),
getPackageVersion: vi.fn(),
}));
@@ -48,7 +47,7 @@ import {
validateEnsIndexerVersionInfo,
} from "@ensnode/ensnode-sdk";
-import { getEnsIndexerVersion, getNodeJsVersion, getPackageVersion } from "@/lib/version-info";
+import { getEnsIndexerVersion, getPackageVersion } from "@/lib/version-info";
// Test fixtures
const mockEnsRainbowConfig: EnsRainbowPublicConfig = {
@@ -58,7 +57,6 @@ const mockEnsRainbowConfig: EnsRainbowPublicConfig = {
};
const mockVersionInfo: EnsIndexerVersionInfo = {
- nodejs: "20.0.0",
ponder: "0.9.0",
ensDb: "1.0.0",
ensIndexer: "1.0.0",
@@ -83,7 +81,6 @@ function createMockPublicConfig(overrides: Partial = {})
// Helper to setup standard mocks
function setupStandardMocks() {
vi.mocked(getEnsIndexerVersion).mockReturnValue("1.0.0");
- vi.mocked(getNodeJsVersion).mockReturnValue("20.0.0");
vi.mocked(getPackageVersion).mockReturnValue("0.9.0");
vi.mocked(validateEnsIndexerVersionInfo).mockReturnValue(mockVersionInfo);
}
@@ -112,12 +109,10 @@ describe("PublicConfigBuilder", () => {
// Assert
expect(ensRainbowClientMock.config).toHaveBeenCalledTimes(1);
expect(getEnsIndexerVersion).toHaveBeenCalledTimes(1);
- expect(getNodeJsVersion).toHaveBeenCalledTimes(1);
expect(getPackageVersion).toHaveBeenCalledWith("ponder");
expect(getPackageVersion).toHaveBeenCalledWith("@adraffy/ens-normalize");
expect(validateEnsIndexerVersionInfo).toHaveBeenCalledWith({
- nodejs: "20.0.0",
ponder: "0.9.0",
ensDb: "1.0.0",
ensIndexer: "1.0.0",
@@ -158,7 +153,6 @@ describe("PublicConfigBuilder", () => {
// Assert
expect(ensRainbowClientMock.config).toHaveBeenCalledTimes(1);
expect(getEnsIndexerVersion).toHaveBeenCalledTimes(1);
- expect(getNodeJsVersion).toHaveBeenCalledTimes(1);
expect(getPackageVersion).toHaveBeenCalledTimes(2);
expect(validateEnsIndexerVersionInfo).toHaveBeenCalledTimes(1);
expect(validateEnsIndexerPublicConfig).toHaveBeenCalledTimes(1);
@@ -183,11 +177,9 @@ describe("PublicConfigBuilder", () => {
} as unknown as EnsRainbow.ApiClient;
vi.mocked(getEnsIndexerVersion).mockReturnValue("2.0.0");
- vi.mocked(getNodeJsVersion).mockReturnValue("22.0.0");
vi.mocked(getPackageVersion).mockReturnValue("1.0.0");
const customVersionInfo: EnsIndexerVersionInfo = {
- nodejs: "22.0.0",
ponder: "1.0.0",
ensDb: "2.0.0",
ensIndexer: "2.0.0",
diff --git a/apps/ensindexer/src/lib/public-config-builder/public-config-builder.ts b/apps/ensindexer/src/lib/public-config-builder/public-config-builder.ts
index 33d591151..633542ca9 100644
--- a/apps/ensindexer/src/lib/public-config-builder/public-config-builder.ts
+++ b/apps/ensindexer/src/lib/public-config-builder/public-config-builder.ts
@@ -8,7 +8,7 @@ import {
} from "@ensnode/ensnode-sdk";
import type { EnsRainbow } from "@ensnode/ensrainbow-sdk";
-import { getEnsIndexerVersion, getNodeJsVersion, getPackageVersion } from "@/lib/version-info";
+import { getEnsIndexerVersion, getPackageVersion } from "@/lib/version-info";
export class PublicConfigBuilder {
/**
@@ -80,7 +80,6 @@ export class PublicConfigBuilder {
const ensDbVersion = ensIndexerVersion;
return validateEnsIndexerVersionInfo({
- nodejs: getNodeJsVersion(),
ponder: getPackageVersion("ponder"),
ensDb: ensDbVersion,
ensIndexer: ensIndexerVersion,
diff --git a/apps/ensindexer/src/lib/version-info.ts b/apps/ensindexer/src/lib/version-info.ts
index 8f47997d7..6a057b800 100644
--- a/apps/ensindexer/src/lib/version-info.ts
+++ b/apps/ensindexer/src/lib/version-info.ts
@@ -11,13 +11,6 @@ export function getEnsIndexerVersion(): string {
return packageJson.version;
}
-/**
- * Get Node.js version
- */
-export function getNodeJsVersion(): string {
- return process.versions.node;
-}
-
/**
* Get NPM package version.
*
diff --git a/docs/ensnode.io/src/content/docs/docs/usage/api.mdx b/docs/ensnode.io/src/content/docs/docs/usage/api.mdx
index db67ae306..da07742e0 100644
--- a/docs/ensnode.io/src/content/docs/docs/usage/api.mdx
+++ b/docs/ensnode.io/src/content/docs/docs/usage/api.mdx
@@ -85,7 +85,7 @@ The response includes several important configuration categories:
- **Feature Flags**: Boolean settings for experimental features and optional
functionality
- **Plugins**: Activated plugins
-- **ENSIndexer Version Information**: Node.js version, Ponder framework version,
+- **ENSIndexer Version Information**: Ponder framework version,
ENSRainbow public config, ENSDb version, ENSIndexer version, [ENS Normalize version](https://www.npmjs.com/package/@adraffy/ens-normalize)
### Example response
@@ -117,7 +117,6 @@ The response includes several important configuration categories:
"tokenscope"
],
"versionInfo": {
- "nodejs": "22.18.0",
"ponder": "0.16.1",
"ensDb": "1.5.1",
"ensIndexer": "1.5.1",
diff --git a/packages/ensdb-sdk/src/client/ensdb-client.mock.ts b/packages/ensdb-sdk/src/client/ensdb-client.mock.ts
index 7cb2c59d0..824c00ec6 100644
--- a/packages/ensdb-sdk/src/client/ensdb-client.mock.ts
+++ b/packages/ensdb-sdk/src/client/ensdb-client.mock.ts
@@ -42,7 +42,6 @@ export const publicConfig = {
namespace: "mainnet",
plugins: [PluginName.Subgraph],
versionInfo: {
- nodejs: "22.10.12",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
diff --git a/packages/ensnode-sdk/src/ensapi/client.test.ts b/packages/ensnode-sdk/src/ensapi/client.test.ts
index f53ea9ce0..2adf59519 100644
--- a/packages/ensnode-sdk/src/ensapi/client.test.ts
+++ b/packages/ensnode-sdk/src/ensapi/client.test.ts
@@ -86,7 +86,6 @@ const EXAMPLE_CONFIG_RESPONSE = {
PluginName.Registrars,
],
versionInfo: {
- nodejs: "22.18.0",
ponder: "0.11.43",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
diff --git a/packages/ensnode-sdk/src/ensapi/config/conversions.test.ts b/packages/ensnode-sdk/src/ensapi/config/conversions.test.ts
index ae15afb0c..fcd9c524e 100644
--- a/packages/ensnode-sdk/src/ensapi/config/conversions.test.ts
+++ b/packages/ensnode-sdk/src/ensapi/config/conversions.test.ts
@@ -30,7 +30,6 @@ const MOCK_ENSAPI_PUBLIC_CONFIG = {
ensDb: "0.36.0",
ensIndexer: "0.36.0",
ensNormalize: "1.1.1",
- nodejs: "20.0.0",
ponder: "0.5.0",
},
},
@@ -65,7 +64,6 @@ describe("ENSApi Config Serialization/Deserialization", () => {
ensDb: "0.36.0",
ensIndexer: "0.36.0",
ensNormalize: "1.1.1",
- nodejs: "20.0.0",
ponder: "0.5.0",
},
},
diff --git a/packages/ensnode-sdk/src/ensindexer/client.mock.ts b/packages/ensnode-sdk/src/ensindexer/client.mock.ts
index 84d0ceaa2..8bca076dc 100644
--- a/packages/ensnode-sdk/src/ensindexer/client.mock.ts
+++ b/packages/ensnode-sdk/src/ensindexer/client.mock.ts
@@ -33,7 +33,6 @@ export const configResponseMock = {
PluginName.Registrars,
],
versionInfo: {
- nodejs: "22.18.0",
ponder: "0.11.43",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
diff --git a/packages/ensnode-sdk/src/ensindexer/config/conversions.test.ts b/packages/ensnode-sdk/src/ensindexer/config/conversions.test.ts
index 79b1c82c0..68f8da12f 100644
--- a/packages/ensnode-sdk/src/ensindexer/config/conversions.test.ts
+++ b/packages/ensnode-sdk/src/ensindexer/config/conversions.test.ts
@@ -25,7 +25,6 @@ describe("ENSIndexer: Config", () => {
namespace: "mainnet",
plugins: [PluginName.Subgraph],
versionInfo: {
- nodejs: "v22.10.12",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
@@ -68,7 +67,6 @@ describe("ENSIndexer: Config", () => {
namespace: "mainnet",
plugins: [PluginName.Subgraph],
versionInfo: {
- nodejs: "v22.10.12",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
diff --git a/packages/ensnode-sdk/src/ensindexer/config/types.ts b/packages/ensnode-sdk/src/ensindexer/config/types.ts
index afc70c50d..ed3977ea8 100644
--- a/packages/ensnode-sdk/src/ensindexer/config/types.ts
+++ b/packages/ensnode-sdk/src/ensindexer/config/types.ts
@@ -22,13 +22,6 @@ export enum PluginName {
* Version info about ENSIndexer and its dependencies.
*/
export interface EnsIndexerVersionInfo {
- /**
- * Node.js runtime version
- *
- * @see https://nodejs.org/en/about/previous-releases
- **/
- nodejs: string;
-
/**
* Ponder framework version
*
diff --git a/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.test.ts b/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.test.ts
index 182251613..237911773 100644
--- a/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.test.ts
+++ b/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.test.ts
@@ -105,14 +105,12 @@ describe("ENSIndexer: Config", () => {
it("can parse version info values", () => {
expect(
makeEnsIndexerVersionInfoSchema().parse({
- nodejs: "v22.22.22",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
ensNormalize: "1.11.1",
} satisfies EnsIndexerVersionInfo),
).toStrictEqual({
- nodejs: "v22.22.22",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
@@ -122,7 +120,6 @@ describe("ENSIndexer: Config", () => {
expect(
formatParseError(
makeEnsIndexerVersionInfoSchema().safeParse({
- nodejs: "",
ponder: "",
ensDb: "",
ensIndexer: "",
@@ -130,8 +127,6 @@ describe("ENSIndexer: Config", () => {
} satisfies EnsIndexerVersionInfo),
),
).toStrictEqual(`✖ Value must be a non-empty string.
- → at nodejs
-✖ Value must be a non-empty string.
→ at ponder
✖ Value must be a non-empty string.
→ at ensDb
@@ -145,7 +140,6 @@ describe("ENSIndexer: Config", () => {
expect(
formatParseError(
makeEnsIndexerVersionInfoSchema().safeParse({
- nodejs: "v22.22.22",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.33.0", // Different from ensDb
@@ -171,7 +165,6 @@ describe("ENSIndexer: Config", () => {
plugins: [PluginName.Subgraph, PluginName.Registrars], // Multiple plugins allowed when not subgraph compatible
databaseSchemaName: "test_schema",
versionInfo: {
- nodejs: "v22.22.22",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
@@ -226,7 +219,6 @@ describe("ENSIndexer: Config", () => {
plugins: [PluginName.Subgraph],
databaseSchemaName: "test_schema",
versionInfo: {
- nodejs: "v22.22.22",
ponder: "0.11.25",
ensDb: "0.32.0",
ensIndexer: "0.32.0",
diff --git a/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.ts b/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.ts
index c491b8844..380b9924a 100644
--- a/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.ts
+++ b/packages/ensnode-sdk/src/ensindexer/config/zod-schemas.ts
@@ -99,7 +99,6 @@ export const makeEnsIndexerVersionInfoSchema = (valueLabel: string = "Value") =>
z
.object(
{
- nodejs: makeNonEmptyStringSchema(),
ponder: makeNonEmptyStringSchema(),
ensDb: makeNonEmptyStringSchema(),
ensIndexer: makeNonEmptyStringSchema(),
From 622fd81e251d2c09bff6d7c20f8aacd7272e7cac Mon Sep 17 00:00:00 2001
From: Tomasz Kopacki
Date: Wed, 1 Apr 2026 07:31:33 +0200
Subject: [PATCH 2/3] docs(changeset): Removed `nodejs` field from
`EnsIndexerVersionInfo` data model.
---
.changeset/dry-pants-begin.md | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 .changeset/dry-pants-begin.md
diff --git a/.changeset/dry-pants-begin.md b/.changeset/dry-pants-begin.md
new file mode 100644
index 000000000..b91edc326
--- /dev/null
+++ b/.changeset/dry-pants-begin.md
@@ -0,0 +1,5 @@
+---
+"@ensnode/ensnode-sdk": minor
+---
+
+Removed `nodejs` field from `EnsIndexerVersionInfo` data model.
From 0c682101b7b004ecf05a28b0e3dd22cfb28c98f8 Mon Sep 17 00:00:00 2001
From: Tomasz Kopacki
Date: Wed, 1 Apr 2026 08:44:37 +0200
Subject: [PATCH 3/3] Update OpenAPI Spec
---
docs/docs.ensnode.io/ensapi-openapi.json | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/docs/docs.ensnode.io/ensapi-openapi.json b/docs/docs.ensnode.io/ensapi-openapi.json
index 979757cc1..56f025c3b 100644
--- a/docs/docs.ensnode.io/ensapi-openapi.json
+++ b/docs/docs.ensnode.io/ensapi-openapi.json
@@ -125,13 +125,12 @@
"versionInfo": {
"type": "object",
"properties": {
- "nodejs": { "type": "string", "minLength": 1 },
"ponder": { "type": "string", "minLength": 1 },
"ensDb": { "type": "string", "minLength": 1 },
"ensIndexer": { "type": "string", "minLength": 1 },
"ensNormalize": { "type": "string", "minLength": 1 }
},
- "required": ["nodejs", "ponder", "ensDb", "ensIndexer", "ensNormalize"]
+ "required": ["ponder", "ensDb", "ensIndexer", "ensNormalize"]
}
},
"required": [