Skip to content

Commit 4a477d6

Browse files
authored
remove deprecated cloudnoun lib (#2984)
1 parent 16bf2d9 commit 4a477d6

File tree

4 files changed

+124
-66
lines changed

4 files changed

+124
-66
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
"@blockscout/visualizer-types": "0.2.0",
5151
"@blockscout/zetachain-cctx-types": "^1.0.0-rc.6",
5252
"@chakra-ui/react": "3.15.0",
53-
"@cloudnouns/kit": "1.1.6",
5453
"@emotion/react": "11.14.0",
5554
"@growthbook/growthbook-react": "0.21.0",
5655
"@helia/verified-fetch": "2.6.12",
@@ -59,6 +58,8 @@
5958
"@metamask/providers": "^10.2.1",
6059
"@monaco-editor/react": "^4.7.0",
6160
"@next/bundle-analyzer": "15.5.2",
61+
"@nouns/assets": "^0.10.0",
62+
"@nouns/sdk": "^1.2.0",
6263
"@opentelemetry/api": "^1.4.1",
6364
"@opentelemetry/auto-instrumentations-node": "0.43.0",
6465
"@opentelemetry/exporter-jaeger": "1.27.0",

ui/shared/entities/address/AddressIdenticon.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,10 @@ const Icon = dynamic(
5858
}
5959

6060
case 'nouns': {
61-
const Noun = (await import('@cloudnouns/kit'));
61+
const NounsIdenticon = (await import('./NounsIdenticon')).default;
6262

6363
return (props: IconProps) => {
64-
const noun = Noun.NounFactory.createFromString(props.hash, { size: props.size });
65-
return <Image src={ noun.svg } alt={ `Identicon for ${ props.hash }}` }/>;
64+
return <NounsIdenticon hash={ props.hash } size={ props.size }/>;
6665
};
6766
}
6867

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { ImageData, getNounData, getNounSeedFromBlockHash } from '@nouns/assets';
2+
import { buildSVG } from '@nouns/sdk';
3+
import CryptoJS from 'crypto-js';
4+
import React from 'react';
5+
6+
import { Image } from 'toolkit/chakra/image';
7+
8+
const { palette } = ImageData;
9+
10+
interface NounsIdenticonProps {
11+
hash: string;
12+
size: number;
13+
}
14+
15+
const MAGIC_HASH = '0xAC1CA184579A254E4F289319E42FF4A67BF5698AD26C6E7C68769D0D21FAFCB1';
16+
17+
// analog of getNumberFromString from deleted @cloudnoun package
18+
export const getNumberFromString = (input: string): number => {
19+
const str = input.trim();
20+
if (!str) return 0;
21+
22+
const combined = [
23+
str,
24+
CryptoJS.MD5(str).toString(CryptoJS.enc.Hex),
25+
CryptoJS.SHA1(str).toString(CryptoJS.enc.Base64),
26+
CryptoJS.SHA256(str).toString(CryptoJS.enc.Hex),
27+
CryptoJS.SHA512(str).toString(CryptoJS.enc.Base64),
28+
CryptoJS.RIPEMD160(str).toString(CryptoJS.enc.Base64),
29+
].join('');
30+
31+
let sum = 0;
32+
for (let i = 0; i < combined.length; i++) {
33+
sum += combined.charCodeAt(i);
34+
}
35+
return sum * str.length;
36+
};
37+
38+
const NounsIdenticon: React.FC<NounsIdenticonProps> = ({ hash, size }) => {
39+
const id = getNumberFromString(hash);
40+
const seed = getNounSeedFromBlockHash(id, MAGIC_HASH);
41+
42+
const { parts, background } = getNounData(seed);
43+
const svg = buildSVG(parts, palette, background);
44+
const svgData = btoa(svg);
45+
if (!svgData) {
46+
return null;
47+
}
48+
49+
return (
50+
<Image
51+
src={ `data:image/svg+xml;base64,${ svgData }` }
52+
alt={ `Nouns identicon for ${ hash }` }
53+
width={ `${ size }px` }
54+
height={ `${ size }px` }
55+
/>
56+
);
57+
};
58+
59+
export default React.memo(NounsIdenticon);

yarn.lock

Lines changed: 61 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1736,15 +1736,6 @@
17361736
picocolors "^1.0.0"
17371737
sisteransi "^1.0.5"
17381738

1739-
"@cloudnouns/[email protected]":
1740-
version "1.1.6"
1741-
resolved "https://registry.yarnpkg.com/@cloudnouns/kit/-/kit-1.1.6.tgz#1d6f6f86f7b9729b816f1404fd050171a1e5a743"
1742-
integrity sha512-4Burtt19tpoJ4dpNdE2UjQA3BjbizUzyidgM89JqEo+JO10E/5fvkQUrfNiNUQloyAXys2Iakq4N4p/+/9O+tw==
1743-
dependencies:
1744-
"@ethersproject/bignumber" "^5.7.0"
1745-
"@ethersproject/solidity" "^5.7.0"
1746-
jshashes "^1.0.8"
1747-
17481739
"@coinbase/[email protected]":
17491740
version "4.3.0"
17501741
resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.3.0.tgz#03b8fce92ac2b3b7cf132f64d6008ac081569b4e"
@@ -2317,71 +2308,71 @@
23172308
ethereum-cryptography "^2.0.0"
23182309
micro-ftch "^0.3.1"
23192310

2320-
"@ethersproject/bignumber@^5.7.0":
2321-
version "5.7.0"
2322-
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2"
2323-
integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==
2311+
"@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@^5.8.0":
2312+
version "5.8.0"
2313+
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.8.0.tgz#c381d178f9eeb370923d389284efa19f69efa5d7"
2314+
integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==
23242315
dependencies:
2325-
"@ethersproject/bytes" "^5.7.0"
2326-
"@ethersproject/logger" "^5.7.0"
2316+
"@ethersproject/bytes" "^5.8.0"
2317+
"@ethersproject/logger" "^5.8.0"
23272318
bn.js "^5.2.1"
23282319

2329-
"@ethersproject/bytes@^5.7.0":
2330-
version "5.7.0"
2331-
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d"
2332-
integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==
2320+
"@ethersproject/bytes@^5.8.0":
2321+
version "5.8.0"
2322+
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.8.0.tgz#9074820e1cac7507a34372cadeb035461463be34"
2323+
integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==
23332324
dependencies:
2334-
"@ethersproject/logger" "^5.7.0"
2325+
"@ethersproject/logger" "^5.8.0"
23352326

2336-
"@ethersproject/constants@^5.7.0":
2337-
version "5.7.0"
2338-
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e"
2339-
integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==
2327+
"@ethersproject/constants@^5.8.0":
2328+
version "5.8.0"
2329+
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.8.0.tgz#12f31c2f4317b113a4c19de94e50933648c90704"
2330+
integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==
23402331
dependencies:
2341-
"@ethersproject/bignumber" "^5.7.0"
2332+
"@ethersproject/bignumber" "^5.8.0"
23422333

2343-
"@ethersproject/keccak256@^5.7.0":
2344-
version "5.7.0"
2345-
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a"
2346-
integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==
2334+
"@ethersproject/keccak256@^5.8.0":
2335+
version "5.8.0"
2336+
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.8.0.tgz#d2123a379567faf2d75d2aaea074ffd4df349e6a"
2337+
integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==
23472338
dependencies:
2348-
"@ethersproject/bytes" "^5.7.0"
2339+
"@ethersproject/bytes" "^5.8.0"
23492340
js-sha3 "0.8.0"
23502341

2351-
"@ethersproject/logger@^5.7.0":
2352-
version "5.7.0"
2353-
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892"
2354-
integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==
2342+
"@ethersproject/logger@^5.8.0":
2343+
version "5.8.0"
2344+
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.8.0.tgz#f0232968a4f87d29623a0481690a2732662713d6"
2345+
integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==
23552346

2356-
"@ethersproject/sha2@^5.7.0":
2357-
version "5.7.0"
2358-
resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb"
2359-
integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==
2347+
"@ethersproject/sha2@^5.8.0":
2348+
version "5.8.0"
2349+
resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.8.0.tgz#8954a613bb78dac9b46829c0a95de561ef74e5e1"
2350+
integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==
23602351
dependencies:
2361-
"@ethersproject/bytes" "^5.7.0"
2362-
"@ethersproject/logger" "^5.7.0"
2352+
"@ethersproject/bytes" "^5.8.0"
2353+
"@ethersproject/logger" "^5.8.0"
23632354
hash.js "1.1.7"
23642355

2365-
"@ethersproject/solidity@^5.7.0":
2366-
version "5.7.0"
2367-
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8"
2368-
integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==
2356+
"@ethersproject/solidity@^5.5.0":
2357+
version "5.8.0"
2358+
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.8.0.tgz#429bb9fcf5521307a9448d7358c26b93695379b9"
2359+
integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==
23692360
dependencies:
2370-
"@ethersproject/bignumber" "^5.7.0"
2371-
"@ethersproject/bytes" "^5.7.0"
2372-
"@ethersproject/keccak256" "^5.7.0"
2373-
"@ethersproject/logger" "^5.7.0"
2374-
"@ethersproject/sha2" "^5.7.0"
2375-
"@ethersproject/strings" "^5.7.0"
2361+
"@ethersproject/bignumber" "^5.8.0"
2362+
"@ethersproject/bytes" "^5.8.0"
2363+
"@ethersproject/keccak256" "^5.8.0"
2364+
"@ethersproject/logger" "^5.8.0"
2365+
"@ethersproject/sha2" "^5.8.0"
2366+
"@ethersproject/strings" "^5.8.0"
23762367

2377-
"@ethersproject/strings@^5.7.0":
2378-
version "5.7.0"
2379-
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2"
2380-
integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==
2368+
"@ethersproject/strings@^5.8.0":
2369+
version "5.8.0"
2370+
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.8.0.tgz#ad79fafbf0bd272d9765603215ac74fd7953908f"
2371+
integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==
23812372
dependencies:
2382-
"@ethersproject/bytes" "^5.7.0"
2383-
"@ethersproject/constants" "^5.7.0"
2384-
"@ethersproject/logger" "^5.7.0"
2373+
"@ethersproject/bytes" "^5.8.0"
2374+
"@ethersproject/constants" "^5.8.0"
2375+
"@ethersproject/logger" "^5.8.0"
23852376

23862377
"@floating-ui/core@^1.0.5":
23872378
version "1.1.0"
@@ -4615,6 +4606,19 @@
46154606
"@nodelib/fs.scandir" "2.1.5"
46164607
fastq "^1.6.0"
46174608

4609+
"@nouns/assets@^0.10.0":
4610+
version "0.10.0"
4611+
resolved "https://registry.yarnpkg.com/@nouns/assets/-/assets-0.10.0.tgz#31680f84f245cbfd6b4727c9990f5df1fe6245a1"
4612+
integrity sha512-M4d8akHjr77qc/OE9Mhbp/wioiRQ2hYlYKZfRmVSex6OW+R8LbToUDYHIGPPp11mapzJbBob5FuZ+fCFBiY2Qg==
4613+
dependencies:
4614+
"@ethersproject/bignumber" "^5.5.0"
4615+
"@ethersproject/solidity" "^5.5.0"
4616+
4617+
"@nouns/sdk@^1.2.0":
4618+
version "1.2.0"
4619+
resolved "https://registry.yarnpkg.com/@nouns/sdk/-/sdk-1.2.0.tgz#c1f9954c712552b3514d054f519d6c703dcd5571"
4620+
integrity sha512-8NTd86aB3aQ0Alc1Bi7SrFtTvIRltsLNBOyHxF/1Z+iEt5/SXECm//0PWJ1cQkdQ2CtqEVljw9w1/CivTfSewA==
4621+
46184622
"@opentelemetry/[email protected]", "@opentelemetry/api-logs@^0.49.1":
46194623
version "0.49.1"
46204624
resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.49.1.tgz#51a66ed5eb5eeeafffbd36c1713aa91cbfdd5259"
@@ -15212,11 +15216,6 @@ jsesc@~0.5.0:
1521215216
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1521315217
integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
1521415218

15215-
jshashes@^1.0.8:
15216-
version "1.0.8"
15217-
resolved "https://registry.yarnpkg.com/jshashes/-/jshashes-1.0.8.tgz#f60d837428383abf73ab022e1542e6614bd75514"
15218-
integrity sha512-btmQZ/w1rj8Lb6nEwvhjM7nBYoj54yaEFo2PWh3RkxZ8qNwuvOxvQYN/JxVuwoMmdIluL+XwYVJ+pEEZoSYybQ==
15219-
1522015219
json-bigint@^1.0.0:
1522115220
version "1.0.0"
1522215221
resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"

0 commit comments

Comments
 (0)