@talismn/on-chain-id 0.2.11 → 1.0.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.
package/dist/index.mjs CHANGED
@@ -1,189 +1,123 @@
1
- // src/util/addressesToNames.ts
2
1
  import { isEthereumAddress } from "@talismn/crypto";
3
-
4
- // src/log.ts
5
2
  import anylogger from "anylogger";
6
-
7
- // package.json
8
- var package_default = {
9
- name: "@talismn/on-chain-id",
10
- version: "0.2.11",
11
- author: "Talisman",
12
- homepage: "https://talisman.xyz",
13
- license: "GPL-3.0-or-later",
14
- publishConfig: {
15
- access: "public"
16
- },
17
- repository: {
18
- directory: "packages/on-chain-id",
19
- type: "git",
20
- url: "https://github.com/TalismanSociety/talisman.git"
21
- },
22
- main: "./dist/index.js",
23
- module: "./dist/index.mjs",
24
- files: [
25
- "dist"
26
- ],
27
- engines: {
28
- node: ">=20"
29
- },
30
- scripts: {
31
- test: "vitest run",
32
- clean: "rm -rf dist .turbo node_modules",
33
- build: "tsup --silent",
34
- typecheck: "tsc --noEmit"
35
- },
36
- dependencies: {
37
- "@talismn/chain-connectors": "workspace:*",
38
- "@talismn/crypto": "workspace:*",
39
- "@talismn/util": "workspace:*",
40
- anylogger: "^1.0.11"
41
- },
42
- devDependencies: {
43
- "@talismn/tsconfig": "workspace:*",
44
- typescript: "^6.0.3"
45
- },
46
- types: "./dist/index.d.ts",
47
- exports: {
48
- ".": {
49
- "@talismn/source": "./src/index.ts",
50
- import: {
51
- types: "./dist/index.d.mts",
52
- default: "./dist/index.mjs"
53
- },
54
- require: {
55
- types: "./dist/index.d.ts",
56
- default: "./dist/index.js"
57
- }
58
- }
59
- }
60
- };
61
-
62
- // src/log.ts
63
- var log_default = anylogger(package_default.name);
64
-
65
- // src/util/addressesToNames.ts
66
- var lookupAddresses = async (config, addresses) => {
67
- const onChainIds = new Map(addresses.map((address) => [address, null]));
68
- const [ensDomains] = await Promise.all([
69
- lookupEnsAddresses(config, addresses)
70
- // add more providers here
71
- ]);
72
- ensDomains.forEach((domain, address) => {
73
- if (!domain) return;
74
- onChainIds.set(address, domain);
75
- });
76
- return onChainIds;
3
+ import { throwAfter } from "@talismn/util";
4
+ //#endregion
5
+ //#region src/log.ts
6
+ var log_default = anylogger("@talismn/on-chain-id");
7
+ //#endregion
8
+ //#region src/util/addressesToNames.ts
9
+ /**
10
+ * Looks up the on-chain identifiers for some addresses.
11
+ * Supports ENS.
12
+ */
13
+ const lookupAddresses = async (config, addresses) => {
14
+ const onChainIds = new Map(addresses.map((address) => [address, null]));
15
+ const [ensDomains] = await Promise.all([lookupEnsAddresses(config, addresses)]);
16
+ ensDomains.forEach((domain, address) => {
17
+ if (!domain) return;
18
+ onChainIds.set(address, domain);
19
+ });
20
+ return onChainIds;
77
21
  };
78
- var lookupAznsAddresses = async (_config, addresses) => {
79
- return new Promise(
80
- (resolve) => resolve(new Map(addresses.map((address) => [address, null])))
81
- );
22
+ /**
23
+ * Looks up the on-chain AZNS domains for some addresses.
24
+ * @deprecated
25
+ */
26
+ const lookupAznsAddresses = async (_config, addresses) => {
27
+ return new Promise((resolve) => resolve(new Map(addresses.map((address) => [address, null]))));
82
28
  };
83
- var lookupEnsAddresses = async (config, addresses) => {
84
- const onChainIds = new Map(addresses.map((address) => [address, null]));
85
- const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(
86
- config.networkIdEthereum
87
- );
88
- if (!client) {
89
- log_default.warn(`Could not find Ethereum client in OnChainId::lookupEnsAddresses`);
90
- return onChainIds;
91
- }
92
- const results = await Promise.allSettled(
93
- addresses.map(async (address) => {
94
- if (!isEthereumAddress(address)) return;
95
- try {
96
- const domain = await client.getEnsName({ address });
97
- domain !== null && onChainIds.set(address, domain);
98
- } catch (cause) {
99
- const errorMessage = cause?.shortMessage ?? String(cause);
100
- throw new Error(`Failed to resolve ENS domain for address '${address}': ${errorMessage}`);
101
- }
102
- })
103
- );
104
- results.forEach((result) => result.status === "rejected" && log_default.warn(result.reason.message));
105
- return onChainIds;
29
+ /**
30
+ * Looks up the on-chain ENS domains for some addresses.
31
+ */
32
+ const lookupEnsAddresses = async (config, addresses) => {
33
+ const onChainIds = new Map(addresses.map((address) => [address, null]));
34
+ const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(config.networkIdEthereum);
35
+ if (!client) {
36
+ log_default.warn(`Could not find Ethereum client in OnChainId::lookupEnsAddresses`);
37
+ return onChainIds;
38
+ }
39
+ (await Promise.allSettled(addresses.map(async (address) => {
40
+ if (!isEthereumAddress(address)) return;
41
+ try {
42
+ const domain = await client.getEnsName({ address });
43
+ domain !== null && onChainIds.set(address, domain);
44
+ } catch (cause) {
45
+ const errorMessage = cause?.shortMessage ?? String(cause);
46
+ throw new Error(`Failed to resolve ENS domain for address '${address}': ${errorMessage}`);
47
+ }
48
+ }))).forEach((result) => result.status === "rejected" && log_default.warn(result.reason.message));
49
+ return onChainIds;
106
50
  };
107
-
108
- // src/util/namesToAddresses.ts
109
- import { throwAfter } from "@talismn/util";
110
-
111
- // src/util/isPotentialEns.ts
112
- var isPotentialEns = (name) => typeof name === "string" && /^.+\..+$/.test(name);
113
-
114
- // src/util/namesToAddresses.ts
115
- var resolveNames = async (config, names) => {
116
- const resolvedNames = new Map(names.map((name) => [name, null]));
117
- const [ensNames] = await Promise.all([
118
- resolveEnsNames(config, names)
119
- // add more providers here
120
- ]);
121
- ensNames.forEach((lookup, name) => {
122
- if (!lookup) return;
123
- const [address, lookupType] = lookup;
124
- if (!address) return;
125
- resolvedNames.set(name, [address, lookupType]);
126
- });
127
- return resolvedNames;
51
+ //#endregion
52
+ //#region src/util/isPotentialEns.ts
53
+ /** dot separated string e.g. `ens.eth` or `hello.lol` */
54
+ const isPotentialEns = (name) => typeof name === "string" && /^.+\..+$/.test(name);
55
+ //#endregion
56
+ //#region src/util/namesToAddresses.ts
57
+ const resolveNames = async (config, names) => {
58
+ const resolvedNames = new Map(names.map((name) => [name, null]));
59
+ const [ensNames] = await Promise.all([resolveEnsNames(config, names)]);
60
+ ensNames.forEach((lookup, name) => {
61
+ if (!lookup) return;
62
+ const [address, lookupType] = lookup;
63
+ if (!address) return;
64
+ resolvedNames.set(name, [address, lookupType]);
65
+ });
66
+ return resolvedNames;
128
67
  };
129
- var resolveAznsNames = (_config, names) => {
130
- return new Promise(
131
- (resolve) => resolve(new Map(names.map((name) => [name, null])))
132
- );
68
+ /**
69
+ * Looks up the addresses for some azns (azero.id) domains.
70
+ * @deprecated
71
+ */
72
+ const resolveAznsNames = (_config, names) => {
73
+ return new Promise((resolve) => resolve(new Map(names.map((name) => [name, null]))));
133
74
  };
134
- var resolveEnsNames = async (config, names) => {
135
- const resolvedNames = new Map(names.map((name) => [name, null]));
136
- if (names.every((name) => !isPotentialEns(name))) return resolvedNames;
137
- const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(
138
- config.networkIdEthereum
139
- );
140
- if (!client) {
141
- log_default.warn(`Could not find Ethereum client in OnChainId::resolveNames`);
142
- return resolvedNames;
143
- }
144
- const results = await Promise.allSettled(
145
- names.map(async (name) => {
146
- if (!isPotentialEns(name)) return;
147
- try {
148
- const address = await Promise.race([
149
- // this hangs forever in some cases (ex: try agyle.e first, then agyle.et => hangs) - couldn't explain it
150
- client.getEnsAddress({ name }),
151
- throwAfter(1e4, "Timeout")
152
- ]);
153
- address !== null && resolvedNames.set(name, [address, "ens"]);
154
- } catch (cause) {
155
- throw new Error(`Failed to resolve address for ens domain '${name}'`, { cause });
156
- }
157
- })
158
- );
159
- results.forEach((result) => result.status === "rejected" && log_default.warn(result.reason));
160
- return resolvedNames;
75
+ /**
76
+ * Looks up the addresses for some ens (ens.domains) domains.
77
+ */
78
+ const resolveEnsNames = async (config, names) => {
79
+ const resolvedNames = new Map(names.map((name) => [name, null]));
80
+ if (names.every((name) => !isPotentialEns(name))) return resolvedNames;
81
+ const client = await config.chainConnectors.evm?.getPublicClientForEvmNetwork(config.networkIdEthereum);
82
+ if (!client) {
83
+ log_default.warn(`Could not find Ethereum client in OnChainId::resolveNames`);
84
+ return resolvedNames;
85
+ }
86
+ (await Promise.allSettled(names.map(async (name) => {
87
+ if (!isPotentialEns(name)) return;
88
+ try {
89
+ const address = await Promise.race([client.getEnsAddress({ name }), throwAfter(1e4, "Timeout")]);
90
+ address !== null && resolvedNames.set(name, [address, "ens"]);
91
+ } catch (cause) {
92
+ throw new Error(`Failed to resolve address for ens domain '${name}'`, { cause });
93
+ }
94
+ }))).forEach((result) => result.status === "rejected" && log_default.warn(result.reason));
95
+ return resolvedNames;
161
96
  };
162
-
163
- // src/util/isPotentialAzns.ts
164
- var isPotentialAzns = (_name) => false;
165
-
166
- // src/index.ts
97
+ //#endregion
98
+ //#region src/util/isPotentialAzns.ts
99
+ /** @deprecated */
100
+ const isPotentialAzns = (_name) => false;
101
+ //#endregion
102
+ //#region src/index.ts
167
103
  var OnChainId = class {
168
- #config;
169
- constructor(config) {
170
- this.#config = {
171
- ...config,
172
- networkIdEthereum: config.networkIdEthereum ?? "1"
173
- };
174
- }
175
- resolveNames = (...args) => resolveNames(this.#config, ...args);
176
- resolveEnsNames = (...args) => resolveEnsNames(this.#config, ...args);
177
- /** @deprecated */
178
- resolveAznsNames = (...args) => resolveAznsNames(this.#config, ...args);
179
- lookupAddresses = (...args) => lookupAddresses(this.#config, ...args);
180
- /** @deprecated */
181
- lookupEnsAddresses = (...args) => lookupEnsAddresses(this.#config, ...args);
182
- lookupAznsAddresses = (...args) => lookupAznsAddresses(this.#config, ...args);
183
- };
184
- export {
185
- OnChainId,
186
- isPotentialAzns,
187
- isPotentialEns
104
+ #config;
105
+ constructor(config) {
106
+ this.#config = {
107
+ ...config,
108
+ networkIdEthereum: config.networkIdEthereum ?? "1"
109
+ };
110
+ }
111
+ resolveNames = (...args) => resolveNames(this.#config, ...args);
112
+ resolveEnsNames = (...args) => resolveEnsNames(this.#config, ...args);
113
+ /** @deprecated */
114
+ resolveAznsNames = (...args) => resolveAznsNames(this.#config, ...args);
115
+ lookupAddresses = (...args) => lookupAddresses(this.#config, ...args);
116
+ /** @deprecated */
117
+ lookupEnsAddresses = (...args) => lookupEnsAddresses(this.#config, ...args);
118
+ lookupAznsAddresses = (...args) => lookupAznsAddresses(this.#config, ...args);
188
119
  };
120
+ //#endregion
121
+ export { OnChainId, isPotentialAzns, isPotentialEns };
122
+
189
123
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/addressesToNames.ts","../src/log.ts","../package.json","../src/util/namesToAddresses.ts","../src/util/isPotentialEns.ts","../src/util/isPotentialAzns.ts","../src/index.ts"],"sourcesContent":["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","import anylogger from \"anylogger\"\n\nimport packageJson from \"../package.json\"\n\nexport default anylogger(packageJson.name)\n","{\n \"name\": \"@talismn/on-chain-id\",\n \"version\": \"0.2.11\",\n \"author\": \"Talisman\",\n \"homepage\": \"https://talisman.xyz\",\n \"license\": \"GPL-3.0-or-later\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"repository\": {\n \"directory\": \"packages/on-chain-id\",\n \"type\": \"git\",\n \"url\": \"https://github.com/TalismanSociety/talisman.git\"\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"files\": [\n \"dist\"\n ],\n \"engines\": {\n \"node\": \">=20\"\n },\n \"scripts\": {\n \"test\": \"vitest run\",\n \"clean\": \"rm -rf dist .turbo node_modules\",\n \"build\": \"tsup --silent\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@talismn/chain-connectors\": \"workspace:*\",\n \"@talismn/crypto\": \"workspace:*\",\n \"@talismn/util\": \"workspace:*\",\n \"anylogger\": \"^1.0.11\"\n },\n \"devDependencies\": {\n \"@talismn/tsconfig\": \"workspace:*\",\n \"typescript\": \"^6.0.3\"\n },\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"@talismn/source\": \"./src/index.ts\",\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n }\n }\n }\n}\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","/** dot separated string e.g. `ens.eth` or `hello.lol` */\nexport const isPotentialEns = (name?: string) => typeof name === \"string\" && /^.+\\..+$/.test(name)\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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","names":[]}
1
+ {"version":3,"file":"index.mjs","names":["packageJson.name","log","log","#config"],"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":";;;;;ACIA,IAAA,cAAe,UAAUA,sBAAgB;;;;;;;ACKzC,MAAa,kBAAkB,OAAO,QAAgB,cAA6C;CACjG,MAAM,aAAyB,IAAI,IAAI,UAAU,KAAK,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;CAElF,MAAM,CAAC,cAAc,MAAM,QAAQ,IAAI,CACrC,mBAAmB,QAAQ,SAAS,CAEtC,CAAC;CAED,WAAW,SAAS,QAAQ,YAAY;EACtC,IAAI,CAAC,QAAQ;EACb,WAAW,IAAI,SAAS,MAAM;CAChC,CAAC;CAED,OAAO;AACT;;;;;AAMA,MAAa,sBAAsB,OACjC,SACA,cACwB;CACxB,OAAO,IAAI,SAAqB,YAC9B,QAAQ,IAAI,IAAI,UAAU,KAAK,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAC9D;AACF;;;;AAKA,MAAa,qBAAqB,OAChC,QACA,cACwB;CACxB,MAAM,aAAyB,IAAI,IAAI,UAAU,KAAK,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;CAElF,MAAM,SAAS,MAAM,OAAO,gBAAgB,KAAK,6BAC/C,OAAO,iBACT;CACA,IAAI,CAAC,QAAQ;EACX,YAAI,KAAK,iEAAiE;EAC1E,OAAO;CACT;CAiBA,CAAA,MAfsB,QAAQ,WAC5B,UAAU,IAAI,OAAO,YAAY;EAE/B,IAAI,CAAC,kBAAkB,OAAO,GAAG;EAEjC,IAAI;GACF,MAAM,SAAS,MAAM,OAAO,WAAW,EAAE,QAAQ,CAAC;GAClD,WAAW,QAAQ,WAAW,IAAI,SAAS,MAAM;EACnD,SAAS,OAAO;GACd,MAAM,eAAgB,OAAqC,gBAAgB,OAAO,KAAK;GACvF,MAAM,IAAI,MAAM,6CAA6C,QAAQ,KAAK,cAAc;EAC1F;CACF,CAAC,CACH,EAAA,CAEQ,SAAS,WAAW,OAAO,WAAW,cAAcC,YAAI,KAAK,OAAO,OAAO,OAAO,CAAC;CAE3F,OAAO;AACT;;;;ACxEA,MAAa,kBAAkB,SAAkB,OAAO,SAAS,YAAY,WAAW,KAAK,IAAI;;;ACKjG,MAAa,eAAe,OAAO,QAAgB,UAA4C;CAC7F,MAAM,gBAA+B,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;CAE9E,MAAM,CAAC,YAAY,MAAM,QAAQ,IAAI,CACnC,gBAAgB,QAAQ,KAAK,CAE/B,CAAC;CAED,SAAS,SAAS,QAAQ,SAAS;EACjC,IAAI,CAAC,QAAQ;EAEb,MAAM,CAAC,SAAS,cAAc;EAC9B,IAAI,CAAC,SAAS;EAEd,cAAc,IAAI,MAAM,CAAC,SAAS,UAAU,CAAC;CAC/C,CAAC;CAED,OAAO;AACT;;;;;AAMA,MAAa,oBAAoB,SAAiB,UAA4C;CAC5F,OAAO,IAAI,SAAwB,YACjC,QAAQ,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CACpD;AACF;;;;AAKA,MAAa,kBAAkB,OAAO,QAAgB,UAA4C;CAChG,MAAM,gBAA+B,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;CAE9E,IAAI,MAAM,OAAO,SAAS,CAAC,eAAe,IAAI,CAAC,GAAG,OAAO;CAEzD,MAAM,SAAS,MAAM,OAAO,gBAAgB,KAAK,6BAC/C,OAAO,iBACT;CACA,IAAI,CAAC,QAAQ;EACX,YAAI,KAAK,2DAA2D;EACpE,OAAO;CACT;CAoBA,CAAA,MAlBsB,QAAQ,WAC5B,MAAM,IAAI,OAAO,SAAS;EACxB,IAAI,CAAC,eAAe,IAAI,GAAG;EAE3B,IAAI;GACF,MAAM,UAAU,MAAM,QAAQ,KAAK,CAEjC,OAAO,cAAc,EAAE,KAAK,CAAC,GAC7B,WAAW,KAAQ,SAAS,CAC9B,CAAC;GACD,YAAY,QAAQ,cAAc,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC;EAC9D,SAAS,OAAO;GACd,MAAM,IAAI,MAAM,6CAA6C,KAAK,IAAI,EAAE,MAAM,CAAC;EACjF;CACF,CAAC,CACH,EAAA,CAGQ,SAAS,WAAW,OAAO,WAAW,cAAcC,YAAI,KAAK,OAAO,MAAM,CAAC;CAEnF,OAAO;AACT;;;;ACxEA,MAAa,mBAAmB,UAAmB;;;ACYnD,IAAa,YAAb,MAAuB;CACrB;CAEA,YAAY,QAAwB;EAClC,KAAKC,UAAU;GACb,GAAG;GACH,mBAAmB,OAAO,qBAAqB;EACjD;CACF;CAEA,gBAAgB,GAAG,SACjB,aAAa,KAAKA,SAAS,GAAG,IAAI;CACpC,mBAAmB,GAAG,SACpB,gBAAgB,KAAKA,SAAS,GAAG,IAAI;;CAEvC,oBAAoB,GAAG,SACrB,iBAAiB,KAAKA,SAAS,GAAG,IAAI;CAExC,mBAAmB,GAAG,SACpB,gBAAgB,KAAKA,SAAS,GAAG,IAAI;;CAEvC,sBAAsB,GAAG,SACvB,mBAAmB,KAAKA,SAAS,GAAG,IAAI;CAC1C,uBAAuB,GAAG,SACxB,oBAAoB,KAAKA,SAAS,GAAG,IAAI;AAC7C"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@talismn/on-chain-id",
3
- "version": "0.2.11",
3
+ "version": "1.0.0",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
- "license": "GPL-3.0-or-later",
6
+ "license": "SEE LICENSE IN LICENSE",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -22,12 +22,12 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "anylogger": "^1.0.11",
25
- "@talismn/chain-connectors": "0.1.0",
26
- "@talismn/util": "1.1.0",
27
- "@talismn/crypto": "0.3.5"
25
+ "@talismn/chain-connectors": "1.0.0",
26
+ "@talismn/crypto": "1.0.0",
27
+ "@talismn/util": "2.0.0"
28
28
  },
29
29
  "devDependencies": {
30
- "typescript": "^6.0.3",
30
+ "typescript": "^7.0.2",
31
31
  "@talismn/tsconfig": "0.0.4"
32
32
  },
33
33
  "types": "./dist/index.d.ts",
@@ -47,7 +47,7 @@
47
47
  "scripts": {
48
48
  "test": "vitest run",
49
49
  "clean": "rm -rf dist .turbo node_modules",
50
- "build": "tsup --silent",
50
+ "build": "tsdown -l error",
51
51
  "typecheck": "tsc --noEmit"
52
52
  }
53
53
  }