feat: use ipfs protocol in content and change ipfs service

This commit is contained in:
DIYgod 2022-08-23 15:18:48 +01:00
parent 4fd30a0d63
commit 52c185eabf
No known key found for this signature in database
GPG Key ID: D159328F47A80DCA
8 changed files with 419 additions and 70 deletions

View File

@ -42,10 +42,11 @@
"@trpc/server": "^9.23.2",
"@web-std/form-data": "^3.0.2",
"async-busboy": "^1.1.0",
"axios": "^0.27.2",
"busboy": "^1.6.0",
"clsx": "^1.1.1",
"cookie": "^0.5.0",
"crossbell.js": "^0.10.17",
"crossbell.js": "^0.10.20",
"dayjs": "^1.11.1",
"dotenv": "^16.0.0",
"emoji-mart": "^5.2.0",
@ -77,7 +78,7 @@
"remark-rehype": "^10.1.0",
"sortablejs": "^1.15.0",
"ua-parser-js": "^1.0.2",
"unidata.js": "^0.6.14",
"unidata.js": "^0.6.16",
"unified": "^10.1.2",
"unist-builder": "^3.0.0",
"unist-util-visit": "^4.1.0",

View File

@ -46,11 +46,12 @@ specifiers:
'@web-std/form-data': ^3.0.2
async-busboy: ^1.1.0
autoprefixer: ^10.4.7
axios: ^0.27.2
busboy: ^1.6.0
clsx: ^1.1.1
cookie: ^0.5.0
cross-spawn: ^7.0.3
crossbell.js: ^0.10.17
crossbell.js: ^0.10.20
dayjs: ^1.11.1
dotenv: ^16.0.0
emoji-mart: ^5.2.0
@ -93,7 +94,7 @@ specifiers:
tailwindcss: ^3.0.24
typescript: ^4.5.5
ua-parser-js: ^1.0.2
unidata.js: ^0.6.14
unidata.js: ^0.6.16
unified: ^10.1.2
unist-builder: ^3.0.0
unist-util-visit: ^4.1.0
@ -130,10 +131,11 @@ dependencies:
'@trpc/server': 9.25.3
'@web-std/form-data': 3.0.2
async-busboy: 1.1.0
axios: 0.27.2
busboy: 1.6.0
clsx: 1.1.1
cookie: 0.5.0
crossbell.js: 0.10.17
crossbell.js: 0.10.20
dayjs: 1.11.3
dotenv: 16.0.1
emoji-mart: 5.2.0
@ -165,7 +167,7 @@ dependencies:
remark-rehype: 10.1.0
sortablejs: 1.15.0
ua-parser-js: 1.0.2
unidata.js: 0.6.14
unidata.js: 0.6.16
unified: 10.1.2
unist-builder: 3.0.0
unist-util-visit: 4.1.0
@ -676,6 +678,20 @@ packages:
'@ethersproject/strings': 5.6.1
dev: false
/@ethersproject/abi/5.7.0:
resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==}
dependencies:
'@ethersproject/address': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/constants': 5.7.0
'@ethersproject/hash': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/strings': 5.7.0
dev: false
/@ethersproject/abstract-provider/5.6.1:
resolution: {integrity: sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==}
dependencies:
@ -688,6 +704,18 @@ packages:
'@ethersproject/web': 5.6.1
dev: false
/@ethersproject/abstract-provider/5.7.0:
resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==}
dependencies:
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/networks': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/transactions': 5.7.0
'@ethersproject/web': 5.7.0
dev: false
/@ethersproject/abstract-signer/5.6.2:
resolution: {integrity: sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==}
dependencies:
@ -698,6 +726,16 @@ packages:
'@ethersproject/properties': 5.6.0
dev: false
/@ethersproject/abstract-signer/5.7.0:
resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==}
dependencies:
'@ethersproject/abstract-provider': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
dev: false
/@ethersproject/address/5.6.1:
resolution: {integrity: sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==}
dependencies:
@ -708,12 +746,28 @@ packages:
'@ethersproject/rlp': 5.6.1
dev: false
/@ethersproject/address/5.7.0:
resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==}
dependencies:
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/rlp': 5.7.0
dev: false
/@ethersproject/base64/5.6.1:
resolution: {integrity: sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==}
dependencies:
'@ethersproject/bytes': 5.6.1
dev: false
/@ethersproject/base64/5.7.0:
resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==}
dependencies:
'@ethersproject/bytes': 5.7.0
dev: false
/@ethersproject/basex/5.6.1:
resolution: {integrity: sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==}
dependencies:
@ -721,6 +775,13 @@ packages:
'@ethersproject/properties': 5.6.0
dev: false
/@ethersproject/basex/5.7.0:
resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/properties': 5.7.0
dev: false
/@ethersproject/bignumber/5.6.2:
resolution: {integrity: sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==}
dependencies:
@ -729,18 +790,38 @@ packages:
bn.js: 5.2.1
dev: false
/@ethersproject/bignumber/5.7.0:
resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
bn.js: 5.2.1
dev: false
/@ethersproject/bytes/5.6.1:
resolution: {integrity: sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==}
dependencies:
'@ethersproject/logger': 5.6.0
dev: false
/@ethersproject/bytes/5.7.0:
resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==}
dependencies:
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/constants/5.6.1:
resolution: {integrity: sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==}
dependencies:
'@ethersproject/bignumber': 5.6.2
dev: false
/@ethersproject/constants/5.7.0:
resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==}
dependencies:
'@ethersproject/bignumber': 5.7.0
dev: false
/@ethersproject/contracts/5.6.2:
resolution: {integrity: sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==}
dependencies:
@ -756,6 +837,21 @@ packages:
'@ethersproject/transactions': 5.6.2
dev: false
/@ethersproject/contracts/5.7.0:
resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==}
dependencies:
'@ethersproject/abi': 5.7.0
'@ethersproject/abstract-provider': 5.7.0
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/address': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/constants': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/transactions': 5.7.0
dev: false
/@ethersproject/hash/5.6.1:
resolution: {integrity: sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==}
dependencies:
@ -769,6 +865,20 @@ packages:
'@ethersproject/strings': 5.6.1
dev: false
/@ethersproject/hash/5.7.0:
resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==}
dependencies:
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/address': 5.7.0
'@ethersproject/base64': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/strings': 5.7.0
dev: false
/@ethersproject/hdnode/5.6.2:
resolution: {integrity: sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==}
dependencies:
@ -786,6 +896,23 @@ packages:
'@ethersproject/wordlists': 5.6.1
dev: false
/@ethersproject/hdnode/5.7.0:
resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==}
dependencies:
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/basex': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/pbkdf2': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/sha2': 5.7.0
'@ethersproject/signing-key': 5.7.0
'@ethersproject/strings': 5.7.0
'@ethersproject/transactions': 5.7.0
'@ethersproject/wordlists': 5.7.0
dev: false
/@ethersproject/json-wallets/5.6.1:
resolution: {integrity: sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==}
dependencies:
@ -804,6 +931,24 @@ packages:
scrypt-js: 3.0.1
dev: false
/@ethersproject/json-wallets/5.7.0:
resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==}
dependencies:
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/address': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/hdnode': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/pbkdf2': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/random': 5.7.0
'@ethersproject/strings': 5.7.0
'@ethersproject/transactions': 5.7.0
aes-js: 3.0.0
scrypt-js: 3.0.1
dev: false
/@ethersproject/keccak256/5.6.1:
resolution: {integrity: sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==}
dependencies:
@ -811,16 +956,33 @@ packages:
js-sha3: 0.8.0
dev: false
/@ethersproject/keccak256/5.7.0:
resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==}
dependencies:
'@ethersproject/bytes': 5.7.0
js-sha3: 0.8.0
dev: false
/@ethersproject/logger/5.6.0:
resolution: {integrity: sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==}
dev: false
/@ethersproject/logger/5.7.0:
resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==}
dev: false
/@ethersproject/networks/5.6.4:
resolution: {integrity: sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==}
dependencies:
'@ethersproject/logger': 5.6.0
dev: false
/@ethersproject/networks/5.7.0:
resolution: {integrity: sha512-MG6oHSQHd4ebvJrleEQQ4HhVu8Ichr0RDYEfHzsVAVjHNM+w36x9wp9r+hf1JstMXtseXDtkiVoARAG6M959AA==}
dependencies:
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/pbkdf2/5.6.1:
resolution: {integrity: sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==}
dependencies:
@ -828,12 +990,25 @@ packages:
'@ethersproject/sha2': 5.6.1
dev: false
/@ethersproject/pbkdf2/5.7.0:
resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/sha2': 5.7.0
dev: false
/@ethersproject/properties/5.6.0:
resolution: {integrity: sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==}
dependencies:
'@ethersproject/logger': 5.6.0
dev: false
/@ethersproject/properties/5.7.0:
resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==}
dependencies:
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/providers/5.6.8:
resolution: {integrity: sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==}
dependencies:
@ -862,6 +1037,34 @@ packages:
- utf-8-validate
dev: false
/@ethersproject/providers/5.7.0:
resolution: {integrity: sha512-+TTrrINMzZ0aXtlwO/95uhAggKm4USLm1PbeCBR/3XZ7+Oey+3pMyddzZEyRhizHpy1HXV0FRWRMI1O3EGYibA==}
dependencies:
'@ethersproject/abstract-provider': 5.7.0
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/address': 5.7.0
'@ethersproject/base64': 5.7.0
'@ethersproject/basex': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/constants': 5.7.0
'@ethersproject/hash': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/networks': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/random': 5.7.0
'@ethersproject/rlp': 5.7.0
'@ethersproject/sha2': 5.7.0
'@ethersproject/strings': 5.7.0
'@ethersproject/transactions': 5.7.0
'@ethersproject/web': 5.7.0
bech32: 1.1.4
ws: 7.4.6
transitivePeerDependencies:
- bufferutil
- utf-8-validate
dev: false
/@ethersproject/random/5.6.1:
resolution: {integrity: sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==}
dependencies:
@ -869,6 +1072,13 @@ packages:
'@ethersproject/logger': 5.6.0
dev: false
/@ethersproject/random/5.7.0:
resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/rlp/5.6.1:
resolution: {integrity: sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==}
dependencies:
@ -876,6 +1086,13 @@ packages:
'@ethersproject/logger': 5.6.0
dev: false
/@ethersproject/rlp/5.7.0:
resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/sha2/5.6.1:
resolution: {integrity: sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==}
dependencies:
@ -884,6 +1101,14 @@ packages:
hash.js: 1.1.7
dev: false
/@ethersproject/sha2/5.7.0:
resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
hash.js: 1.1.7
dev: false
/@ethersproject/signing-key/5.6.2:
resolution: {integrity: sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==}
dependencies:
@ -895,6 +1120,17 @@ packages:
hash.js: 1.1.7
dev: false
/@ethersproject/signing-key/5.7.0:
resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
bn.js: 5.2.1
elliptic: 6.5.4
hash.js: 1.1.7
dev: false
/@ethersproject/solidity/5.6.1:
resolution: {integrity: sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==}
dependencies:
@ -906,6 +1142,17 @@ packages:
'@ethersproject/strings': 5.6.1
dev: false
/@ethersproject/solidity/5.7.0:
resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==}
dependencies:
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/sha2': 5.7.0
'@ethersproject/strings': 5.7.0
dev: false
/@ethersproject/strings/5.6.1:
resolution: {integrity: sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==}
dependencies:
@ -914,6 +1161,14 @@ packages:
'@ethersproject/logger': 5.6.0
dev: false
/@ethersproject/strings/5.7.0:
resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/constants': 5.7.0
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/transactions/5.6.2:
resolution: {integrity: sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==}
dependencies:
@ -928,6 +1183,20 @@ packages:
'@ethersproject/signing-key': 5.6.2
dev: false
/@ethersproject/transactions/5.7.0:
resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==}
dependencies:
'@ethersproject/address': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/constants': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/rlp': 5.7.0
'@ethersproject/signing-key': 5.7.0
dev: false
/@ethersproject/units/5.6.1:
resolution: {integrity: sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==}
dependencies:
@ -936,6 +1205,14 @@ packages:
'@ethersproject/logger': 5.6.0
dev: false
/@ethersproject/units/5.7.0:
resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==}
dependencies:
'@ethersproject/bignumber': 5.7.0
'@ethersproject/constants': 5.7.0
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/wallet/5.6.2:
resolution: {integrity: sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==}
dependencies:
@ -956,6 +1233,26 @@ packages:
'@ethersproject/wordlists': 5.6.1
dev: false
/@ethersproject/wallet/5.7.0:
resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==}
dependencies:
'@ethersproject/abstract-provider': 5.7.0
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/address': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/hash': 5.7.0
'@ethersproject/hdnode': 5.7.0
'@ethersproject/json-wallets': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/random': 5.7.0
'@ethersproject/signing-key': 5.7.0
'@ethersproject/transactions': 5.7.0
'@ethersproject/wordlists': 5.7.0
dev: false
/@ethersproject/web/5.6.1:
resolution: {integrity: sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==}
dependencies:
@ -966,6 +1263,16 @@ packages:
'@ethersproject/strings': 5.6.1
dev: false
/@ethersproject/web/5.7.0:
resolution: {integrity: sha512-ApHcbbj+muRASVDSCl/tgxaH2LBkRMEYfLOLVa0COipx0+nlu0QKet7U2lEg0vdkh8XRSLf2nd1f1Uk9SrVSGA==}
dependencies:
'@ethersproject/base64': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/strings': 5.7.0
dev: false
/@ethersproject/wordlists/5.6.1:
resolution: {integrity: sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==}
dependencies:
@ -976,6 +1283,16 @@ packages:
'@ethersproject/strings': 5.6.1
dev: false
/@ethersproject/wordlists/5.7.0:
resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==}
dependencies:
'@ethersproject/bytes': 5.7.0
'@ethersproject/hash': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/strings': 5.7.0
dev: false
/@floating-ui/core/0.7.3:
resolution: {integrity: sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==}
dev: false
@ -1685,8 +2002,8 @@ packages:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
/@types/lodash/4.14.183:
resolution: {integrity: sha512-UXavyuxzXKMqJPEpFPri6Ku5F9af6ZJXUneHhvQJxavrEjuHkFp2YnDWHcxJiG7hk8ZkWqjcyNeW1s/smZv5cw==}
/@types/lodash/4.14.184:
resolution: {integrity: sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==}
dev: false
/@types/long/4.0.2:
@ -3199,11 +3516,11 @@ packages:
which: 2.0.2
dev: true
/crossbell.js/0.10.17:
resolution: {integrity: sha512-BRgclp6m0QsI9eA48mlBXaIIEBnYYNOW3hJPnegPqqrtaWafSdJhJPLP/qoKY13YdGEQBLszpjivrRYc+GKFhA==}
/crossbell.js/0.10.20:
resolution: {integrity: sha512-OdXWPA2kAETDnKzola8n1aZnwQjvu/3gIMXp4cGD7YnMTTYWALwJyvWVaTya4JnDWhX6xgAtx/ZTExKD6rlUXQ==}
dependencies:
async-retry: 1.3.3
ethers: 5.6.9
ethers: 5.7.0
fetch-undici: 3.0.1
is-ipfs: 6.0.2
query-string: 7.1.1
@ -4315,6 +4632,44 @@ packages:
- utf-8-validate
dev: false
/ethers/5.7.0:
resolution: {integrity: sha512-5Xhzp2ZQRi0Em+0OkOcRHxPzCfoBfgtOQA+RUylSkuHbhTEaQklnYi2hsWbRgs3ztJsXVXd9VKBcO1ScWL8YfA==}
dependencies:
'@ethersproject/abi': 5.7.0
'@ethersproject/abstract-provider': 5.7.0
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/address': 5.7.0
'@ethersproject/base64': 5.7.0
'@ethersproject/basex': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/bytes': 5.7.0
'@ethersproject/constants': 5.7.0
'@ethersproject/contracts': 5.7.0
'@ethersproject/hash': 5.7.0
'@ethersproject/hdnode': 5.7.0
'@ethersproject/json-wallets': 5.7.0
'@ethersproject/keccak256': 5.7.0
'@ethersproject/logger': 5.7.0
'@ethersproject/networks': 5.7.0
'@ethersproject/pbkdf2': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/providers': 5.7.0
'@ethersproject/random': 5.7.0
'@ethersproject/rlp': 5.7.0
'@ethersproject/sha2': 5.7.0
'@ethersproject/signing-key': 5.7.0
'@ethersproject/solidity': 5.7.0
'@ethersproject/strings': 5.7.0
'@ethersproject/transactions': 5.7.0
'@ethersproject/units': 5.7.0
'@ethersproject/wallet': 5.7.0
'@ethersproject/web': 5.7.0
'@ethersproject/wordlists': 5.7.0
transitivePeerDependencies:
- bufferutil
- utf-8-validate
dev: false
/ethjs-unit/0.1.6:
resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==}
engines: {node: '>=6.5.0', npm: '>=3'}
@ -6399,8 +6754,8 @@ packages:
dns-over-http-resolver: 1.2.3
err-code: 3.0.1
is-ip: 3.1.0
multiformats: 9.7.0
uint8arrays: 3.0.0
multiformats: 9.7.1
uint8arrays: 3.1.0
varint: 6.0.0
transitivePeerDependencies:
- node-fetch
@ -7710,7 +8065,7 @@ packages:
dependencies:
elliptic: 6.5.4
node-addon-api: 2.0.2
node-gyp-build: 4.4.0
node-gyp-build: 4.5.0
dev: false
/semver/5.7.1:
@ -8310,23 +8665,21 @@ packages:
engines: {node: '>=12.18'}
dev: false
/unidata.js/0.6.14:
resolution: {integrity: sha512-T6aQfebvrG+Y67z1a5lKHo6cf5yRL5quO9xqphxmFY1wS+0aOdaFc2TDRSdwnOGEWGtr/rEkPVzDiLUGJMpZCw==}
/unidata.js/0.6.16:
resolution: {integrity: sha512-dlIc0B89w97H3YWoisJuOHbUKcGHy0R8QvxPd1/eUdQ/KdKALVjLMQZYnrjs7X1xptUf2LLF0auKwWtU2MaaHg==}
dependencies:
'@types/lodash': 4.14.183
'@types/lodash': 4.14.184
'@urql/core': 2.5.0_graphql@16.5.0
axios: 0.27.2
crossbell.js: 0.10.17
crossbell.js: 0.10.20
ethers: 5.6.9
graphql: 16.5.0
lodash: 4.17.21
lodash-es: 4.17.21
mime: 3.0.0
web3.storage: 4.2.0
transitivePeerDependencies:
- bufferutil
- debug
- encoding
- node-fetch
- supports-color
- utf-8-validate
@ -8764,31 +9117,6 @@ packages:
utf8: 3.0.0
dev: false
/web3.storage/4.2.0:
resolution: {integrity: sha512-s7yf9nR9TsnKyPdijQMq48q7NV9WNZ8AWyMroa1F0ZOVExUpx9DVIxsLCCZRJEuMZsitnLSbvXK2CexMNyYKKg==}
dependencies:
'@ipld/car': 3.2.4
'@web-std/blob': 3.0.4
'@web-std/fetch': 3.0.3
'@web-std/file': 3.0.2
'@web3-storage/parse-link-header': 3.1.0
browser-readablestream-to-it: 1.0.3
carbites: 1.0.6
cborg: 1.9.4
files-from-path: 0.2.6
ipfs-car: 0.7.0
ipns: 0.16.0
libp2p-crypto: 0.21.2
p-retry: 4.6.2
streaming-iterables: 6.2.0
throttled-queue: 2.1.4
uint8arrays: 3.1.0
transitivePeerDependencies:
- encoding
- node-fetch
- supports-color
dev: false
/web3.storage/4.3.0:
resolution: {integrity: sha512-9IKn+4dyF7cMXC9etVzW3qmCV/6sL+Za4kcUUn7D3qRt4s1DrKUGJdAe9VvYcpHwbnnYoKNBu06lGO++daDo8w==}
dependencies:

