@talismn/on-chain-id 1.0.4 → 1.0.5

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.
package/README.md CHANGED
@@ -6,8 +6,4 @@
6
6
  [![npm-version](https://img.shields.io/npm/v/@talismn/on-chain-id?style=flat-square)](https://www.npmjs.com/package/@talismn/on-chain-id)
7
7
  [![npm-downloads](https://img.shields.io/npm/dw/@talismn/on-chain-id?style=flat-square)](https://www.npmjs.com/package/@talismn/on-chain-id)
8
8
 
9
- **@talismn/on-chain-id** is used to query on-chain identifiers for account addresses in Ethereum, and more upcoming providers.
10
-
11
- In the case of Ethereum, it is also possible to go the other way (i.e. use the ENS identifier to look up an account address).
12
-
13
- The ENS domain resolution is handled internally by `viem`, the purpose of `@talismn/on-chain-id` is just to colocate the Ethereum and upcoming providers lookups into one API.
9
+ **@talismn/on-chain-id** looks up on-chain names for account addresses, and resolves names to addresses. Only ENS (Ethereum) is live; the resolution is done by `viem`. The AZNS (azero.id) functions are deprecated stubs that return null.
package/dist/index.d.mts CHANGED
@@ -80,8 +80,8 @@ export declare class OnChainId {
80
80
  /** @deprecated */
81
81
  resolveAznsNames: (...args: DropFirst<Parameters<typeof resolveAznsNames>>) => Promise<ResolvedNames>;
82
82
  lookupAddresses: (...args: DropFirst<Parameters<typeof lookupAddresses>>) => Promise<OnChainIds>;
83
- /** @deprecated */
84
83
  lookupEnsAddresses: (...args: DropFirst<Parameters<typeof lookupEnsAddresses>>) => Promise<OnChainIds>;
84
+ /** @deprecated */
85
85
  lookupAznsAddresses: (...args: DropFirst<Parameters<typeof lookupAznsAddresses>>) => Promise<OnChainIds>;
86
86
  }
87
87
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/util/types.ts","../src/util/addressesToNames.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/util/isPotentialEns.ts","../src/index.ts"],"mappings":";;KAMY;EACV,YAAY;EACZ,MAAM;EACN,SAAS;;;KAIC,aAAa;;KAGb,gBAAgB,qBAAqB;;KAGrC;;;;KAKA;EACV,iBAAiB;;EAEjB;;EAGA;;EAEA;;EAEA;;KAGU;KAIA,iBAAiB,KAAK,QAAQ,wBACxC,QAAQ,KAAK,QAAQ;;;;;;;KAQX,UAAU,uBAAuB,6BAA6B,KAAK;;;;;;;cCzClE,kBAAe,QAAkB,QAAM,wBAAwB,QAAQ;;;;;cAoBvE,sBAAmB,SACrB,QAAM,wBAEd,QAAQ;;;;cASE,qBAAkB,QACrB,QAAM,wBAEb,QAAQ;;;cCtCE,eAAY,QAAkB,QAAM,oBAAoB,QAAQ;;;;;cAwBhE,mBAAgB,SAAa,QAAM,oBAAoB,QAAQ;;;;cAS/D,kBAAe,QAAkB,QAAM,oBAAoB,QAAQ;;;;qBCtCnE,kBAAe;;;;qBCAf,iBAAc;;;qBCYd;;EAGX,YAAY,QAAQ;EAOpB,kBAAY,MAAa,UAAU,kBAAkB,mBAAc,QAA1C;EAEzB,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;;EAG5B,sBAAgB,MAAa,UAAU,kBAAkB,uBAAkB,QAA9C;EAG7B,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;;EAG5B,wBAAkB,MAAa,UAAU,kBAAkB,yBAAoB,QAAhD;EAE/B,yBAAmB,MAAa,UAAU,kBAAkB,0BAAqB,QAAjD"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/util/types.ts","../src/util/addressesToNames.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/util/isPotentialEns.ts","../src/index.ts"],"mappings":";;KAMY;EACV,YAAY;EACZ,MAAM;EACN,SAAS;;;KAIC,aAAa;;KAGb,gBAAgB,qBAAqB;;KAGrC;;;;KAKA;EACV,iBAAiB;;EAEjB;;EAGA;;EAEA;;EAEA;;KAGU;KAIA,iBAAiB,KAAK,QAAQ,wBACxC,QAAQ,KAAK,QAAQ;;;;;;;KAQX,UAAU,uBAAuB,6BAA6B,KAAK;;;;;;;cCzClE,kBAAe,QAAkB,QAAM,wBAAwB,QAAQ;;;;;cAoBvE,sBAAmB,SACrB,QAAM,wBAEd,QAAQ;;;;cASE,qBAAkB,QACrB,QAAM,wBAEb,QAAQ;;;cCtCE,eAAY,QAAkB,QAAM,oBAAoB,QAAQ;;;;;cAwBhE,mBAAgB,SAAa,QAAM,oBAAoB,QAAQ;;;;cAS/D,kBAAe,QAAkB,QAAM,oBAAoB,QAAQ;;;;qBCtCnE,kBAAe;;;;qBCAf,iBAAc;;;qBCYd;;EAGX,YAAY,QAAQ;EAOpB,kBAAY,MAAa,UAAU,kBAAkB,mBAAc,QAA1C;EAEzB,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;;EAG5B,sBAAgB,MAAa,UAAU,kBAAkB,uBAAkB,QAA9C;EAG7B,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;EAE5B,wBAAkB,MAAa,UAAU,kBAAkB,yBAAoB,QAAhD;;EAG/B,yBAAmB,MAAa,UAAU,kBAAkB,0BAAqB,QAAjD"}
package/dist/index.d.ts CHANGED
@@ -80,8 +80,8 @@ export declare class OnChainId {
80
80
  /** @deprecated */
81
81
  resolveAznsNames: (...args: DropFirst<Parameters<typeof resolveAznsNames>>) => Promise<ResolvedNames>;
82
82
  lookupAddresses: (...args: DropFirst<Parameters<typeof lookupAddresses>>) => Promise<OnChainIds>;
83
- /** @deprecated */
84
83
  lookupEnsAddresses: (...args: DropFirst<Parameters<typeof lookupEnsAddresses>>) => Promise<OnChainIds>;
84
+ /** @deprecated */
85
85
  lookupAznsAddresses: (...args: DropFirst<Parameters<typeof lookupAznsAddresses>>) => Promise<OnChainIds>;
86
86
  }
87
87
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/util/types.ts","../src/util/addressesToNames.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/util/isPotentialEns.ts","../src/index.ts"],"mappings":";;KAMY;EACV,YAAY;EACZ,MAAM;EACN,SAAS;;;KAIC,aAAa;;KAGb,gBAAgB,qBAAqB;;KAGrC;;;;KAKA;EACV,iBAAiB;;EAEjB;;EAGA;;EAEA;;EAEA;;KAGU;KAIA,iBAAiB,KAAK,QAAQ,wBACxC,QAAQ,KAAK,QAAQ;;;;;;;KAQX,UAAU,uBAAuB,6BAA6B,KAAK;;;;;;;cCzClE,kBAAe,QAAkB,QAAM,wBAAwB,QAAQ;;;;;cAoBvE,sBAAmB,SACrB,QAAM,wBAEd,QAAQ;;;;cASE,qBAAkB,QACrB,QAAM,wBAEb,QAAQ;;;cCtCE,eAAY,QAAkB,QAAM,oBAAoB,QAAQ;;;;;cAwBhE,mBAAgB,SAAa,QAAM,oBAAoB,QAAQ;;;;cAS/D,kBAAe,QAAkB,QAAM,oBAAoB,QAAQ;;;;qBCtCnE,kBAAe;;;;qBCAf,iBAAc;;;qBCYd;;EAGX,YAAY,QAAQ;EAOpB,kBAAY,MAAa,UAAU,kBAAkB,mBAAc,QAA1C;EAEzB,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;;EAG5B,sBAAgB,MAAa,UAAU,kBAAkB,uBAAkB,QAA9C;EAG7B,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;;EAG5B,wBAAkB,MAAa,UAAU,kBAAkB,yBAAoB,QAAhD;EAE/B,yBAAmB,MAAa,UAAU,kBAAkB,0BAAqB,QAAjD"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/util/types.ts","../src/util/addressesToNames.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/util/isPotentialEns.ts","../src/index.ts"],"mappings":";;KAMY;EACV,YAAY;EACZ,MAAM;EACN,SAAS;;;KAIC,aAAa;;KAGb,gBAAgB,qBAAqB;;KAGrC;;;;KAKA;EACV,iBAAiB;;EAEjB;;EAGA;;EAEA;;EAEA;;KAGU;KAIA,iBAAiB,KAAK,QAAQ,wBACxC,QAAQ,KAAK,QAAQ;;;;;;;KAQX,UAAU,uBAAuB,6BAA6B,KAAK;;;;;;;cCzClE,kBAAe,QAAkB,QAAM,wBAAwB,QAAQ;;;;;cAoBvE,sBAAmB,SACrB,QAAM,wBAEd,QAAQ;;;;cASE,qBAAkB,QACrB,QAAM,wBAEb,QAAQ;;;cCtCE,eAAY,QAAkB,QAAM,oBAAoB,QAAQ;;;;;cAwBhE,mBAAgB,SAAa,QAAM,oBAAoB,QAAQ;;;;cAS/D,kBAAe,QAAkB,QAAM,oBAAoB,QAAQ;;;;qBCtCnE,kBAAe;;;;qBCAf,iBAAc;;;qBCYd;;EAGX,YAAY,QAAQ;EAOpB,kBAAY,MAAa,UAAU,kBAAkB,mBAAc,QAA1C;EAEzB,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;;EAG5B,sBAAgB,MAAa,UAAU,kBAAkB,uBAAkB,QAA9C;EAG7B,qBAAe,MAAa,UAAU,kBAAkB,sBAAiB,QAA7C;EAE5B,wBAAkB,MAAa,UAAU,kBAAkB,yBAAoB,QAAhD;;EAG/B,yBAAmB,MAAa,UAAU,kBAAkB,0BAAqB,QAAjD"}
package/dist/index.js CHANGED
@@ -137,8 +137,8 @@ var OnChainId = class {
137
137
  /** @deprecated */
138
138
  resolveAznsNames = (...args) => resolveAznsNames(this.#config, ...args);
139
139
  lookupAddresses = (...args) => lookupAddresses(this.#config, ...args);
140
- /** @deprecated */
141
140
  lookupEnsAddresses = (...args) => lookupEnsAddresses(this.#config, ...args);
141
+ /** @deprecated */
142
142
  lookupAznsAddresses = (...args) => lookupAznsAddresses(this.#config, ...args);
143
143
  };
144
144
  //#endregion
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["packageJson.name","isEthereumAddress","log","throwAfter","log"],"sources":["../package.json","../src/log.ts","../src/util/addressesToNames.ts","../src/util/isPotentialEns.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/index.ts"],"sourcesContent":["","import anylogger from \"anylogger\"\n\nimport packageJson from \"../package.json\"\n\nexport default anylogger(packageJson.name)\n","import { isEthereumAddress } from \"@talismn/crypto\"\n\nimport log from \"../log\"\nimport type { Config, OnChainIds } from \"./types\"\n\n/**\n * Looks up the on-chain identifiers for some addresses.\n * Supports ENS.\n */\nexport const lookupAddresses = async (config: Config, addresses: string[]): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const [ensDomains] = await Promise.all([\n lookupEnsAddresses(config, addresses),\n // add more providers here\n ])\n\n ensDomains.forEach((domain, address) => {\n if (!domain) return\n onChainIds.set(address, domain)\n })\n\n return onChainIds\n}\n\n/**\n * Looks up the on-chain AZNS domains for some addresses.\n * @deprecated\n */\nexport const lookupAznsAddresses = async (\n _config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n return new Promise<OnChainIds>((resolve) =>\n resolve(new Map(addresses.map((address) => [address, null])))\n )\n}\n\n/**\n * Looks up the on-chain ENS domains for some addresses.\n */\nexport const lookupEnsAddresses = async (\n config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::lookupEnsAddresses`)\n return onChainIds\n }\n\n const results = await Promise.allSettled(\n addresses.map(async (address) => {\n // no need to do ENS lookup for polkadot addresses\n if (!isEthereumAddress(address)) return\n\n try {\n const domain = await client.getEnsName({ address })\n domain !== null && onChainIds.set(address, domain)\n } catch (cause) {\n const errorMessage = (cause as { shortMessage?: string })?.shortMessage ?? String(cause)\n throw new Error(`Failed to resolve ENS domain for address '${address}': ${errorMessage}`)\n }\n })\n )\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason.message))\n\n return onChainIds\n}\n","/** dot separated string e.g. `ens.eth` or `hello.lol` */\nexport const isPotentialEns = (name?: string) => typeof name === \"string\" && /^.+\\..+$/.test(name)\n","import { throwAfter } from \"@talismn/util\"\n\nimport log from \"../log\"\nimport { isPotentialEns } from \"./isPotentialEns\"\nimport type { Config, ResolvedNames } from \"./types\"\n\nexport const resolveNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n const [ensNames] = await Promise.all([\n resolveEnsNames(config, names),\n // add more providers here\n ])\n\n ensNames.forEach((lookup, name) => {\n if (!lookup) return\n\n const [address, lookupType] = lookup\n if (!address) return\n\n resolvedNames.set(name, [address, lookupType])\n })\n\n return resolvedNames\n}\n\n/**\n * Looks up the addresses for some azns (azero.id) domains.\n * @deprecated\n */\nexport const resolveAznsNames = (_config: Config, names: string[]): Promise<ResolvedNames> => {\n return new Promise<ResolvedNames>((resolve) =>\n resolve(new Map(names.map((name) => [name, null])))\n )\n}\n\n/**\n * Looks up the addresses for some ens (ens.domains) domains.\n */\nexport const resolveEnsNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n if (names.every((name) => !isPotentialEns(name))) return resolvedNames\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::resolveNames`)\n return resolvedNames\n }\n\n const results = await Promise.allSettled(\n names.map(async (name) => {\n if (!isPotentialEns(name)) return\n\n try {\n const address = await Promise.race([\n // this hangs forever in some cases (ex: try agyle.e first, then agyle.et => hangs) - couldn't explain it\n client.getEnsAddress({ name }),\n throwAfter(10_000, \"Timeout\"),\n ])\n address !== null && resolvedNames.set(name, [address, \"ens\"])\n } catch (cause) {\n throw new Error(`Failed to resolve address for ens domain '${name}'`, { cause })\n }\n })\n )\n\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason))\n\n return resolvedNames\n}\n","/** @deprecated */\nexport const isPotentialAzns = (_name?: string) => false\n","import { lookupAddresses, lookupAznsAddresses, lookupEnsAddresses } from \"./util/addressesToNames\"\nimport { resolveAznsNames, resolveEnsNames, resolveNames } from \"./util/namesToAddresses\"\nimport type { Config, DropFirst, OptionalConfig } from \"./util/types\"\n\nexport * from \"./util/isPotentialAzns\"\nexport * from \"./util/isPotentialEns\"\nexport type {\n Config as OnChainIdConfig,\n NsLookupType,\n OnChainIds,\n ResolvedNames,\n} from \"./util/types\"\n\nexport class OnChainId {\n #config: Config\n\n constructor(config: OptionalConfig) {\n this.#config = {\n ...config,\n networkIdEthereum: config.networkIdEthereum ?? \"1\",\n }\n }\n\n resolveNames = (...args: DropFirst<Parameters<typeof resolveNames>>) =>\n resolveNames(this.#config, ...args)\n resolveEnsNames = (...args: DropFirst<Parameters<typeof resolveEnsNames>>) =>\n resolveEnsNames(this.#config, ...args)\n /** @deprecated */\n resolveAznsNames = (...args: DropFirst<Parameters<typeof resolveAznsNames>>) =>\n resolveAznsNames(this.#config, ...args)\n\n lookupAddresses = (...args: DropFirst<Parameters<typeof lookupAddresses>>) =>\n lookupAddresses(this.#config, ...args)\n /** @deprecated */\n lookupEnsAddresses = (...args: DropFirst<Parameters<typeof lookupEnsAddresses>>) =>\n lookupEnsAddresses(this.#config, ...args)\n lookupAznsAddresses = (...args: DropFirst<Parameters<typeof lookupAznsAddresses>>) =>\n lookupAznsAddresses(this.#config, ...args)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["packageJson.name","isEthereumAddress","log","throwAfter","log"],"sources":["../package.json","../src/log.ts","../src/util/addressesToNames.ts","../src/util/isPotentialEns.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/index.ts"],"sourcesContent":["","import anylogger from \"anylogger\"\n\nimport packageJson from \"../package.json\"\n\nexport default anylogger(packageJson.name)\n","import { isEthereumAddress } from \"@talismn/crypto\"\n\nimport log from \"../log\"\nimport type { Config, OnChainIds } from \"./types\"\n\n/**\n * Looks up the on-chain identifiers for some addresses.\n * Supports ENS.\n */\nexport const lookupAddresses = async (config: Config, addresses: string[]): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const [ensDomains] = await Promise.all([\n lookupEnsAddresses(config, addresses),\n // add more providers here\n ])\n\n ensDomains.forEach((domain, address) => {\n if (!domain) return\n onChainIds.set(address, domain)\n })\n\n return onChainIds\n}\n\n/**\n * Looks up the on-chain AZNS domains for some addresses.\n * @deprecated\n */\nexport const lookupAznsAddresses = async (\n _config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n return new Promise<OnChainIds>((resolve) =>\n resolve(new Map(addresses.map((address) => [address, null])))\n )\n}\n\n/**\n * Looks up the on-chain ENS domains for some addresses.\n */\nexport const lookupEnsAddresses = async (\n config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::lookupEnsAddresses`)\n return onChainIds\n }\n\n const results = await Promise.allSettled(\n addresses.map(async (address) => {\n // no need to do ENS lookup for polkadot addresses\n if (!isEthereumAddress(address)) return\n\n try {\n const domain = await client.getEnsName({ address })\n domain !== null && onChainIds.set(address, domain)\n } catch (cause) {\n const errorMessage = (cause as { shortMessage?: string })?.shortMessage ?? String(cause)\n throw new Error(`Failed to resolve ENS domain for address '${address}': ${errorMessage}`)\n }\n })\n )\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason.message))\n\n return onChainIds\n}\n","/** dot separated string e.g. `ens.eth` or `hello.lol` */\nexport const isPotentialEns = (name?: string) => typeof name === \"string\" && /^.+\\..+$/.test(name)\n","import { throwAfter } from \"@talismn/util\"\n\nimport log from \"../log\"\nimport { isPotentialEns } from \"./isPotentialEns\"\nimport type { Config, ResolvedNames } from \"./types\"\n\nexport const resolveNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n const [ensNames] = await Promise.all([\n resolveEnsNames(config, names),\n // add more providers here\n ])\n\n ensNames.forEach((lookup, name) => {\n if (!lookup) return\n\n const [address, lookupType] = lookup\n if (!address) return\n\n resolvedNames.set(name, [address, lookupType])\n })\n\n return resolvedNames\n}\n\n/**\n * Looks up the addresses for some azns (azero.id) domains.\n * @deprecated\n */\nexport const resolveAznsNames = (_config: Config, names: string[]): Promise<ResolvedNames> => {\n return new Promise<ResolvedNames>((resolve) =>\n resolve(new Map(names.map((name) => [name, null])))\n )\n}\n\n/**\n * Looks up the addresses for some ens (ens.domains) domains.\n */\nexport const resolveEnsNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n if (names.every((name) => !isPotentialEns(name))) return resolvedNames\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::resolveNames`)\n return resolvedNames\n }\n\n const results = await Promise.allSettled(\n names.map(async (name) => {\n if (!isPotentialEns(name)) return\n\n try {\n const address = await Promise.race([\n // this hangs forever in some cases (ex: try agyle.e first, then agyle.et => hangs) - couldn't explain it\n client.getEnsAddress({ name }),\n throwAfter(10_000, \"Timeout\"),\n ])\n address !== null && resolvedNames.set(name, [address, \"ens\"])\n } catch (cause) {\n throw new Error(`Failed to resolve address for ens domain '${name}'`, { cause })\n }\n })\n )\n\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason))\n\n return resolvedNames\n}\n","/** @deprecated */\nexport const isPotentialAzns = (_name?: string) => false\n","import { lookupAddresses, lookupAznsAddresses, lookupEnsAddresses } from \"./util/addressesToNames\"\nimport { resolveAznsNames, resolveEnsNames, resolveNames } from \"./util/namesToAddresses\"\nimport type { Config, DropFirst, OptionalConfig } from \"./util/types\"\n\nexport * from \"./util/isPotentialAzns\"\nexport * from \"./util/isPotentialEns\"\nexport type {\n Config as OnChainIdConfig,\n NsLookupType,\n OnChainIds,\n ResolvedNames,\n} from \"./util/types\"\n\nexport class OnChainId {\n #config: Config\n\n constructor(config: OptionalConfig) {\n this.#config = {\n ...config,\n networkIdEthereum: config.networkIdEthereum ?? \"1\",\n }\n }\n\n resolveNames = (...args: DropFirst<Parameters<typeof resolveNames>>) =>\n resolveNames(this.#config, ...args)\n resolveEnsNames = (...args: DropFirst<Parameters<typeof resolveEnsNames>>) =>\n resolveEnsNames(this.#config, ...args)\n /** @deprecated */\n resolveAznsNames = (...args: DropFirst<Parameters<typeof resolveAznsNames>>) =>\n resolveAznsNames(this.#config, ...args)\n\n lookupAddresses = (...args: DropFirst<Parameters<typeof lookupAddresses>>) =>\n lookupAddresses(this.#config, ...args)\n lookupEnsAddresses = (...args: DropFirst<Parameters<typeof lookupEnsAddresses>>) =>\n lookupEnsAddresses(this.#config, ...args)\n /** @deprecated */\n lookupAznsAddresses = (...args: DropFirst<Parameters<typeof lookupAznsAddresses>>) =>\n lookupAznsAddresses(this.#config, ...args)\n}\n"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -113,8 +113,8 @@ var OnChainId = class {
113
113
  /** @deprecated */
114
114
  resolveAznsNames = (...args) => resolveAznsNames(this.#config, ...args);
115
115
  lookupAddresses = (...args) => lookupAddresses(this.#config, ...args);
116
- /** @deprecated */
117
116
  lookupEnsAddresses = (...args) => lookupEnsAddresses(this.#config, ...args);
117
+ /** @deprecated */
118
118
  lookupAznsAddresses = (...args) => lookupAznsAddresses(this.#config, ...args);
119
119
  };
120
120
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["packageJson.name","log","log"],"sources":["../package.json","../src/log.ts","../src/util/addressesToNames.ts","../src/util/isPotentialEns.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/index.ts"],"sourcesContent":["","import anylogger from \"anylogger\"\n\nimport packageJson from \"../package.json\"\n\nexport default anylogger(packageJson.name)\n","import { isEthereumAddress } from \"@talismn/crypto\"\n\nimport log from \"../log\"\nimport type { Config, OnChainIds } from \"./types\"\n\n/**\n * Looks up the on-chain identifiers for some addresses.\n * Supports ENS.\n */\nexport const lookupAddresses = async (config: Config, addresses: string[]): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const [ensDomains] = await Promise.all([\n lookupEnsAddresses(config, addresses),\n // add more providers here\n ])\n\n ensDomains.forEach((domain, address) => {\n if (!domain) return\n onChainIds.set(address, domain)\n })\n\n return onChainIds\n}\n\n/**\n * Looks up the on-chain AZNS domains for some addresses.\n * @deprecated\n */\nexport const lookupAznsAddresses = async (\n _config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n return new Promise<OnChainIds>((resolve) =>\n resolve(new Map(addresses.map((address) => [address, null])))\n )\n}\n\n/**\n * Looks up the on-chain ENS domains for some addresses.\n */\nexport const lookupEnsAddresses = async (\n config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::lookupEnsAddresses`)\n return onChainIds\n }\n\n const results = await Promise.allSettled(\n addresses.map(async (address) => {\n // no need to do ENS lookup for polkadot addresses\n if (!isEthereumAddress(address)) return\n\n try {\n const domain = await client.getEnsName({ address })\n domain !== null && onChainIds.set(address, domain)\n } catch (cause) {\n const errorMessage = (cause as { shortMessage?: string })?.shortMessage ?? String(cause)\n throw new Error(`Failed to resolve ENS domain for address '${address}': ${errorMessage}`)\n }\n })\n )\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason.message))\n\n return onChainIds\n}\n","/** dot separated string e.g. `ens.eth` or `hello.lol` */\nexport const isPotentialEns = (name?: string) => typeof name === \"string\" && /^.+\\..+$/.test(name)\n","import { throwAfter } from \"@talismn/util\"\n\nimport log from \"../log\"\nimport { isPotentialEns } from \"./isPotentialEns\"\nimport type { Config, ResolvedNames } from \"./types\"\n\nexport const resolveNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n const [ensNames] = await Promise.all([\n resolveEnsNames(config, names),\n // add more providers here\n ])\n\n ensNames.forEach((lookup, name) => {\n if (!lookup) return\n\n const [address, lookupType] = lookup\n if (!address) return\n\n resolvedNames.set(name, [address, lookupType])\n })\n\n return resolvedNames\n}\n\n/**\n * Looks up the addresses for some azns (azero.id) domains.\n * @deprecated\n */\nexport const resolveAznsNames = (_config: Config, names: string[]): Promise<ResolvedNames> => {\n return new Promise<ResolvedNames>((resolve) =>\n resolve(new Map(names.map((name) => [name, null])))\n )\n}\n\n/**\n * Looks up the addresses for some ens (ens.domains) domains.\n */\nexport const resolveEnsNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n if (names.every((name) => !isPotentialEns(name))) return resolvedNames\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::resolveNames`)\n return resolvedNames\n }\n\n const results = await Promise.allSettled(\n names.map(async (name) => {\n if (!isPotentialEns(name)) return\n\n try {\n const address = await Promise.race([\n // this hangs forever in some cases (ex: try agyle.e first, then agyle.et => hangs) - couldn't explain it\n client.getEnsAddress({ name }),\n throwAfter(10_000, \"Timeout\"),\n ])\n address !== null && resolvedNames.set(name, [address, \"ens\"])\n } catch (cause) {\n throw new Error(`Failed to resolve address for ens domain '${name}'`, { cause })\n }\n })\n )\n\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason))\n\n return resolvedNames\n}\n","/** @deprecated */\nexport const isPotentialAzns = (_name?: string) => false\n","import { lookupAddresses, lookupAznsAddresses, lookupEnsAddresses } from \"./util/addressesToNames\"\nimport { resolveAznsNames, resolveEnsNames, resolveNames } from \"./util/namesToAddresses\"\nimport type { Config, DropFirst, OptionalConfig } from \"./util/types\"\n\nexport * from \"./util/isPotentialAzns\"\nexport * from \"./util/isPotentialEns\"\nexport type {\n Config as OnChainIdConfig,\n NsLookupType,\n OnChainIds,\n ResolvedNames,\n} from \"./util/types\"\n\nexport class OnChainId {\n #config: Config\n\n constructor(config: OptionalConfig) {\n this.#config = {\n ...config,\n networkIdEthereum: config.networkIdEthereum ?? \"1\",\n }\n }\n\n resolveNames = (...args: DropFirst<Parameters<typeof resolveNames>>) =>\n resolveNames(this.#config, ...args)\n resolveEnsNames = (...args: DropFirst<Parameters<typeof resolveEnsNames>>) =>\n resolveEnsNames(this.#config, ...args)\n /** @deprecated */\n resolveAznsNames = (...args: DropFirst<Parameters<typeof resolveAznsNames>>) =>\n resolveAznsNames(this.#config, ...args)\n\n lookupAddresses = (...args: DropFirst<Parameters<typeof lookupAddresses>>) =>\n lookupAddresses(this.#config, ...args)\n /** @deprecated */\n lookupEnsAddresses = (...args: DropFirst<Parameters<typeof lookupEnsAddresses>>) =>\n lookupEnsAddresses(this.#config, ...args)\n lookupAznsAddresses = (...args: DropFirst<Parameters<typeof lookupAznsAddresses>>) =>\n lookupAznsAddresses(this.#config, ...args)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["packageJson.name","log","log"],"sources":["../package.json","../src/log.ts","../src/util/addressesToNames.ts","../src/util/isPotentialEns.ts","../src/util/namesToAddresses.ts","../src/util/isPotentialAzns.ts","../src/index.ts"],"sourcesContent":["","import anylogger from \"anylogger\"\n\nimport packageJson from \"../package.json\"\n\nexport default anylogger(packageJson.name)\n","import { isEthereumAddress } from \"@talismn/crypto\"\n\nimport log from \"../log\"\nimport type { Config, OnChainIds } from \"./types\"\n\n/**\n * Looks up the on-chain identifiers for some addresses.\n * Supports ENS.\n */\nexport const lookupAddresses = async (config: Config, addresses: string[]): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const [ensDomains] = await Promise.all([\n lookupEnsAddresses(config, addresses),\n // add more providers here\n ])\n\n ensDomains.forEach((domain, address) => {\n if (!domain) return\n onChainIds.set(address, domain)\n })\n\n return onChainIds\n}\n\n/**\n * Looks up the on-chain AZNS domains for some addresses.\n * @deprecated\n */\nexport const lookupAznsAddresses = async (\n _config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n return new Promise<OnChainIds>((resolve) =>\n resolve(new Map(addresses.map((address) => [address, null])))\n )\n}\n\n/**\n * Looks up the on-chain ENS domains for some addresses.\n */\nexport const lookupEnsAddresses = async (\n config: Config,\n addresses: string[]\n): Promise<OnChainIds> => {\n const onChainIds: OnChainIds = new Map(addresses.map((address) => [address, null]))\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::lookupEnsAddresses`)\n return onChainIds\n }\n\n const results = await Promise.allSettled(\n addresses.map(async (address) => {\n // no need to do ENS lookup for polkadot addresses\n if (!isEthereumAddress(address)) return\n\n try {\n const domain = await client.getEnsName({ address })\n domain !== null && onChainIds.set(address, domain)\n } catch (cause) {\n const errorMessage = (cause as { shortMessage?: string })?.shortMessage ?? String(cause)\n throw new Error(`Failed to resolve ENS domain for address '${address}': ${errorMessage}`)\n }\n })\n )\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason.message))\n\n return onChainIds\n}\n","/** dot separated string e.g. `ens.eth` or `hello.lol` */\nexport const isPotentialEns = (name?: string) => typeof name === \"string\" && /^.+\\..+$/.test(name)\n","import { throwAfter } from \"@talismn/util\"\n\nimport log from \"../log\"\nimport { isPotentialEns } from \"./isPotentialEns\"\nimport type { Config, ResolvedNames } from \"./types\"\n\nexport const resolveNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n const [ensNames] = await Promise.all([\n resolveEnsNames(config, names),\n // add more providers here\n ])\n\n ensNames.forEach((lookup, name) => {\n if (!lookup) return\n\n const [address, lookupType] = lookup\n if (!address) return\n\n resolvedNames.set(name, [address, lookupType])\n })\n\n return resolvedNames\n}\n\n/**\n * Looks up the addresses for some azns (azero.id) domains.\n * @deprecated\n */\nexport const resolveAznsNames = (_config: Config, names: string[]): Promise<ResolvedNames> => {\n return new Promise<ResolvedNames>((resolve) =>\n resolve(new Map(names.map((name) => [name, null])))\n )\n}\n\n/**\n * Looks up the addresses for some ens (ens.domains) domains.\n */\nexport const resolveEnsNames = async (config: Config, names: string[]): Promise<ResolvedNames> => {\n const resolvedNames: ResolvedNames = new Map(names.map((name) => [name, null]))\n\n if (names.every((name) => !isPotentialEns(name))) return resolvedNames\n\n const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(\n config.networkIdEthereum\n )\n if (!client) {\n log.warn(`Could not find Ethereum client in OnChainId::resolveNames`)\n return resolvedNames\n }\n\n const results = await Promise.allSettled(\n names.map(async (name) => {\n if (!isPotentialEns(name)) return\n\n try {\n const address = await Promise.race([\n // this hangs forever in some cases (ex: try agyle.e first, then agyle.et => hangs) - couldn't explain it\n client.getEnsAddress({ name }),\n throwAfter(10_000, \"Timeout\"),\n ])\n address !== null && resolvedNames.set(name, [address, \"ens\"])\n } catch (cause) {\n throw new Error(`Failed to resolve address for ens domain '${name}'`, { cause })\n }\n })\n )\n\n // biome-ignore lint/suspicious/useIterableCallbackReturn: legacy\n results.forEach((result) => result.status === \"rejected\" && log.warn(result.reason))\n\n return resolvedNames\n}\n","/** @deprecated */\nexport const isPotentialAzns = (_name?: string) => false\n","import { lookupAddresses, lookupAznsAddresses, lookupEnsAddresses } from \"./util/addressesToNames\"\nimport { resolveAznsNames, resolveEnsNames, resolveNames } from \"./util/namesToAddresses\"\nimport type { Config, DropFirst, OptionalConfig } from \"./util/types\"\n\nexport * from \"./util/isPotentialAzns\"\nexport * from \"./util/isPotentialEns\"\nexport type {\n Config as OnChainIdConfig,\n NsLookupType,\n OnChainIds,\n ResolvedNames,\n} from \"./util/types\"\n\nexport class OnChainId {\n #config: Config\n\n constructor(config: OptionalConfig) {\n this.#config = {\n ...config,\n networkIdEthereum: config.networkIdEthereum ?? \"1\",\n }\n }\n\n resolveNames = (...args: DropFirst<Parameters<typeof resolveNames>>) =>\n resolveNames(this.#config, ...args)\n resolveEnsNames = (...args: DropFirst<Parameters<typeof resolveEnsNames>>) =>\n resolveEnsNames(this.#config, ...args)\n /** @deprecated */\n resolveAznsNames = (...args: DropFirst<Parameters<typeof resolveAznsNames>>) =>\n resolveAznsNames(this.#config, ...args)\n\n lookupAddresses = (...args: DropFirst<Parameters<typeof lookupAddresses>>) =>\n lookupAddresses(this.#config, ...args)\n lookupEnsAddresses = (...args: DropFirst<Parameters<typeof lookupEnsAddresses>>) =>\n lookupEnsAddresses(this.#config, ...args)\n /** @deprecated */\n lookupAznsAddresses = (...args: DropFirst<Parameters<typeof lookupAznsAddresses>>) =>\n lookupAznsAddresses(this.#config, ...args)\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@talismn/on-chain-id",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
+ "description": "Look up on-chain names (ENS) for account addresses, and resolve names to addresses",
4
5
  "author": "Talisman",
5
6
  "homepage": "https://talisman.xyz",
6
7
  "license": "SEE LICENSE IN LICENSE",
@@ -21,9 +22,9 @@
21
22
  "node": ">=20"
22
23
  },
23
24
  "dependencies": {
24
- "@talismn/chain-connectors": "1.0.4",
25
- "@talismn/crypto": "1.1.0",
26
- "@talismn/util": "2.0.1",
25
+ "@talismn/chain-connectors": "1.0.5",
26
+ "@talismn/crypto": "1.1.1",
27
+ "@talismn/util": "2.1.0",
27
28
  "anylogger": "^1.0.11"
28
29
  },
29
30
  "devDependencies": {
@@ -45,7 +46,7 @@
45
46
  }
46
47
  },
47
48
  "scripts": {
48
- "test": "vitest run",
49
+ "test": "vitest run --passWithNoTests",
49
50
  "clean": "rm -rf dist .turbo node_modules",
50
51
  "build": "tsdown -l error",
51
52
  "typecheck": "tsc --noEmit"