@ensnode/ensnode-schema 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- // src/ponder.schema.ts
1
+ // src/subgraph.schema.ts
2
2
  import { index, onchainTable, relations } from "ponder";
3
3
 
4
4
  // src/collate.ts
@@ -9,7 +9,7 @@ function monkeypatchCollate(col, collation) {
9
9
  return col;
10
10
  }
11
11
 
12
- // src/ponder.schema.ts
12
+ // src/subgraph.schema.ts
13
13
  var domain = onchainTable("domains", (t) => ({
14
14
  // The namehash of the name
15
15
  id: t.hex().primaryKey(),
@@ -109,7 +109,10 @@ var resolver = onchainTable(
109
109
  texts: t.text().array(),
110
110
  // The set of observed SLIP-44 coin types for this resolver
111
111
  // NOTE: we avoid .notNull.default([]) to match subgraph behavior
112
- coinTypes: t.bigint().array()
112
+ coinTypes: t.bigint().array(),
113
+ // NOTE(resolver-records): include the value of the reverse-resolution name() record
114
+ // https://docs.ens.domains/ensip/3
115
+ name: t.text()
113
116
  }),
114
117
  (t) => ({
115
118
  idx: index().on(t.domainId)
@@ -572,6 +575,62 @@ var versionChangedRelations = relations(versionChanged, ({ one }) => ({
572
575
  references: [resolver.id]
573
576
  })
574
577
  }));
578
+
579
+ // src/resolver-records.schema.ts
580
+ import { index as index2, onchainTable as onchainTable2, relations as relations2 } from "ponder";
581
+ var ext_resolverRelations = relations2(resolver, ({ one, many }) => ({
582
+ // resolver has many address records
583
+ addressRecords: many(ext_resolverAddressRecords),
584
+ // resolver has many text records
585
+ // NOTE: can't use `texts` because Resolver.texts is used by subgraph schema
586
+ textRecords: many(ext_resolverTextRecords)
587
+ }));
588
+ var ext_resolverAddressRecords = onchainTable2(
589
+ "ext_resolver_address_records",
590
+ (t) => ({
591
+ // keyed by (resolverId, coinType)
592
+ id: t.text().primaryKey(),
593
+ resolverId: t.text().notNull(),
594
+ coinType: t.bigint().notNull(),
595
+ address: t.text().notNull()
596
+ }),
597
+ (t) => ({
598
+ byCoinType: index2().on(t.id, t.coinType)
599
+ })
600
+ );
601
+ var ext_resolverAddressRecordsRelations = relations2(
602
+ ext_resolverAddressRecords,
603
+ ({ one, many }) => ({
604
+ // belongs to resolver
605
+ resolver: one(resolver, {
606
+ fields: [ext_resolverAddressRecords.resolverId],
607
+ references: [resolver.id]
608
+ })
609
+ })
610
+ );
611
+ var ext_resolverTextRecords = onchainTable2(
612
+ "ext_resolver_text_records",
613
+ (t) => ({
614
+ // keyed by (resolverId, key)
615
+ id: t.text().primaryKey(),
616
+ resolverId: t.text().notNull(),
617
+ key: t.text().notNull(),
618
+ value: t.text().notNull()
619
+ }),
620
+ (t) => ({
621
+ byKey: index2().on(t.id, t.key)
622
+ })
623
+ );
624
+ var ext_resolverTextRecordsRelations = relations2(
625
+ ext_resolverTextRecords,
626
+ ({ one, many }) => ({
627
+ // belongs to resolver
628
+ resolver: one(resolver, {
629
+ fields: [ext_resolverTextRecords.resolverId],
630
+ references: [resolver.id]
631
+ })
632
+ })
633
+ );
575
634
  export {
576
635
  abiChanged,
577
636
  abiChangedRelations,
@@ -587,6 +646,11 @@ export {
587
646
  domainRelations,
588
647
  expiryExtended,
589
648
  expiryExtendedRelations,
649
+ ext_resolverAddressRecords,
650
+ ext_resolverAddressRecordsRelations,
651
+ ext_resolverRelations,
652
+ ext_resolverTextRecords,
653
+ ext_resolverTextRecordsRelations,
590
654
  fusesSet,
591
655
  fusesSetRelations,
592
656
  interfaceChanged,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ponder.schema.ts","../src/collate.ts"],"sourcesContent":["import { index, onchainTable, relations } from \"ponder\";\nimport type { Address } from \"viem\";\nimport { monkeypatchCollate } from \"./collate\";\n\n/**\n * Domain\n */\n\nexport const domain = onchainTable(\"domains\", (t) => ({\n // The namehash of the name\n id: t.hex().primaryKey(),\n // The human readable name, if known. Unknown portions replaced with hash in square brackets (eg, foo.[1234].eth)\n name: t.text(),\n // The human readable label name (imported from CSV), if known\n labelName: t.text(),\n // keccak256(labelName)\n labelhash: t.hex(),\n // The namehash (id) of the parent name\n parentId: t.hex(),\n\n // The number of subdomains\n subdomainCount: t.integer().notNull().default(0),\n\n // Address logged from current resolver, if any\n resolvedAddressId: t.hex(),\n\n // The resolver that controls the domain's settings\n resolverId: t.text(),\n\n // The time-to-live (TTL) value of the domain's records\n ttl: t.bigint(),\n\n // Indicates whether the domain has been migrated to a new registrar\n isMigrated: t.boolean().notNull().default(false),\n // The time when the domain was created\n createdAt: t.bigint().notNull(),\n\n // The account that owns the domain\n ownerId: t.hex().notNull(),\n // The account that owns the ERC721 NFT for the domain\n registrantId: t.hex(),\n // The account that owns the wrapped domain\n wrappedOwnerId: t.hex(),\n\n // The expiry date for the domain, from either the registration, or the wrapped domain if PCC is burned\n expiryDate: t.bigint(),\n}));\n\n// monkeypatch drizzle's column (necessary to match graph-node default collation \"C\")\n// https://github.com/drizzle-team/drizzle-orm/issues/638\nmonkeypatchCollate(domain.name, '\"C\"');\nmonkeypatchCollate(domain.labelName, '\"C\"');\n\nexport const domainRelations = relations(domain, ({ one, many }) => ({\n resolvedAddress: one(account, {\n fields: [domain.resolvedAddressId],\n references: [account.id],\n }),\n owner: one(account, { fields: [domain.ownerId], references: [account.id] }),\n parent: one(domain, { fields: [domain.parentId], references: [domain.id] }),\n resolver: one(resolver, {\n fields: [domain.resolverId],\n references: [resolver.id],\n }),\n subdomains: many(domain, { relationName: \"parent\" }),\n registrant: one(account, {\n fields: [domain.registrantId],\n references: [account.id],\n }),\n wrappedOwner: one(account, {\n fields: [domain.wrappedOwnerId],\n references: [account.id],\n }),\n wrappedDomain: one(wrappedDomain, {\n fields: [domain.id],\n references: [wrappedDomain.domainId],\n }),\n registration: one(registration, {\n fields: [domain.id],\n references: [registration.domainId],\n }),\n\n // event relations\n transfers: many(transfer),\n newOwners: many(newOwner),\n newResolvers: many(newResolver),\n newTTLs: many(newTTL),\n wrappedTransfers: many(wrappedTransfer),\n nameWrappeds: many(nameWrapped),\n nameUnwrappeds: many(nameUnwrapped),\n fusesSets: many(fusesSet),\n expiryExtendeds: many(expiryExtended),\n}));\n\n/**\n * Account\n */\n\nexport const account = onchainTable(\"accounts\", (t) => ({\n id: t.hex().primaryKey(),\n}));\n\nexport const accountRelations = relations(account, ({ many }) => ({\n domains: many(domain),\n wrappedDomains: many(wrappedDomain),\n registrations: many(registration),\n}));\n\n/**\n * Resolver\n */\n\nexport const resolver = onchainTable(\n \"resolvers\",\n (t) => ({\n // The unique identifier for this resolver, which is a concatenation of the domain namehash and the resolver address\n id: t.text().primaryKey(),\n // The domain that this resolver is associated with\n domainId: t.hex().notNull(),\n // The address of the resolver contract\n address: t.hex().notNull().$type<Address>(),\n\n // The current value of the 'addr' record for this resolver, as determined by the associated events\n addrId: t.hex(),\n // The content hash for this resolver, in binary format\n contentHash: t.text(),\n // The set of observed text record keys for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n texts: t.text().array(),\n // The set of observed SLIP-44 coin types for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n coinTypes: t.bigint().array(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const resolverRelations = relations(resolver, ({ one, many }) => ({\n addr: one(account, { fields: [resolver.addrId], references: [account.id] }),\n domain: one(domain, { fields: [resolver.domainId], references: [domain.id] }),\n\n // event relations\n addrChangeds: many(addrChanged),\n multicoinAddrChangeds: many(multicoinAddrChanged),\n nameChangeds: many(nameChanged),\n abiChangeds: many(abiChanged),\n pubkeyChangeds: many(pubkeyChanged),\n textChangeds: many(textChanged),\n contenthashChangeds: many(contenthashChanged),\n interfaceChangeds: many(interfaceChanged),\n authorisationChangeds: many(authorisationChanged),\n versionChangeds: many(versionChanged),\n}));\n\n/**\n * Registration\n */\n\nexport const registration = onchainTable(\n \"registrations\",\n (t) => ({\n // The unique identifier of the registration\n id: t.hex().primaryKey(),\n // The domain name associated with the registration\n domainId: t.hex().notNull(),\n // The registration date of the domain\n registrationDate: t.bigint().notNull(),\n // The expiry date of the domain\n expiryDate: t.bigint().notNull(),\n // The cost associated with the domain registration\n cost: t.bigint(),\n // The account that registered the domain\n registrantId: t.hex().notNull(),\n // The human-readable label name associated with the domain registration\n labelName: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const registrationRelations = relations(registration, ({ one, many }) => ({\n domain: one(domain, {\n fields: [registration.domainId],\n references: [domain.id],\n }),\n registrant: one(account, {\n fields: [registration.registrantId],\n references: [account.id],\n }),\n\n // event relations\n nameRegistereds: many(nameRegistered),\n nameReneweds: many(nameRenewed),\n nameTransferreds: many(nameTransferred),\n}));\n\n/**\n * Wrapped Domain\n */\n\nexport const wrappedDomain = onchainTable(\n \"wrapped_domains\",\n (t) => ({\n // The unique identifier for each instance of the WrappedDomain entity\n id: t.hex().primaryKey(),\n // The domain that is wrapped by this WrappedDomain\n domainId: t.hex().notNull(),\n // The expiry date of the wrapped domain\n expiryDate: t.bigint().notNull(),\n // The number of fuses remaining on the wrapped domain\n fuses: t.integer().notNull(),\n // The account that owns this WrappedDomain\n ownerId: t.hex().notNull(),\n // The name of the wrapped domain\n name: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const wrappedDomainRelations = relations(wrappedDomain, ({ one }) => ({\n domain: one(domain, {\n fields: [wrappedDomain.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [wrappedDomain.ownerId],\n references: [account.id],\n }),\n}));\n\n/**\n * Events\n */\n\nconst sharedEventColumns = (t: any) => ({\n id: t.text().primaryKey(),\n blockNumber: t.integer().notNull(),\n transactionID: t.hex().notNull(),\n});\n\nconst domainEvent = (t: any) => ({\n ...sharedEventColumns(t),\n domainId: t.hex().notNull(),\n});\n\nconst domainEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.domainId),\n // sorting index\n idx_compound: index().on(t.domainId, t.id),\n});\n\n// Domain Event Entities\n\nexport const transfer = onchainTable(\n \"transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newOwner = onchainTable(\n \"new_owners\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n parentDomainId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newResolver = onchainTable(\n \"new_resolvers\",\n (t) => ({\n ...domainEvent(t),\n resolverId: t.text().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newTTL = onchainTable(\n \"new_ttls\",\n (t) => ({\n ...domainEvent(t),\n ttl: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const wrappedTransfer = onchainTable(\n \"wrapped_transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const nameWrapped = onchainTable(\n \"name_wrapped\",\n (t) => ({\n ...domainEvent(t),\n name: t.text(),\n fuses: t.integer().notNull(),\n ownerId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const nameUnwrapped = onchainTable(\n \"name_unwrapped\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const fusesSet = onchainTable(\n \"fuses_set\",\n (t) => ({\n ...domainEvent(t),\n fuses: t.integer().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const expiryExtended = onchainTable(\n \"expiry_extended\",\n (t) => ({\n ...domainEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\n// Registration Event Entities\n\nconst registrationEvent = (t: any) => ({\n ...sharedEventColumns(t),\n registrationId: t.hex().notNull(),\n});\n\nconst registrationEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.registrationId),\n // sorting index\n idx_compound: index().on(t.registrationId, t.id),\n});\n\nexport const nameRegistered = onchainTable(\n \"name_registered\",\n (t) => ({\n ...registrationEvent(t),\n registrantId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const nameRenewed = onchainTable(\n \"name_renewed\",\n (t) => ({\n ...registrationEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const nameTransferred = onchainTable(\n \"name_transferred\",\n (t) => ({\n ...registrationEvent(t),\n newOwnerId: t.hex().notNull(),\n }),\n registrationEventIndex,\n);\n\n// Resolver Event Entities\n\nconst resolverEvent = (t: any) => ({\n ...sharedEventColumns(t),\n resolverId: t.text().notNull(),\n});\n\nconst resolverEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.resolverId),\n // sorting index\n idx_compound: index().on(t.resolverId, t.id),\n});\n\nexport const addrChanged = onchainTable(\n \"addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n addrId: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const multicoinAddrChanged = onchainTable(\n \"multicoin_addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n coinType: t.bigint().notNull(),\n addr: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const nameChanged = onchainTable(\n \"name_changed\",\n (t) => ({\n ...resolverEvent(t),\n name: t.text().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const abiChanged = onchainTable(\n \"abi_changed\",\n (t) => ({\n ...resolverEvent(t),\n contentType: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const pubkeyChanged = onchainTable(\n \"pubkey_changed\",\n (t) => ({\n ...resolverEvent(t),\n x: t.hex().notNull(),\n y: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const textChanged = onchainTable(\n \"text_changed\",\n (t) => ({\n ...resolverEvent(t),\n key: t.text().notNull(),\n value: t.text(),\n }),\n resolverEventIndex,\n);\n\nexport const contenthashChanged = onchainTable(\n \"contenthash_changed\",\n (t) => ({\n ...resolverEvent(t),\n hash: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const interfaceChanged = onchainTable(\n \"interface_changed\",\n (t) => ({\n ...resolverEvent(t),\n interfaceID: t.hex().notNull(),\n implementer: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const authorisationChanged = onchainTable(\n \"authorisation_changed\",\n (t) => ({\n ...resolverEvent(t),\n owner: t.hex().notNull(),\n target: t.hex().notNull(),\n isAuthorized: t.boolean().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const versionChanged = onchainTable(\n \"version_changed\",\n (t) => ({\n ...resolverEvent(t),\n version: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\n/**\n * Event Relations\n */\n\n// Domain Event Relations\n\nexport const transferRelations = relations(transfer, ({ one }) => ({\n domain: one(domain, { fields: [transfer.domainId], references: [domain.id] }),\n owner: one(account, { fields: [transfer.ownerId], references: [account.id] }),\n}));\n\nexport const newOwnerRelations = relations(newOwner, ({ one }) => ({\n domain: one(domain, { fields: [newOwner.domainId], references: [domain.id] }),\n owner: one(account, { fields: [newOwner.ownerId], references: [account.id] }),\n parentDomain: one(domain, {\n fields: [newOwner.parentDomainId],\n references: [domain.id],\n }),\n}));\n\nexport const newResolverRelations = relations(newResolver, ({ one }) => ({\n domain: one(domain, {\n fields: [newResolver.domainId],\n references: [domain.id],\n }),\n resolver: one(resolver, {\n fields: [newResolver.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const newTTLRelations = relations(newTTL, ({ one }) => ({\n domain: one(domain, { fields: [newTTL.domainId], references: [domain.id] }),\n}));\n\nexport const wrappedTransferRelations = relations(wrappedTransfer, ({ one }) => ({\n domain: one(domain, {\n fields: [wrappedTransfer.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [wrappedTransfer.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const nameWrappedRelations = relations(nameWrapped, ({ one }) => ({\n domain: one(domain, {\n fields: [nameWrapped.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [nameWrapped.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const nameUnwrappedRelations = relations(nameUnwrapped, ({ one }) => ({\n domain: one(domain, {\n fields: [nameUnwrapped.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [nameUnwrapped.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const fusesSetRelations = relations(fusesSet, ({ one }) => ({\n domain: one(domain, { fields: [fusesSet.domainId], references: [domain.id] }),\n}));\n\nexport const expiryExtendedRelations = relations(expiryExtended, ({ one }) => ({\n domain: one(domain, {\n fields: [expiryExtended.domainId],\n references: [domain.id],\n }),\n}));\n\n// Registration Event Relations\n\nexport const nameRegisteredRelations = relations(nameRegistered, ({ one }) => ({\n registration: one(registration, {\n fields: [nameRegistered.registrationId],\n references: [registration.id],\n }),\n registrant: one(account, {\n fields: [nameRegistered.registrantId],\n references: [account.id],\n }),\n}));\n\nexport const nameRenewedRelations = relations(nameRenewed, ({ one }) => ({\n registration: one(registration, {\n fields: [nameRenewed.registrationId],\n references: [registration.id],\n }),\n}));\n\nexport const nameTransferredRelations = relations(nameTransferred, ({ one }) => ({\n registration: one(registration, {\n fields: [nameTransferred.registrationId],\n references: [registration.id],\n }),\n newOwner: one(account, {\n fields: [nameTransferred.newOwnerId],\n references: [account.id],\n }),\n}));\n\n// Resolver Event Relations\n\nexport const addrChangedRelations = relations(addrChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [addrChanged.resolverId],\n references: [resolver.id],\n }),\n addr: one(account, {\n fields: [addrChanged.addrId],\n references: [account.id],\n }),\n}));\n\nexport const multicoinAddrChangedRelations = relations(multicoinAddrChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [multicoinAddrChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const nameChangedRelations = relations(nameChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [nameChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const abiChangedRelations = relations(abiChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [abiChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const pubkeyChangedRelations = relations(pubkeyChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [pubkeyChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const textChangedRelations = relations(textChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [textChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const contenthashChangedRelations = relations(contenthashChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [contenthashChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const interfaceChangedRelations = relations(interfaceChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [interfaceChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const authorisationChangedRelations = relations(authorisationChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [authorisationChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const versionChangedRelations = relations(versionChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [versionChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n","// https://github.com/drizzle-team/drizzle-orm/issues/638\nexport function monkeypatchCollate(col: any, collation: string) {\n col.getSQLType = function (this: any) {\n return Object.getPrototypeOf(this).getSQLType.call(this) + \" COLLATE \" + collation;\n };\n return col;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/subgraph.schema.ts","../src/collate.ts","../src/resolver-records.schema.ts"],"sourcesContent":["import { index, onchainTable, relations } from \"ponder\";\nimport type { Address } from \"viem\";\nimport { monkeypatchCollate } from \"./collate\";\n\n/**\n * Domain\n */\n\nexport const domain = onchainTable(\"domains\", (t) => ({\n // The namehash of the name\n id: t.hex().primaryKey(),\n // The human readable name, if known. Unknown portions replaced with hash in square brackets (eg, foo.[1234].eth)\n name: t.text(),\n // The human readable label name (imported from CSV), if known\n labelName: t.text(),\n // keccak256(labelName)\n labelhash: t.hex(),\n // The namehash (id) of the parent name\n parentId: t.hex(),\n\n // The number of subdomains\n subdomainCount: t.integer().notNull().default(0),\n\n // Address logged from current resolver, if any\n resolvedAddressId: t.hex(),\n\n // The resolver that controls the domain's settings\n resolverId: t.text(),\n\n // The time-to-live (TTL) value of the domain's records\n ttl: t.bigint(),\n\n // Indicates whether the domain has been migrated to a new registrar\n isMigrated: t.boolean().notNull().default(false),\n // The time when the domain was created\n createdAt: t.bigint().notNull(),\n\n // The account that owns the domain\n ownerId: t.hex().notNull(),\n // The account that owns the ERC721 NFT for the domain\n registrantId: t.hex(),\n // The account that owns the wrapped domain\n wrappedOwnerId: t.hex(),\n\n // The expiry date for the domain, from either the registration, or the wrapped domain if PCC is burned\n expiryDate: t.bigint(),\n}));\n\n// monkeypatch drizzle's column (necessary to match graph-node default collation \"C\")\n// https://github.com/drizzle-team/drizzle-orm/issues/638\nmonkeypatchCollate(domain.name, '\"C\"');\nmonkeypatchCollate(domain.labelName, '\"C\"');\n\nexport const domainRelations = relations(domain, ({ one, many }) => ({\n resolvedAddress: one(account, {\n fields: [domain.resolvedAddressId],\n references: [account.id],\n }),\n owner: one(account, { fields: [domain.ownerId], references: [account.id] }),\n parent: one(domain, { fields: [domain.parentId], references: [domain.id] }),\n resolver: one(resolver, {\n fields: [domain.resolverId],\n references: [resolver.id],\n }),\n subdomains: many(domain, { relationName: \"parent\" }),\n registrant: one(account, {\n fields: [domain.registrantId],\n references: [account.id],\n }),\n wrappedOwner: one(account, {\n fields: [domain.wrappedOwnerId],\n references: [account.id],\n }),\n wrappedDomain: one(wrappedDomain, {\n fields: [domain.id],\n references: [wrappedDomain.domainId],\n }),\n registration: one(registration, {\n fields: [domain.id],\n references: [registration.domainId],\n }),\n\n // event relations\n transfers: many(transfer),\n newOwners: many(newOwner),\n newResolvers: many(newResolver),\n newTTLs: many(newTTL),\n wrappedTransfers: many(wrappedTransfer),\n nameWrappeds: many(nameWrapped),\n nameUnwrappeds: many(nameUnwrapped),\n fusesSets: many(fusesSet),\n expiryExtendeds: many(expiryExtended),\n}));\n\n/**\n * Account\n */\n\nexport const account = onchainTable(\"accounts\", (t) => ({\n id: t.hex().primaryKey(),\n}));\n\nexport const accountRelations = relations(account, ({ many }) => ({\n domains: many(domain),\n wrappedDomains: many(wrappedDomain),\n registrations: many(registration),\n}));\n\n/**\n * Resolver\n */\n\nexport const resolver = onchainTable(\n \"resolvers\",\n (t) => ({\n // The unique identifier for this resolver, which is a concatenation of the domain namehash and the resolver address\n id: t.text().primaryKey(),\n // The domain that this resolver is associated with\n domainId: t.hex().notNull(),\n // The address of the resolver contract\n address: t.hex().notNull().$type<Address>(),\n\n // The current value of the 'addr' record for this resolver, as determined by the associated events\n addrId: t.hex(),\n // The content hash for this resolver, in binary format\n contentHash: t.text(),\n // The set of observed text record keys for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n texts: t.text().array(),\n // The set of observed SLIP-44 coin types for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n coinTypes: t.bigint().array(),\n\n // NOTE(resolver-records): include the value of the reverse-resolution name() record\n // https://docs.ens.domains/ensip/3\n name: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const resolverRelations = relations(resolver, ({ one, many }) => ({\n addr: one(account, { fields: [resolver.addrId], references: [account.id] }),\n domain: one(domain, { fields: [resolver.domainId], references: [domain.id] }),\n\n // event relations\n addrChangeds: many(addrChanged),\n multicoinAddrChangeds: many(multicoinAddrChanged),\n nameChangeds: many(nameChanged),\n abiChangeds: many(abiChanged),\n pubkeyChangeds: many(pubkeyChanged),\n textChangeds: many(textChanged),\n contenthashChangeds: many(contenthashChanged),\n interfaceChangeds: many(interfaceChanged),\n authorisationChangeds: many(authorisationChanged),\n versionChangeds: many(versionChanged),\n}));\n\n/**\n * Registration\n */\n\nexport const registration = onchainTable(\n \"registrations\",\n (t) => ({\n // The unique identifier of the registration\n id: t.hex().primaryKey(),\n // The domain name associated with the registration\n domainId: t.hex().notNull(),\n // The registration date of the domain\n registrationDate: t.bigint().notNull(),\n // The expiry date of the domain\n expiryDate: t.bigint().notNull(),\n // The cost associated with the domain registration\n cost: t.bigint(),\n // The account that registered the domain\n registrantId: t.hex().notNull(),\n // The human-readable label name associated with the domain registration\n labelName: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const registrationRelations = relations(registration, ({ one, many }) => ({\n domain: one(domain, {\n fields: [registration.domainId],\n references: [domain.id],\n }),\n registrant: one(account, {\n fields: [registration.registrantId],\n references: [account.id],\n }),\n\n // event relations\n nameRegistereds: many(nameRegistered),\n nameReneweds: many(nameRenewed),\n nameTransferreds: many(nameTransferred),\n}));\n\n/**\n * Wrapped Domain\n */\n\nexport const wrappedDomain = onchainTable(\n \"wrapped_domains\",\n (t) => ({\n // The unique identifier for each instance of the WrappedDomain entity\n id: t.hex().primaryKey(),\n // The domain that is wrapped by this WrappedDomain\n domainId: t.hex().notNull(),\n // The expiry date of the wrapped domain\n expiryDate: t.bigint().notNull(),\n // The number of fuses remaining on the wrapped domain\n fuses: t.integer().notNull(),\n // The account that owns this WrappedDomain\n ownerId: t.hex().notNull(),\n // The name of the wrapped domain\n name: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const wrappedDomainRelations = relations(wrappedDomain, ({ one }) => ({\n domain: one(domain, {\n fields: [wrappedDomain.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [wrappedDomain.ownerId],\n references: [account.id],\n }),\n}));\n\n/**\n * Events\n */\n\nconst sharedEventColumns = (t: any) => ({\n id: t.text().primaryKey(),\n blockNumber: t.integer().notNull(),\n transactionID: t.hex().notNull(),\n});\n\nconst domainEvent = (t: any) => ({\n ...sharedEventColumns(t),\n domainId: t.hex().notNull(),\n});\n\nconst domainEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.domainId),\n // sorting index\n idx_compound: index().on(t.domainId, t.id),\n});\n\n// Domain Event Entities\n\nexport const transfer = onchainTable(\n \"transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newOwner = onchainTable(\n \"new_owners\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n parentDomainId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newResolver = onchainTable(\n \"new_resolvers\",\n (t) => ({\n ...domainEvent(t),\n resolverId: t.text().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newTTL = onchainTable(\n \"new_ttls\",\n (t) => ({\n ...domainEvent(t),\n ttl: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const wrappedTransfer = onchainTable(\n \"wrapped_transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const nameWrapped = onchainTable(\n \"name_wrapped\",\n (t) => ({\n ...domainEvent(t),\n name: t.text(),\n fuses: t.integer().notNull(),\n ownerId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const nameUnwrapped = onchainTable(\n \"name_unwrapped\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const fusesSet = onchainTable(\n \"fuses_set\",\n (t) => ({\n ...domainEvent(t),\n fuses: t.integer().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const expiryExtended = onchainTable(\n \"expiry_extended\",\n (t) => ({\n ...domainEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\n// Registration Event Entities\n\nconst registrationEvent = (t: any) => ({\n ...sharedEventColumns(t),\n registrationId: t.hex().notNull(),\n});\n\nconst registrationEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.registrationId),\n // sorting index\n idx_compound: index().on(t.registrationId, t.id),\n});\n\nexport const nameRegistered = onchainTable(\n \"name_registered\",\n (t) => ({\n ...registrationEvent(t),\n registrantId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const nameRenewed = onchainTable(\n \"name_renewed\",\n (t) => ({\n ...registrationEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const nameTransferred = onchainTable(\n \"name_transferred\",\n (t) => ({\n ...registrationEvent(t),\n newOwnerId: t.hex().notNull(),\n }),\n registrationEventIndex,\n);\n\n// Resolver Event Entities\n\nconst resolverEvent = (t: any) => ({\n ...sharedEventColumns(t),\n resolverId: t.text().notNull(),\n});\n\nconst resolverEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.resolverId),\n // sorting index\n idx_compound: index().on(t.resolverId, t.id),\n});\n\nexport const addrChanged = onchainTable(\n \"addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n addrId: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const multicoinAddrChanged = onchainTable(\n \"multicoin_addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n coinType: t.bigint().notNull(),\n addr: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const nameChanged = onchainTable(\n \"name_changed\",\n (t) => ({\n ...resolverEvent(t),\n name: t.text().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const abiChanged = onchainTable(\n \"abi_changed\",\n (t) => ({\n ...resolverEvent(t),\n contentType: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const pubkeyChanged = onchainTable(\n \"pubkey_changed\",\n (t) => ({\n ...resolverEvent(t),\n x: t.hex().notNull(),\n y: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const textChanged = onchainTable(\n \"text_changed\",\n (t) => ({\n ...resolverEvent(t),\n key: t.text().notNull(),\n value: t.text(),\n }),\n resolverEventIndex,\n);\n\nexport const contenthashChanged = onchainTable(\n \"contenthash_changed\",\n (t) => ({\n ...resolverEvent(t),\n hash: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const interfaceChanged = onchainTable(\n \"interface_changed\",\n (t) => ({\n ...resolverEvent(t),\n interfaceID: t.hex().notNull(),\n implementer: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const authorisationChanged = onchainTable(\n \"authorisation_changed\",\n (t) => ({\n ...resolverEvent(t),\n owner: t.hex().notNull(),\n target: t.hex().notNull(),\n isAuthorized: t.boolean().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const versionChanged = onchainTable(\n \"version_changed\",\n (t) => ({\n ...resolverEvent(t),\n version: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\n/**\n * Event Relations\n */\n\n// Domain Event Relations\n\nexport const transferRelations = relations(transfer, ({ one }) => ({\n domain: one(domain, { fields: [transfer.domainId], references: [domain.id] }),\n owner: one(account, { fields: [transfer.ownerId], references: [account.id] }),\n}));\n\nexport const newOwnerRelations = relations(newOwner, ({ one }) => ({\n domain: one(domain, { fields: [newOwner.domainId], references: [domain.id] }),\n owner: one(account, { fields: [newOwner.ownerId], references: [account.id] }),\n parentDomain: one(domain, {\n fields: [newOwner.parentDomainId],\n references: [domain.id],\n }),\n}));\n\nexport const newResolverRelations = relations(newResolver, ({ one }) => ({\n domain: one(domain, {\n fields: [newResolver.domainId],\n references: [domain.id],\n }),\n resolver: one(resolver, {\n fields: [newResolver.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const newTTLRelations = relations(newTTL, ({ one }) => ({\n domain: one(domain, { fields: [newTTL.domainId], references: [domain.id] }),\n}));\n\nexport const wrappedTransferRelations = relations(wrappedTransfer, ({ one }) => ({\n domain: one(domain, {\n fields: [wrappedTransfer.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [wrappedTransfer.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const nameWrappedRelations = relations(nameWrapped, ({ one }) => ({\n domain: one(domain, {\n fields: [nameWrapped.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [nameWrapped.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const nameUnwrappedRelations = relations(nameUnwrapped, ({ one }) => ({\n domain: one(domain, {\n fields: [nameUnwrapped.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [nameUnwrapped.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const fusesSetRelations = relations(fusesSet, ({ one }) => ({\n domain: one(domain, { fields: [fusesSet.domainId], references: [domain.id] }),\n}));\n\nexport const expiryExtendedRelations = relations(expiryExtended, ({ one }) => ({\n domain: one(domain, {\n fields: [expiryExtended.domainId],\n references: [domain.id],\n }),\n}));\n\n// Registration Event Relations\n\nexport const nameRegisteredRelations = relations(nameRegistered, ({ one }) => ({\n registration: one(registration, {\n fields: [nameRegistered.registrationId],\n references: [registration.id],\n }),\n registrant: one(account, {\n fields: [nameRegistered.registrantId],\n references: [account.id],\n }),\n}));\n\nexport const nameRenewedRelations = relations(nameRenewed, ({ one }) => ({\n registration: one(registration, {\n fields: [nameRenewed.registrationId],\n references: [registration.id],\n }),\n}));\n\nexport const nameTransferredRelations = relations(nameTransferred, ({ one }) => ({\n registration: one(registration, {\n fields: [nameTransferred.registrationId],\n references: [registration.id],\n }),\n newOwner: one(account, {\n fields: [nameTransferred.newOwnerId],\n references: [account.id],\n }),\n}));\n\n// Resolver Event Relations\n\nexport const addrChangedRelations = relations(addrChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [addrChanged.resolverId],\n references: [resolver.id],\n }),\n addr: one(account, {\n fields: [addrChanged.addrId],\n references: [account.id],\n }),\n}));\n\nexport const multicoinAddrChangedRelations = relations(multicoinAddrChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [multicoinAddrChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const nameChangedRelations = relations(nameChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [nameChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const abiChangedRelations = relations(abiChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [abiChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const pubkeyChangedRelations = relations(pubkeyChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [pubkeyChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const textChangedRelations = relations(textChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [textChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const contenthashChangedRelations = relations(contenthashChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [contenthashChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const interfaceChangedRelations = relations(interfaceChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [interfaceChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const authorisationChangedRelations = relations(authorisationChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [authorisationChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const versionChangedRelations = relations(versionChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [versionChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n","// https://github.com/drizzle-team/drizzle-orm/issues/638\nexport function monkeypatchCollate(col: any, collation: string) {\n col.getSQLType = function (this: any) {\n return Object.getPrototypeOf(this).getSQLType.call(this) + \" COLLATE \" + collation;\n };\n return col;\n}\n","/**\n * Schema Definitions for optional tracking of additional Resolver record values\n *\n * Some background context: In the ENSv1 protocol, any number of Resolver contracts may exist on mainnet,\n * each of which can manage any number of records for any number of Nodes. That is, there is a\n * many-to-many relationship between Resolver contracts and Nodes: a Resolver manages records for\n * any number of Nodes and Nodes may have records managed by many Resolver contracts.\n *\n * During resolution, ENSIP-10 is followed to identify a single 'active' Resolver contract for a Node,\n * and it is only that Resolver that is queried in order to resolve the 'active' records for the given Node.\n *\n * A Resolver _contract_ in ENS represents the following:\n * Resolver Contract\n * - has many records for many Nodes\n * - has one `addr` record for a Node (see ENSIP-1)\n * - has one `name` record for a Node (see ENSIP-3)\n * - has one `abi` record for a Node (see ENSIP-4)\n * - has one `contenthash` record for a Node (see ENSIP-7)\n * - has one `pubkey` record for a Node (see PubkeyResolver.sol)\n * - has one `version` record for a Node (see IVersionableResolver.sol)\n * - has many address records for a Node (by coinType) (see ENSIP-9)\n * - has many text records for a Node (by key) (see ENSIP-5)\n * - has many interface records for a Node (by interfaceID) (see ENSIP-8)\n * - ...etc\n *\n * In the Subgraph schema, however, a Resolver _entity_ in the database does NOT represent a\n * Resolver _contract_: it represents the pairwise relationship between a Resolver contract and a\n * Node and is unique by ([chainId], Resolver contract address, Node). That is, it represents\n * \"a Node's relationship to an on-chain Resolver contract\".\n *\n * Naturally, this discrepancy may be confusing, but throughout this codebase a Resolver _entity_\n * refers to that _relationship_ between a Resolver and Node, _not_ the unique Resolver contract itself.\n *\n * The Subgraph describes the following datamodel instead:\n * Resolver (the Resolver-Node relationship)\n * - has one `addr` record for a Node\n * - has one `contenthash` record for a Node\n * - has one set of `coinTypes` storing the keys of all ENSIP-9 address records emitted for a Node\n * - NOTE(subgraph-compat): does _not_ track the implicit coinType of 60 for the `addr` record, if set\n * - has one set of `texts` storing the keys of all ENSIP-5 text records emitted for a Node\n *\n * In this file, we extend the subgraph's Resolver _entity_ with the following _additional_ records:\n * Resolver (the Resolver-Node relationship)\n * + has one `name` record for a Node (see ENSIP-3)\n * - see 'NOTE(resolver-records)' in subgraph.schema.ts\n * + has many `addressRecords` for a Node (by coinType) (see ENSIP-9)\n * - see ResolverAddressRecord below\n * - NOTE: _does_ represent the implicit coinType of 60 for the `addr` record, if set\n * + has many `textRecords` for a Node (by key) (see ENSIP-5)\n * - see ResolverTextRecord below\n *\n * Terminology Note:\n * - 'Subgraph Indexed Record Values' — `addr`, `contenthash`\n * - 'Additionally Indexed Record Values' — `name`, `addressRecords`, `textRecords`\n * - 'Active Resolver Record Values' — the actual record values retrieved by following the ENS protocol\n * specifications for forward resolutuon, including ENSIP-10 and CCIP-Read.\n *\n * NOTE: These additionally indexed record values still do NOT allow the caller to confidently resolve\n * records for names without following Forward Resolution according to the ENS protocol: a direct query\n * for the indexed values of a names's Resolver and retrieval of its values from the database is not\n * ENSIP-10 nor CCIP-Read compliant.\n */\n\nimport { index, onchainTable, relations } from \"ponder\";\nimport { resolver } from \"./subgraph.schema\";\n\n// add the additional `Resolver.records` relationship to subgraph's Resolver entity\nexport const ext_resolverRelations = relations(resolver, ({ one, many }) => ({\n // resolver has many address records\n addressRecords: many(ext_resolverAddressRecords),\n\n // resolver has many text records\n // NOTE: can't use `texts` because Resolver.texts is used by subgraph schema\n textRecords: many(ext_resolverTextRecords),\n}));\n\nexport const ext_resolverAddressRecords = onchainTable(\n \"ext_resolver_address_records\",\n (t) => ({\n // keyed by (resolverId, coinType)\n id: t.text().primaryKey(),\n resolverId: t.text().notNull(),\n coinType: t.bigint().notNull(),\n\n address: t.text().notNull(),\n }),\n (t) => ({\n byCoinType: index().on(t.id, t.coinType),\n }),\n);\n\nexport const ext_resolverAddressRecordsRelations = relations(\n ext_resolverAddressRecords,\n ({ one, many }) => ({\n // belongs to resolver\n resolver: one(resolver, {\n fields: [ext_resolverAddressRecords.resolverId],\n references: [resolver.id],\n }),\n }),\n);\n\nexport const ext_resolverTextRecords = onchainTable(\n \"ext_resolver_text_records\",\n (t) => ({\n // keyed by (resolverId, key)\n id: t.text().primaryKey(),\n resolverId: t.text().notNull(),\n key: t.text().notNull(),\n\n value: t.text().notNull(),\n }),\n (t) => ({\n byKey: index().on(t.id, t.key),\n }),\n);\n\nexport const ext_resolverTextRecordsRelations = relations(\n ext_resolverTextRecords,\n ({ one, many }) => ({\n // belongs to resolver\n resolver: one(resolver, {\n fields: [ext_resolverTextRecords.resolverId],\n references: [resolver.id],\n }),\n }),\n);\n"],"mappings":"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","names":["index","onchainTable","relations","relations","onchainTable","index"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ensnode/ensnode-schema",
3
- "version": "0.27.0",
3
+ "version": "0.28.0",
4
4
  "type": "module",
5
5
  "description": "The ponder schema for ENSNode",
6
6
  "license": "MIT",
@@ -33,7 +33,7 @@
33
33
  "@biomejs/biome": "^1.9.4",
34
34
  "tsup": "^8.3.6",
35
35
  "typescript": "^5.7.3",
36
- "@ensnode/shared-configs": "0.27.0"
36
+ "@ensnode/shared-configs": "0.28.0"
37
37
  },
38
38
  "scripts": {
39
39
  "prepublish": "tsup",