View File

@ -4,6 +4,7 @@ import { Profile, Note } from "~/lib/types"
import { Disclosure } from "@headlessui/react"
import { ChevronUpIcon } from "@heroicons/react/solid"
import { BlockchainIcon } from "~/components/icons/BlockchainIcon"
import { toIPFS, toGateway } from "~/lib/ipfs-parser"
export const BlockchainInfo: React.FC<{
site?: Profile
@ -97,7 +98,7 @@ export const BlockchainInfo: React.FC<{
href={url}
key={url}
>
{url.replace(IPFS_GATEWAY, "ipfs://")}
{toIPFS(url)}
</a>
)
})
@ -106,10 +107,7 @@ export const BlockchainInfo: React.FC<{
target="_blank"
rel="noreferrer"
className="inline-block mr-4 break-all"
href={site?.metadata?.uri.replace(
"ipfs://",
IPFS_GATEWAY,
)}
href={toGateway(site?.metadata?.uri)}
key={site?.metadata?.uri}
>
{site?.metadata?.uri}

View File

@ -1,6 +1,7 @@
import clsx from "clsx"
import React, { useMemo } from "react"
import { IPFS_GATEWAY } from "~/lib/env"
import { toGateway } from "~/lib/ipfs-parser"
export const Avatar: React.FC<
{
@ -22,10 +23,7 @@ export const Avatar: React.FC<
const image = useMemo(() => {
for (const image of images) {
if (image)
return image
.replace("ipfs://", IPFS_GATEWAY)
.replace("https://gateway.ipfs.io/ipfs/", IPFS_GATEWAY)
if (image) return toGateway(image)
}
}, [images])

13
src/lib/ipfs-parser.ts Normal file
View File

@ -0,0 +1,13 @@
import { IPFS_GATEWAY } from "~/lib/env"
export const toGateway = (url: string) => {
return url
?.replace("ipfs://", IPFS_GATEWAY)
.replace("https://gateway.ipfs.io/ipfs/", IPFS_GATEWAY)
.replace("https://ipfs.io/ipfs/", IPFS_GATEWAY)
.replace("https://cf-ipfs.com/ipfs/", IPFS_GATEWAY)
}
export const toIPFS = (url: string) => {
return url?.replace(IPFS_GATEWAY, "ipfs://")
}

View File

@ -1,18 +1,19 @@
import { Web3Storage } from "web3.storage"
import { IPFS_GATEWAY } from "../lib/env"
import axios from "axios"
export const UploadFile = async (blob: Blob, filename: string) => {
const file = new File([blob], filename)
const web3Storage = new Web3Storage({
token:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6ZXRocjoweDAyMDIwODZmRjU5OUU0Y0YyMzM4MkUzNjg1Y0NmZUEyOGNBODBCOTAiLCJpc3MiOiJ3ZWIzLXN0b3JhZ2UiLCJpYXQiOjE2NTIzNjM1Njk3NDUsIm5hbWUiOiJVbmlkYXRhIn0.XmsAuXvbTj4BFhZlJK4xXfbd0ltVZJCEhqdYcW_kLOo",
} as any)
const cid = await web3Storage.put([file], {
name: file.name,
maxRetries: 3,
wrapWithDirectory: false,
})
export const UploadFile = async (blob: Blob) => {
const formData = new FormData()
formData.append("file", blob)
const res = await axios.post(
"https://ipfs-relay.crossbell.io/upload",
formData,
{
headers: {
"Content-Type": "multipart/form-data",
},
},
)
return {
key: `${IPFS_GATEWAY}${cid}`,
key: res.data.url,
}
}

View File

@ -2,6 +2,7 @@ import { Root } from "rehype-raw"
import { Plugin } from "unified"
import { visit } from "unist-util-visit"
import { getUserContentsUrl } from "~/lib/user-contents"
import { toGateway } from "~/lib/ipfs-parser"
const isExternLink = (url: string) => /^https?:\/\//.test(url)
@ -10,12 +11,16 @@ export const rehypeImage: Plugin<Array<void>, Root> = () => {
visit(tree, { tagName: "img" }, (node) => {
if (!node.properties) return
const url = node.properties.src
let url = node.properties.src
if (!url || typeof url !== "string") {
return
}
const ipfsUrl = toGateway(url)
node.properties.src = ipfsUrl
url = ipfsUrl
if (isExternLink(url)) {
if (!url.startsWith("https:")) {
throw new Error(`External image url must start with https`)

View File

@ -1,6 +1,7 @@
import { Root } from "rehype-raw"
import { Plugin } from "unified"
import { visit } from "unist-util-visit"
import { toGateway } from "~/lib/ipfs-parser"
const isExternLink = (url: string) => /^https?:\/\//.test(url)
@ -9,12 +10,16 @@ export const rehypeExternalLink: Plugin<Array<void>, Root> = () => {
visit(tree, { type: "element", tagName: "a" }, (node) => {
if (!node.properties) return
const url = node.properties.href
let url = node.properties.href
if (!url || typeof url !== "string") {
return
}
const ipfsUrl = toGateway(url)
node.properties.href = ipfsUrl
url = ipfsUrl
if (isExternLink(url)) {
node.properties.target = "_blank"
node.properties.rel = "noopener noreferrer"