From 4ac2cf91305820c784012353ba5f14a9d3599d8d Mon Sep 17 00:00:00 2001 From: Tomasz Kopacki Date: Tue, 24 Jun 2025 12:19:28 +0200 Subject: [PATCH 1/3] refactor(datasources): define DatasourceName enum --- .../src/plugins/basenames/plugin.ts | 6 +++--- .../src/plugins/lineanames/plugin.ts | 6 +++--- .../ensindexer/src/plugins/subgraph/plugin.ts | 6 +++--- .../ensindexer/src/plugins/threedns/plugin.ts | 8 ++++---- apps/ensindexer/test/dns-helpers.test.ts | 4 ++-- packages/datasources/src/ens-test-env.ts | 4 ++-- packages/datasources/src/holesky.ts | 4 ++-- packages/datasources/src/index.ts | 4 ++-- packages/datasources/src/lib/types.ts | 20 +++++++++---------- packages/datasources/src/mainnet.ts | 12 +++++------ packages/datasources/src/sepolia.ts | 8 ++++---- 11 files changed, 40 insertions(+), 42 deletions(-) diff --git a/apps/ensindexer/src/plugins/basenames/plugin.ts b/apps/ensindexer/src/plugins/basenames/plugin.ts index cd16f18b5..9c68e8173 100644 --- a/apps/ensindexer/src/plugins/basenames/plugin.ts +++ b/apps/ensindexer/src/plugins/basenames/plugin.ts @@ -2,7 +2,7 @@ * The Basenames plugin describes indexing behavior for the Basenames ENS Datasource, leveraging * the shared Subgraph-compatible indexing logic. */ -import { DatasourceNames } from "@ensnode/datasources"; +import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -19,7 +19,7 @@ import { const pluginName = PluginName.Basenames; // Define the Datasources required by the plugin -const requiredDatasources = [DatasourceNames.Basenames]; +const requiredDatasources = [DatasourceName.Basenames]; // construct a unique contract namespace for this plugin const pluginNamespace = makePluginNamespace(pluginName); @@ -28,7 +28,7 @@ const pluginNamespace = makePluginNamespace(pluginName); function createPonderConfig(config: ENSIndexerConfig) { const { chain, contracts } = getDatasourceAsFullyDefinedAtCompileTime( config.namespace, - DatasourceNames.Basenames, + DatasourceName.Basenames, ); return createConfig({ diff --git a/apps/ensindexer/src/plugins/lineanames/plugin.ts b/apps/ensindexer/src/plugins/lineanames/plugin.ts index 987f08fa0..17aff5e5a 100644 --- a/apps/ensindexer/src/plugins/lineanames/plugin.ts +++ b/apps/ensindexer/src/plugins/lineanames/plugin.ts @@ -2,7 +2,7 @@ * The Lineanames plugin describes indexing behavior for the Lineanames ENS Datasource, leveraging * the shared Subgraph-compatible indexing logic. */ -import { DatasourceNames } from "@ensnode/datasources"; +import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -20,7 +20,7 @@ const pluginName = PluginName.Lineanames; // enlist datasources used within createPonderConfig function // useful for config validation -const requiredDatasources = [DatasourceNames.Lineanames]; +const requiredDatasources = [DatasourceName.Lineanames]; // construct a unique contract namespace for this plugin const pluginNamespace = makePluginNamespace(pluginName); @@ -29,7 +29,7 @@ const pluginNamespace = makePluginNamespace(pluginName); function createPonderConfig(config: ENSIndexerConfig) { const { chain, contracts } = getDatasourceAsFullyDefinedAtCompileTime( config.namespace, - DatasourceNames.Lineanames, + DatasourceName.Lineanames, ); return createConfig({ diff --git a/apps/ensindexer/src/plugins/subgraph/plugin.ts b/apps/ensindexer/src/plugins/subgraph/plugin.ts index d79f65255..373fe5b6a 100644 --- a/apps/ensindexer/src/plugins/subgraph/plugin.ts +++ b/apps/ensindexer/src/plugins/subgraph/plugin.ts @@ -2,7 +2,7 @@ * The Subgraph plugin describes indexing behavior for the 'Root' Datasource, in alignment with the * legacy ENS Subgraph indexing logic. */ -import { DatasourceNames } from "@ensnode/datasources"; +import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -20,7 +20,7 @@ const pluginName = PluginName.Subgraph; // enlist datasources used within createPonderConfig function // useful for config validation -const requiredDatasources = [DatasourceNames.ENSRoot]; +const requiredDatasources = [DatasourceName.ENSRoot]; // construct a unique contract namespace for this plugin const pluginNamespace = makePluginNamespace(pluginName); @@ -29,7 +29,7 @@ const pluginNamespace = makePluginNamespace(pluginName); function createPonderConfig(config: ENSIndexerConfig) { const { chain, contracts } = getDatasourceAsFullyDefinedAtCompileTime( config.namespace, - DatasourceNames.ENSRoot, + DatasourceName.ENSRoot, ); return createConfig({ diff --git a/apps/ensindexer/src/plugins/threedns/plugin.ts b/apps/ensindexer/src/plugins/threedns/plugin.ts index 1979cd79d..0f75e8085 100644 --- a/apps/ensindexer/src/plugins/threedns/plugin.ts +++ b/apps/ensindexer/src/plugins/threedns/plugin.ts @@ -1,7 +1,7 @@ /** * The ThreeDNS plugin describes indexing behavior for 3DNSToken on both Optimism and Base. */ -import { DatasourceNames } from "@ensnode/datasources"; +import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -19,7 +19,7 @@ const pluginName = PluginName.ThreeDNS; // enlist datasources used within createPonderConfig function // useful for config validation -const requiredDatasources = [DatasourceNames.ThreeDNSOptimism, DatasourceNames.ThreeDNSBase]; +const requiredDatasources = [DatasourceName.ThreeDNSOptimism, DatasourceName.ThreeDNSBase]; // construct a unique contract namespace for this plugin const pluginNamespace = makePluginNamespace(pluginName); @@ -27,11 +27,11 @@ const pluginNamespace = makePluginNamespace(pluginName); // config object factory used to derive PluginConfig type function createPonderConfig(config: ENSIndexerConfig) { const { chain: optimism, contracts: optimismContracts } = - getDatasourceAsFullyDefinedAtCompileTime(config.namespace, DatasourceNames.ThreeDNSOptimism); + getDatasourceAsFullyDefinedAtCompileTime(config.namespace, DatasourceName.ThreeDNSOptimism); const { chain: base, contracts: baseContracts } = getDatasourceAsFullyDefinedAtCompileTime( config.namespace, - DatasourceNames.ThreeDNSBase, + DatasourceName.ThreeDNSBase, ); return createConfig({ diff --git a/apps/ensindexer/test/dns-helpers.test.ts b/apps/ensindexer/test/dns-helpers.test.ts index de5f81eb7..a6c2fd0a8 100644 --- a/apps/ensindexer/test/dns-helpers.test.ts +++ b/apps/ensindexer/test/dns-helpers.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; import { decodeDNSPacketBytes, decodeTXTData, parseRRSet } from "@/lib/dns-helpers"; -import { ENSNamespaceId, getDatasource } from "@ensnode/datasources"; +import { DatasourceName, ENSNamespaceId, getDatasource } from "@ensnode/datasources"; import { TxtAnswer } from "dns-packet"; import { decodeEventLog, hexToBytes, toBytes, zeroHash } from "viem"; @@ -10,7 +10,7 @@ import { decodeEventLog, hexToBytes, toBytes, zeroHash } from "viem"; const { args: { record }, } = decodeEventLog({ - abi: getDatasource(ENSNamespaceId.Mainnet, "threedns-base").contracts.Resolver.abi, + abi: getDatasource(ENSNamespaceId.Mainnet, DatasourceName.ThreeDNSBase).contracts.Resolver.abi, topics: [ "0xaaac3b4b3e6807b5b4585562beabaa2de9bd07db514a1eba2c11d1af5b9d9dc7", "0x6470e2677db6a5bb6c69e51fce7271aeeb5f2808ea7dfdf34b703749555b3e10", diff --git a/packages/datasources/src/ens-test-env.ts b/packages/datasources/src/ens-test-env.ts index b55e8fc9f..c4d50bda1 100644 --- a/packages/datasources/src/ens-test-env.ts +++ b/packages/datasources/src/ens-test-env.ts @@ -2,7 +2,7 @@ import { Address } from "viem"; import { anvil } from "viem/chains"; import { ResolverConfig } from "./lib/resolver"; -import { DatasourceNames, type ENSNamespace } from "./lib/types"; +import { DatasourceName, type ENSNamespace } from "./lib/types"; // ABIs for ENSRoot Datasource import { BaseRegistrar as root_BaseRegistrar } from "./abis/root/BaseRegistrar"; @@ -43,7 +43,7 @@ export default { * Addresses and Start Blocks from ens-test-env * https://github.com/ensdomains/ens-test-env/ */ - [DatasourceNames.ENSRoot]: { + [DatasourceName.ENSRoot]: { // ens-test-env runs on a local Anvil chain with id 1337 chain: { ...anvil, id: 1337 }, contracts: { diff --git a/packages/datasources/src/holesky.ts b/packages/datasources/src/holesky.ts index 860a32d79..2c4c1d652 100644 --- a/packages/datasources/src/holesky.ts +++ b/packages/datasources/src/holesky.ts @@ -1,7 +1,7 @@ import { holesky } from "viem/chains"; import { ResolverConfig } from "./lib/resolver"; -import { DatasourceNames, type ENSNamespace } from "./lib/types"; +import { DatasourceName, type ENSNamespace } from "./lib/types"; // ABIs for ENSRoot Datasource import { BaseRegistrar as root_BaseRegistrar } from "./abis/root/BaseRegistrar"; @@ -20,7 +20,7 @@ export default { * Addresses and Start Blocks from ENS Holesky Subgraph Manifest * https://ipfs.io/ipfs/Qmd94vseLpkUrSFvJ3GuPubJSyHz8ornhNrwEAt6pjcbex */ - [DatasourceNames.ENSRoot]: { + [DatasourceName.ENSRoot]: { chain: holesky, contracts: { RegistryOld: { diff --git a/packages/datasources/src/index.ts b/packages/datasources/src/index.ts index 6d959279b..be30d1841 100644 --- a/packages/datasources/src/index.ts +++ b/packages/datasources/src/index.ts @@ -1,4 +1,4 @@ -import { DatasourceNames, ENSNamespace, ENSNamespaceId } from "./lib/types"; +import { DatasourceName, ENSNamespace, ENSNamespaceId } from "./lib/types"; import ensTestEnv from "./ens-test-env"; import holesky from "./holesky"; @@ -49,4 +49,4 @@ export const getDatasource = < * @returns the chain ID that hosts the ENS Root */ export const getENSRootChainId = (namespaceId: ENSNamespaceId) => - getDatasource(namespaceId, DatasourceNames.ENSRoot).chain.id; + getDatasource(namespaceId, DatasourceName.ENSRoot).chain.id; diff --git a/packages/datasources/src/lib/types.ts b/packages/datasources/src/lib/types.ts index 639ba5686..5c4c0edba 100644 --- a/packages/datasources/src/lib/types.ts +++ b/packages/datasources/src/lib/types.ts @@ -46,15 +46,13 @@ export interface Datasource { /** * DatasourceNames encodes a unique id for each known Datasource. */ -export const DatasourceNames = { - ENSRoot: "ensroot", - Basenames: "basenames", - Lineanames: "lineanames", - ThreeDNSOptimism: "threedns-optimism", - ThreeDNSBase: "threedns-base", -} as const; - -export type DatasourceName = (typeof DatasourceNames)[keyof typeof DatasourceNames]; +export enum DatasourceName { + ENSRoot = "ensroot", + Basenames = "basenames", + Lineanames = "lineanames", + ThreeDNSOptimism = "threedns-optimism", + ThreeDNSBase = "threedns-base", +} /** * EventFilter specifies a given event's name and arguments to filter that event by. @@ -96,5 +94,5 @@ export type ContractConfig = * within the ENSNamespace are optional. */ export type ENSNamespace = { - [DatasourceNames.ENSRoot]: Datasource; -} & Partial, Datasource>>; + [DatasourceName.ENSRoot]: Datasource; +} & Partial, Datasource>>; diff --git a/packages/datasources/src/mainnet.ts b/packages/datasources/src/mainnet.ts index 09fa94573..dc465c5bb 100644 --- a/packages/datasources/src/mainnet.ts +++ b/packages/datasources/src/mainnet.ts @@ -1,6 +1,6 @@ import { base, linea, mainnet, optimism } from "viem/chains"; -import { DatasourceNames, type ENSNamespace } from "./lib/types"; +import { DatasourceName, type ENSNamespace } from "./lib/types"; // ABIs for ENSRoot Datasource import { BaseRegistrar as root_BaseRegistrar } from "./abis/root/BaseRegistrar"; @@ -33,7 +33,7 @@ export default { * Addresses and Start Blocks from ENS Mainnet Subgraph Manifest * https://ipfs.io/ipfs/Qmd94vseLpkUrSFvJ3GuPubJSyHz8ornhNrwEAt6pjcbex */ - [DatasourceNames.ENSRoot]: { + [DatasourceName.ENSRoot]: { chain: mainnet, contracts: { RegistryOld: { @@ -79,7 +79,7 @@ export default { * Addresses and Start Blocks from Basenames * https://github.com/base-org/basenames */ - [DatasourceNames.Basenames]: { + [DatasourceName.Basenames]: { /** * As of 9-Feb-2025 the Resolver for 'base.eth' in the mainnet ENS namespace is * 0xde9049636F4a1dfE0a64d1bFe3155C0A14C54F31. @@ -130,7 +130,7 @@ export default { * Addresses and Start Blocks from Lineanames * https://github.com/Consensys/linea-ens */ - [DatasourceNames.Lineanames]: { + [DatasourceName.Lineanames]: { /** * As of 9-Feb-2025 the Resolver for 'linea.eth' in the mainnet ENS namespace is * 0xde16ee87B0C019499cEBDde29c9F7686560f679a. @@ -179,7 +179,7 @@ export default { * The 3DNS Datasource on Optimism. * https://opensea.io/collection/3dns-powered-domains */ - [DatasourceNames.ThreeDNSOptimism]: { + [DatasourceName.ThreeDNSOptimism]: { chain: optimism, contracts: { ThreeDNSToken: { @@ -200,7 +200,7 @@ export default { * The 3DNS Datasource on Base. * https://opensea.io/collection/3dns-powered-domains-base */ - [DatasourceNames.ThreeDNSBase]: { + [DatasourceName.ThreeDNSBase]: { chain: base, contracts: { ThreeDNSToken: { diff --git a/packages/datasources/src/sepolia.ts b/packages/datasources/src/sepolia.ts index 9b2deb2f9..5fbfef331 100644 --- a/packages/datasources/src/sepolia.ts +++ b/packages/datasources/src/sepolia.ts @@ -1,7 +1,7 @@ import { baseSepolia, lineaSepolia, sepolia } from "viem/chains"; import { ResolverConfig } from "./lib/resolver"; -import { DatasourceNames, type ENSNamespace } from "./lib/types"; +import { DatasourceName, type ENSNamespace } from "./lib/types"; // ABIs for ENSRoot Datasource import { BaseRegistrar as root_BaseRegistrar } from "./abis/root/BaseRegistrar"; @@ -32,7 +32,7 @@ export default { * Addresses and Start Blocks from ENS Sepolia Subgraph Manifest * https://ipfs.io/ipfs/QmdDtoN9QCRsBUsyoiiUUMQPPmPp5jimUQe81828UyWLtg */ - [DatasourceNames.ENSRoot]: { + [DatasourceName.ENSRoot]: { chain: sepolia, contracts: { RegistryOld: { @@ -78,7 +78,7 @@ export default { * Addresses and Start Blocks from Basenames * https://github.com/base-org/basenames */ - [DatasourceNames.Basenames]: { + [DatasourceName.Basenames]: { /** * As of 5-Jun-2025 the Resolver for 'basetest.eth' in the Sepolia ENS namespace is * 0x084D10C07EfEecD9fFc73DEb38ecb72f9eEb65aB. @@ -129,7 +129,7 @@ export default { * Addresses and Start Blocks from Lineanames * https://github.com/Consensys/linea-ens */ - [DatasourceNames.Lineanames]: { + [DatasourceName.Lineanames]: { /** * As of 5-Jun-2025 the Resolver for 'linea-sepolia.eth' in the Sepolia ENS namespace is * 0x64884ED06241c059497aEdB2C7A44CcaE6bc7937. From 81021529dd7671b4e83ea09084c7e1eb544017ab Mon Sep 17 00:00:00 2001 From: Tomasz Kopacki Date: Tue, 24 Jun 2025 12:47:06 +0200 Subject: [PATCH 2/3] docs(ensindexer): update plugin code docs --- .../ensindexer/src/plugins/basenames/plugin.ts | 11 ++++++----- .../src/plugins/lineanames/plugin.ts | 18 +++++++++--------- apps/ensindexer/src/plugins/subgraph/plugin.ts | 18 +++++++++--------- apps/ensindexer/src/plugins/threedns/plugin.ts | 18 +++++++++--------- 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/apps/ensindexer/src/plugins/basenames/plugin.ts b/apps/ensindexer/src/plugins/basenames/plugin.ts index 9c68e8173..15c445710 100644 --- a/apps/ensindexer/src/plugins/basenames/plugin.ts +++ b/apps/ensindexer/src/plugins/basenames/plugin.ts @@ -2,6 +2,7 @@ * The Basenames plugin describes indexing behavior for the Basenames ENS Datasource, leveraging * the shared Subgraph-compatible indexing logic. */ + import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -21,7 +22,7 @@ const pluginName = PluginName.Basenames; // Define the Datasources required by the plugin const requiredDatasources = [DatasourceName.Basenames]; -// construct a unique contract namespace for this plugin +// Construct a unique plugin namespace to wrap contract names const pluginNamespace = makePluginNamespace(pluginName); // config object factory used to derive PluginConfig type @@ -58,7 +59,7 @@ function createPonderConfig(config: ENSIndexerConfig) { }); } -// implicitly define the type returned by createPonderConfig +// Implicitly define the type returned by createPonderConfig type PonderConfig = ReturnType; export default { @@ -76,9 +77,9 @@ export default { }), /** - * Load the plugin configuration lazily to prevent premature execution of - * nested factory functions, i.e. to ensure that the plugin configuration - * is only built when the plugin is activated. + * Create the ponder configuration lazily to prevent premature execution of + * nested factory functions, i.e. to ensure that the ponder configuration + * is only created for this plugin when it is activated. */ createPonderConfig, diff --git a/apps/ensindexer/src/plugins/lineanames/plugin.ts b/apps/ensindexer/src/plugins/lineanames/plugin.ts index 17aff5e5a..7e4b11e72 100644 --- a/apps/ensindexer/src/plugins/lineanames/plugin.ts +++ b/apps/ensindexer/src/plugins/lineanames/plugin.ts @@ -2,6 +2,7 @@ * The Lineanames plugin describes indexing behavior for the Lineanames ENS Datasource, leveraging * the shared Subgraph-compatible indexing logic. */ + import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -18,11 +19,10 @@ import { const pluginName = PluginName.Lineanames; -// enlist datasources used within createPonderConfig function -// useful for config validation +// Define the Datasources required by the plugin const requiredDatasources = [DatasourceName.Lineanames]; -// construct a unique contract namespace for this plugin +// Construct a unique plugin namespace to wrap contract names const pluginNamespace = makePluginNamespace(pluginName); // config object factory used to derive PluginConfig type @@ -59,7 +59,7 @@ function createPonderConfig(config: ENSIndexerConfig) { }); } -// construct a specific type for plugin configuration +// Implicitly define the type returned by createPonderConfig type PonderConfig = ReturnType; export default { @@ -78,15 +78,15 @@ export default { }), /** - * Load the plugin configuration lazily to prevent premature execution of - * nested factory functions, i.e. to ensure that the plugin configuration - * is only built when the plugin is activated. + * Create the ponder configuration lazily to prevent premature execution of + * nested factory functions, i.e. to ensure that the ponder configuration + * is only created for this plugin when it is activated. */ createPonderConfig, - /** The plugin name, used for identification */ + /** The unique plugin name */ pluginName, - /** A list of required datasources for the plugin */ + /** The plugin's required Datasources */ requiredDatasources, } as const satisfies ENSIndexerPlugin; diff --git a/apps/ensindexer/src/plugins/subgraph/plugin.ts b/apps/ensindexer/src/plugins/subgraph/plugin.ts index 373fe5b6a..6989f42c5 100644 --- a/apps/ensindexer/src/plugins/subgraph/plugin.ts +++ b/apps/ensindexer/src/plugins/subgraph/plugin.ts @@ -2,6 +2,7 @@ * The Subgraph plugin describes indexing behavior for the 'Root' Datasource, in alignment with the * legacy ENS Subgraph indexing logic. */ + import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -18,11 +19,10 @@ import { const pluginName = PluginName.Subgraph; -// enlist datasources used within createPonderConfig function -// useful for config validation +// Define the Datasources required by the plugin const requiredDatasources = [DatasourceName.ENSRoot]; -// construct a unique contract namespace for this plugin +// Construct a unique plugin namespace to wrap contract names const pluginNamespace = makePluginNamespace(pluginName); // config object factory used to derive PluginConfig type @@ -67,7 +67,7 @@ function createPonderConfig(config: ENSIndexerConfig) { }); } -// construct a specific type for plugin configuration +// Implicitly define the type returned by createPluginConfig type PonderConfig = ReturnType; export default { @@ -86,15 +86,15 @@ export default { }), /** - * Load the plugin configuration lazily to prevent premature execution of - * nested factory functions, i.e. to ensure that the plugin configuration - * is only built when the plugin is activated. + * Create the ponder configuration lazily to prevent premature execution of + * nested factory functions, i.e. to ensure that the ponder configuration + * is only created for this plugin when it is activated. */ createPonderConfig, - /** The plugin name, used for identification */ + /** The unique plugin name */ pluginName, - /** A list of required datasources for the plugin */ + /** The plugin's required Datasources */ requiredDatasources, } as const satisfies ENSIndexerPlugin; diff --git a/apps/ensindexer/src/plugins/threedns/plugin.ts b/apps/ensindexer/src/plugins/threedns/plugin.ts index 0f75e8085..6c6cf0c21 100644 --- a/apps/ensindexer/src/plugins/threedns/plugin.ts +++ b/apps/ensindexer/src/plugins/threedns/plugin.ts @@ -1,6 +1,7 @@ /** * The ThreeDNS plugin describes indexing behavior for 3DNSToken on both Optimism and Base. */ + import { DatasourceName } from "@ensnode/datasources"; import { PluginName } from "@ensnode/ensnode-sdk"; import { createConfig } from "ponder"; @@ -17,11 +18,10 @@ import { const pluginName = PluginName.ThreeDNS; -// enlist datasources used within createPonderConfig function -// useful for config validation +// Define the Datasources required by the plugin const requiredDatasources = [DatasourceName.ThreeDNSOptimism, DatasourceName.ThreeDNSBase]; -// construct a unique contract namespace for this plugin +// Construct a unique plugin namespace to wrap contract names const pluginNamespace = makePluginNamespace(pluginName); // config object factory used to derive PluginConfig type @@ -58,7 +58,7 @@ function createPonderConfig(config: ENSIndexerConfig) { }); } -// construct a specific type for plugin configuration +// Implicitly define the type returned by createPluginConfig type PonderConfig = ReturnType; export default { @@ -72,15 +72,15 @@ export default { }), /** - * Load the plugin configuration lazily to prevent premature execution of - * nested factory functions, i.e. to ensure that the plugin configuration - * is only built when the plugin is activated. + * Create the ponder configuration lazily to prevent premature execution of + * nested factory functions, i.e. to ensure that the ponder configuration + * is only created for this plugin when it is activated. */ createPonderConfig, - /** The plugin name, used for identification */ + /** The unique plugin name */ pluginName, - /** A list of required datasources for the plugin */ + /** The plugin's required Datasources */ requiredDatasources, } as const satisfies ENSIndexerPlugin; From 15c38da319383cbf1eb17f49a80f010dd94b1388 Mon Sep 17 00:00:00 2001 From: Tomasz Kopacki Date: Tue, 24 Jun 2025 12:51:15 +0200 Subject: [PATCH 3/3] docs(changeset): Replace inline string literals with the `DatasourceName` enum values. --- .changeset/four-doodles-rhyme.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/four-doodles-rhyme.md diff --git a/.changeset/four-doodles-rhyme.md b/.changeset/four-doodles-rhyme.md new file mode 100644 index 000000000..39681a243 --- /dev/null +++ b/.changeset/four-doodles-rhyme.md @@ -0,0 +1,6 @@ +--- +"@ensnode/datasources": minor +"ensindexer": minor +--- + +Replace inline string literals with the `DatasourceName` enum values.