Compare commits

..

No commits in common. "main" and "Thunnini/fix-evm-ledger-error" have entirely different histories.

44 changed files with 360 additions and 986 deletions

276
.pnp.cjs generated
View File

@ -34,9 +34,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["@keplr-wallet/proto-types", "npm:0.11.25"],\
["@keplr-wallet/types", "npm:0.11.25"],\
["@next/eslint-plugin-next", "npm:13.0.5"],\
["@sentry/nextjs", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.29.0"],\
["@sentry/nextjs", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.27.0"],\
["@svgr/webpack", "npm:6.5.1"],\
["@types/cors", "npm:2.8.13"],\
["@types/eslint", "npm:8.4.10"],\
["@types/node", "npm:18.11.9"],\
["@types/react", "npm:18.0.25"],\
@ -48,7 +47,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["@typescript-eslint/parser", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:5.45.0"],\
["axios", "npm:0.27.2"],\
["buffer", "npm:6.0.3"],\
["cors", "npm:2.8.5"],\
["crypto", "npm:1.0.1"],\
["eslint", "npm:8.28.0"],\
["eslint-config-next", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:13.0.5"],\
@ -64,7 +62,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["next", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:13.0.5"],\
["prettier", "npm:2.8.0"],\
["react", "npm:18.2.0"],\
["react-countup", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:6.4.0"],\
["react-dom", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:18.2.0"],\
["react-is", "npm:18.2.0"],\
["react-modal", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:3.16.1"],\
@ -3295,34 +3292,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["@rollup/plugin-babel", [\
["npm:6.0.3", {\
"packageLocation": "./.yarn/cache/@rollup-plugin-babel-npm-6.0.3-1259d28dd2-412c1c3bb5.zip/node_modules/@rollup/plugin-babel/",\
"packageDependencies": [\
["@rollup/plugin-babel", "npm:6.0.3"]\
],\
"linkType": "SOFT"\
}],\
["virtual:9555373101f58738ea803ff9e79b0d8b52a66e88c21dac99d127fd080df7e60c5efb4c82f30a042556261bfb95e0c5292626cc000800b004d622753bbf9e02e5#npm:6.0.3", {\
"packageLocation": "./.yarn/__virtual__/@rollup-plugin-babel-virtual-082525a879/0/cache/@rollup-plugin-babel-npm-6.0.3-1259d28dd2-412c1c3bb5.zip/node_modules/@rollup/plugin-babel/",\
"packageDependencies": [\
["@rollup/plugin-babel", "virtual:9555373101f58738ea803ff9e79b0d8b52a66e88c21dac99d127fd080df7e60c5efb4c82f30a042556261bfb95e0c5292626cc000800b004d622753bbf9e02e5#npm:6.0.3"],\
["@babel/core", null],\
["@babel/helper-module-imports", "npm:7.18.6"],\
["@rollup/pluginutils", "virtual:082525a8792b89cbfd614faa6bcd1a9496584eedab2ae9d69d9f4375690e041544351047f44ef6dab868f44ac8fb8bbc2f5d9aa598e4e4521132888b2cfef8a9#npm:5.0.2"],\
["@types/babel__core", null],\
["@types/rollup", null],\
["rollup", null]\
],\
"packagePeers": [\
"@babel/core",\
"@types/babel__core",\
"@types/rollup",\
"rollup"\
],\
"linkType": "HARD"\
}]\
]],\
["@rollup/plugin-sucrase", [\
["npm:4.0.4", {\
"packageLocation": "./.yarn/cache/@rollup-plugin-sucrase-npm-4.0.4-11cf77c62a-ccb01d7eb3.zip/node_modules/@rollup/plugin-sucrase/",\
@ -3331,10 +3300,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
],\
"linkType": "SOFT"\
}],\
["virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:4.0.4", {\
"packageLocation": "./.yarn/__virtual__/@rollup-plugin-sucrase-virtual-c051ec3c0c/0/cache/@rollup-plugin-sucrase-npm-4.0.4-11cf77c62a-ccb01d7eb3.zip/node_modules/@rollup/plugin-sucrase/",\
["virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:4.0.4", {\
"packageLocation": "./.yarn/__virtual__/@rollup-plugin-sucrase-virtual-a5fe52f236/0/cache/@rollup-plugin-sucrase-npm-4.0.4-11cf77c62a-ccb01d7eb3.zip/node_modules/@rollup/plugin-sucrase/",\
"packageDependencies": [\
["@rollup/plugin-sucrase", "virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:4.0.4"],\
["@rollup/plugin-sucrase", "virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:4.0.4"],\
["@rollup/pluginutils", "npm:4.2.1"],\
["@types/rollup", null],\
["rollup", "npm:2.78.0"],\
@ -3355,10 +3324,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
],\
"linkType": "SOFT"\
}],\
["virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:3.0.0", {\
"packageLocation": "./.yarn/__virtual__/@rollup-plugin-virtual-virtual-c251801d05/0/cache/@rollup-plugin-virtual-npm-3.0.0-678cdc8578-2335cabee2.zip/node_modules/@rollup/plugin-virtual/",\
["virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:3.0.0", {\
"packageLocation": "./.yarn/__virtual__/@rollup-plugin-virtual-virtual-683e923f4b/0/cache/@rollup-plugin-virtual-npm-3.0.0-678cdc8578-2335cabee2.zip/node_modules/@rollup/plugin-virtual/",\
"packageDependencies": [\
["@rollup/plugin-virtual", "virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:3.0.0"],\
["@rollup/plugin-virtual", "virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:3.0.0"],\
["@types/rollup", null],\
["rollup", "npm:2.78.0"]\
],\
@ -3378,29 +3347,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["picomatch", "npm:2.3.1"]\
],\
"linkType": "HARD"\
}],\
["npm:5.0.2", {\
"packageLocation": "./.yarn/cache/@rollup-pluginutils-npm-5.0.2-6aa9d0ddd4-edea15e543.zip/node_modules/@rollup/pluginutils/",\
"packageDependencies": [\
["@rollup/pluginutils", "npm:5.0.2"]\
],\
"linkType": "SOFT"\
}],\
["virtual:082525a8792b89cbfd614faa6bcd1a9496584eedab2ae9d69d9f4375690e041544351047f44ef6dab868f44ac8fb8bbc2f5d9aa598e4e4521132888b2cfef8a9#npm:5.0.2", {\
"packageLocation": "./.yarn/__virtual__/@rollup-pluginutils-virtual-7805b1dbc6/0/cache/@rollup-pluginutils-npm-5.0.2-6aa9d0ddd4-edea15e543.zip/node_modules/@rollup/pluginutils/",\
"packageDependencies": [\
["@rollup/pluginutils", "virtual:082525a8792b89cbfd614faa6bcd1a9496584eedab2ae9d69d9f4375690e041544351047f44ef6dab868f44ac8fb8bbc2f5d9aa598e4e4521132888b2cfef8a9#npm:5.0.2"],\
["@types/estree", "npm:1.0.0"],\
["@types/rollup", null],\
["estree-walker", "npm:2.0.2"],\
["picomatch", "npm:2.3.1"],\
["rollup", null]\
],\
"packagePeers": [\
"@types/rollup",\
"rollup"\
],\
"linkType": "HARD"\
}]\
]],\
["@rushstack/eslint-patch", [\
@ -3413,14 +3359,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@sentry/browser", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-browser-npm-7.29.0-93fbe26bf6-136b9d03a9.zip/node_modules/@sentry/browser/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-browser-npm-7.27.0-21601bd9f9-da5e50bd57.zip/node_modules/@sentry/browser/",\
"packageDependencies": [\
["@sentry/browser", "npm:7.29.0"],\
["@sentry/core", "npm:7.29.0"],\
["@sentry/replay", "virtual:93fbe26bf62b342ef21729e6d406a0883ac6b2fc17e249df9fefb2776d07612931a56ff4fa8e79c5a58b9f975dd0395c18b7b90d36df66d3c8e541f31098bb2c#npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/browser", "npm:7.27.0"],\
["@sentry/core", "npm:7.27.0"],\
["@sentry/replay", "virtual:21601bd9f91dad7312f712f5400c693cac4ca00856456090469b4d7eeb106b080cca0a5e44daaf28693eb0205ad0dbe83cb5230d76d15cf004c44ddb74f24ecf#npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["tslib", "npm:1.14.1"]\
],\
"linkType": "HARD"\
@ -3443,24 +3389,24 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@sentry/core", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-core-npm-7.29.0-acfa631d1a-d9330ed352.zip/node_modules/@sentry/core/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-core-npm-7.27.0-72a2ae90aa-36138a8f43.zip/node_modules/@sentry/core/",\
"packageDependencies": [\
["@sentry/core", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/core", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["tslib", "npm:1.14.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["@sentry/integrations", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-integrations-npm-7.29.0-1e78ee183b-fec2b9b790.zip/node_modules/@sentry/integrations/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-integrations-npm-7.27.0-b9d35a9a46-26cc2a10a4.zip/node_modules/@sentry/integrations/",\
"packageDependencies": [\
["@sentry/integrations", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/integrations", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["localforage", "npm:1.10.0"],\
["tslib", "npm:1.14.1"]\
],\
@ -3468,26 +3414,26 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@sentry/nextjs", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-nextjs-npm-7.29.0-32ea7a99ed-53864f15c1.zip/node_modules/@sentry/nextjs/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-nextjs-npm-7.27.0-1e548cf282-fdc0ba40b4.zip/node_modules/@sentry/nextjs/",\
"packageDependencies": [\
["@sentry/nextjs", "npm:7.29.0"]\
["@sentry/nextjs", "npm:7.27.0"]\
],\
"linkType": "SOFT"\
}],\
["virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.29.0", {\
"packageLocation": "./.yarn/__virtual__/@sentry-nextjs-virtual-3a604504e8/0/cache/@sentry-nextjs-npm-7.29.0-32ea7a99ed-53864f15c1.zip/node_modules/@sentry/nextjs/",\
["virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.27.0", {\
"packageLocation": "./.yarn/__virtual__/@sentry-nextjs-virtual-e9c3f44508/0/cache/@sentry-nextjs-npm-7.27.0-1e548cf282-fdc0ba40b4.zip/node_modules/@sentry/nextjs/",\
"packageDependencies": [\
["@sentry/nextjs", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.29.0"],\
["@rollup/plugin-sucrase", "virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:4.0.4"],\
["@rollup/plugin-virtual", "virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:3.0.0"],\
["@sentry/core", "npm:7.29.0"],\
["@sentry/integrations", "npm:7.29.0"],\
["@sentry/node", "npm:7.29.0"],\
["@sentry/react", "virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:7.29.0"],\
["@sentry/tracing", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/nextjs", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.27.0"],\
["@rollup/plugin-sucrase", "virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:4.0.4"],\
["@rollup/plugin-virtual", "virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:3.0.0"],\
["@sentry/core", "npm:7.27.0"],\
["@sentry/integrations", "npm:7.27.0"],\
["@sentry/node", "npm:7.27.0"],\
["@sentry/react", "virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:7.27.0"],\
["@sentry/tracing", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["@sentry/webpack-plugin", "npm:1.20.0"],\
["@types/next", null],\
["@types/react", "npm:18.0.25"],\
@ -3511,13 +3457,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@sentry/node", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-node-npm-7.29.0-4b46c521c4-1669d47dfa.zip/node_modules/@sentry/node/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-node-npm-7.27.0-f1028265b5-a42cb398ed.zip/node_modules/@sentry/node/",\
"packageDependencies": [\
["@sentry/node", "npm:7.29.0"],\
["@sentry/core", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/node", "npm:7.27.0"],\
["@sentry/core", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["cookie", "npm:0.4.2"],\
["https-proxy-agent", "npm:5.0.1"],\
["lru_map", "npm:0.3.3"],\
@ -3527,20 +3473,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@sentry/react", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-react-npm-7.29.0-8919016525-022bf398f2.zip/node_modules/@sentry/react/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-react-npm-7.27.0-17a03112ea-164cefe9ef.zip/node_modules/@sentry/react/",\
"packageDependencies": [\
["@sentry/react", "npm:7.29.0"]\
["@sentry/react", "npm:7.27.0"]\
],\
"linkType": "SOFT"\
}],\
["virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:7.29.0", {\
"packageLocation": "./.yarn/__virtual__/@sentry-react-virtual-9acab97880/0/cache/@sentry-react-npm-7.29.0-8919016525-022bf398f2.zip/node_modules/@sentry/react/",\
["virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:7.27.0", {\
"packageLocation": "./.yarn/__virtual__/@sentry-react-virtual-b11fda8097/0/cache/@sentry-react-npm-7.27.0-17a03112ea-164cefe9ef.zip/node_modules/@sentry/react/",\
"packageDependencies": [\
["@sentry/react", "virtual:3a604504e8aeb5a25f89876693f61efac71df23354cdd05c30fd720452c63e2fd2009e86f2ccfed8beabdfc4c56217629b749f34209c39d40c7a340bdd27b375#npm:7.29.0"],\
["@sentry/browser", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/react", "virtual:e9c3f4450835355c1308c5ec6b0a06961dea09cc1cbf5a2c356d2c2179b00f6666bd54ef0244e47c45a539436800a0d785ea018febc600fdf27dce27b78ada2e#npm:7.27.0"],\
["@sentry/browser", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["@types/react", "npm:18.0.25"],\
["hoist-non-react-statics", "npm:3.3.2"],\
["react", "npm:18.2.0"],\
@ -3554,21 +3500,21 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@sentry/replay", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-replay-npm-7.29.0-e553e78caf-539e18c128.zip/node_modules/@sentry/replay/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-replay-npm-7.27.0-18656992dc-440ac09c9a.zip/node_modules/@sentry/replay/",\
"packageDependencies": [\
["@sentry/replay", "npm:7.29.0"]\
["@sentry/replay", "npm:7.27.0"]\
],\
"linkType": "SOFT"\
}],\
["virtual:93fbe26bf62b342ef21729e6d406a0883ac6b2fc17e249df9fefb2776d07612931a56ff4fa8e79c5a58b9f975dd0395c18b7b90d36df66d3c8e541f31098bb2c#npm:7.29.0", {\
"packageLocation": "./.yarn/__virtual__/@sentry-replay-virtual-b637ba30d9/0/cache/@sentry-replay-npm-7.29.0-e553e78caf-539e18c128.zip/node_modules/@sentry/replay/",\
["virtual:21601bd9f91dad7312f712f5400c693cac4ca00856456090469b4d7eeb106b080cca0a5e44daaf28693eb0205ad0dbe83cb5230d76d15cf004c44ddb74f24ecf#npm:7.27.0", {\
"packageLocation": "./.yarn/__virtual__/@sentry-replay-virtual-8f5e4cea4f/0/cache/@sentry-replay-npm-7.27.0-18656992dc-440ac09c9a.zip/node_modules/@sentry/replay/",\
"packageDependencies": [\
["@sentry/replay", "virtual:93fbe26bf62b342ef21729e6d406a0883ac6b2fc17e249df9fefb2776d07612931a56ff4fa8e79c5a58b9f975dd0395c18b7b90d36df66d3c8e541f31098bb2c#npm:7.29.0"],\
["@sentry/browser", "npm:7.29.0"],\
["@sentry/core", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/replay", "virtual:21601bd9f91dad7312f712f5400c693cac4ca00856456090469b4d7eeb106b080cca0a5e44daaf28693eb0205ad0dbe83cb5230d76d15cf004c44ddb74f24ecf#npm:7.27.0"],\
["@sentry/browser", "npm:7.27.0"],\
["@sentry/core", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["@types/sentry__browser", null]\
],\
"packagePeers": [\
@ -3579,33 +3525,33 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@sentry/tracing", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-tracing-npm-7.29.0-16e145a1cc-7ad9040664.zip/node_modules/@sentry/tracing/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-tracing-npm-7.27.0-7d217c54fa-203a3a6b46.zip/node_modules/@sentry/tracing/",\
"packageDependencies": [\
["@sentry/tracing", "npm:7.29.0"],\
["@sentry/core", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/tracing", "npm:7.27.0"],\
["@sentry/core", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["@sentry/utils", "npm:7.27.0"],\
["tslib", "npm:1.14.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["@sentry/types", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-types-npm-7.29.0-d6d116c884-53815b6666.zip/node_modules/@sentry/types/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-types-npm-7.27.0-67702fc3e1-a22056aa58.zip/node_modules/@sentry/types/",\
"packageDependencies": [\
["@sentry/types", "npm:7.29.0"]\
["@sentry/types", "npm:7.27.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["@sentry/utils", [\
["npm:7.29.0", {\
"packageLocation": "./.yarn/cache/@sentry-utils-npm-7.29.0-5dbf6566da-9914a21296.zip/node_modules/@sentry/utils/",\
["npm:7.27.0", {\
"packageLocation": "./.yarn/cache/@sentry-utils-npm-7.27.0-1935a93244-d01f2d1999.zip/node_modules/@sentry/utils/",\
"packageDependencies": [\
["@sentry/utils", "npm:7.29.0"],\
["@sentry/types", "npm:7.29.0"],\
["@sentry/utils", "npm:7.27.0"],\
["@sentry/types", "npm:7.27.0"],\
["tslib", "npm:1.14.1"]\
],\
"linkType": "HARD"\
@ -4011,16 +3957,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["@types/cors", [\
["npm:2.8.13", {\
"packageLocation": "./.yarn/cache/@types-cors-npm-2.8.13-4b8ac1068f-7ef197ea19.zip/node_modules/@types/cors/",\
"packageDependencies": [\
["@types/cors", "npm:2.8.13"],\
["@types/node", "npm:18.11.9"]\
],\
"linkType": "HARD"\
}]\
]],\
["@types/eslint", [\
["npm:8.4.10", {\
"packageLocation": "./.yarn/cache/@types-eslint-npm-8.4.10-9df5f4bc78-21e009ed9e.zip/node_modules/@types/eslint/",\
@ -5530,17 +5466,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["cors", [\
["npm:2.8.5", {\
"packageLocation": "./.yarn/cache/cors-npm-2.8.5-c9935a2d12-ced838404c.zip/node_modules/cors/",\
"packageDependencies": [\
["cors", "npm:2.8.5"],\
["object-assign", "npm:4.1.1"],\
["vary", "npm:1.1.2"]\
],\
"linkType": "HARD"\
}]\
]],\
["cosmiconfig", [\
["npm:7.1.0", {\
"packageLocation": "./.yarn/cache/cosmiconfig-npm-7.1.0-13a5090bcd-c53bf7befc.zip/node_modules/cosmiconfig/",\
@ -5555,15 +5480,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["countup.js", [\
["npm:2.3.2", {\
"packageLocation": "./.yarn/cache/countup.js-npm-2.3.2-fce559ea32-77bb509cd1.zip/node_modules/countup.js/",\
"packageDependencies": [\
["countup.js", "npm:2.3.2"]\
],\
"linkType": "HARD"\
}]\
]],\
["create-hash", [\
["npm:1.2.0", {\
"packageLocation": "./.yarn/cache/create-hash-npm-1.2.0-afd048e1ce-02a6ae3bb9.zip/node_modules/create-hash/",\
@ -7373,9 +7289,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["@keplr-wallet/proto-types", "npm:0.11.25"],\
["@keplr-wallet/types", "npm:0.11.25"],\
["@next/eslint-plugin-next", "npm:13.0.5"],\
["@sentry/nextjs", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.29.0"],\
["@sentry/nextjs", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:7.27.0"],\
["@svgr/webpack", "npm:6.5.1"],\
["@types/cors", "npm:2.8.13"],\
["@types/eslint", "npm:8.4.10"],\
["@types/node", "npm:18.11.9"],\
["@types/react", "npm:18.0.25"],\
@ -7387,7 +7302,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["@typescript-eslint/parser", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:5.45.0"],\
["axios", "npm:0.27.2"],\
["buffer", "npm:6.0.3"],\
["cors", "npm:2.8.5"],\
["crypto", "npm:1.0.1"],\
["eslint", "npm:8.28.0"],\
["eslint-config-next", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:13.0.5"],\
@ -7403,7 +7317,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["next", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:13.0.5"],\
["prettier", "npm:2.8.0"],\
["react", "npm:18.2.0"],\
["react-countup", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:6.4.0"],\
["react-dom", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:18.2.0"],\
["react-is", "npm:18.2.0"],\
["react-modal", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:3.16.1"],\
@ -9242,30 +9155,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["react-countup", [\
["npm:6.4.0", {\
"packageLocation": "./.yarn/cache/react-countup-npm-6.4.0-d1c6fe7973-259277fa70.zip/node_modules/react-countup/",\
"packageDependencies": [\
["react-countup", "npm:6.4.0"]\
],\
"linkType": "SOFT"\
}],\
["virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:6.4.0", {\
"packageLocation": "./.yarn/__virtual__/react-countup-virtual-9555373101/0/cache/react-countup-npm-6.4.0-d1c6fe7973-259277fa70.zip/node_modules/react-countup/",\
"packageDependencies": [\
["react-countup", "virtual:4b77e00d446246df1ed27001550885fbf1b51be18c660c1b5c357d3d763078ecef2a676194291a120f149b87573081e5af0621dc83cf1f83383639f39ac133c7#npm:6.4.0"],\
["@rollup/plugin-babel", "virtual:9555373101f58738ea803ff9e79b0d8b52a66e88c21dac99d127fd080df7e60c5efb4c82f30a042556261bfb95e0c5292626cc000800b004d622753bbf9e02e5#npm:6.0.3"],\
["@types/react", "npm:18.0.25"],\
["countup.js", "npm:2.3.2"],\
["react", "npm:18.2.0"]\
],\
"packagePeers": [\
"@types/react",\
"react"\
],\
"linkType": "HARD"\
}]\
]],\
["react-dom", [\
["npm:18.2.0", {\
"packageLocation": "./.yarn/cache/react-dom-npm-18.2.0-dd675bca1c-7d323310be.zip/node_modules/react-dom/",\
@ -10661,15 +10550,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["vary", [\
["npm:1.1.2", {\
"packageLocation": "./.yarn/cache/vary-npm-1.1.2-b49f70ae63-ae0123222c.zip/node_modules/vary/",\
"packageDependencies": [\
["vary", "npm:1.1.2"]\
],\
"linkType": "HARD"\
}]\
]],\
["warning", [\
["npm:4.0.3", {\
"packageLocation": "./.yarn/cache/warning-npm-4.0.3-291e921d6d-4f2cb6a957.zip/node_modules/warning/",\

View File

@ -23,8 +23,7 @@ class ErrorBoundary extends Component<Props, State> {
public componentDidCatch(error: Error, errorInfo: ErrorInfo) {
console.error("Uncaught error:", error, errorInfo);
const errorMessage = error.message || error;
captureException(errorMessage);
captureException(error);
}
public render() {

View File

@ -75,7 +75,7 @@ const StyledPrimaryButton = styled.button`
}
`;
export const SpinnerWrapper = styled.div`
const SpinnerWrapper = styled.div`
display: flex;
position: relative;
@ -92,7 +92,7 @@ const spinAnimation = keyframes`
}
`;
export const Spinner = styled.div<{ animationDelay?: string }>`
const Spinner = styled.div<{ animationDelay?: string }>`
display: block;
position: absolute;
top: 0;

View File

@ -1,80 +1,18 @@
import color from "../../styles/color";
import styled from "styled-components";
import { TwitterAuthInfoResponse } from "../../types";
import { FunctionComponent, useEffect, useState } from "react";
import { FunctionComponent } from "react";
import Image from "next/image";
import ICNSIcon from "../../public/images/svg/icns-logo.svg";
interface Props {
isOwner?: boolean;
registeredTwitterName?: string;
twitterProfileInformation?: TwitterAuthInfoResponse | null;
}
export const TwitterProfile: FunctionComponent<Props> = (props) => {
const { isOwner, registeredTwitterName, twitterProfileInformation } = props;
const [isCopied, setIsCopied] = useState<boolean>(false);
const onClickInviteLink = async () => {
await navigator.clipboard.writeText(
`https://app.icns.xyz?referral=${registeredTwitterName}`,
);
setIsCopied(true);
setTimeout(() => {
setIsCopied(false);
}, 1000);
};
const { twitterProfileInformation } = props;
return (
<ProfileContainer color={color.grey["900"]}>
{registeredTwitterName ? (
isCopied ? (
<InviteLinkContainer>
copied
<CopiedIcon
width="14"
height="12"
viewBox="0 0 14 12"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M2 4.92614L6.08333 9.9375L12.5 2.0625"
stroke="current"
strokeWidth="2"
strokeLinecap="square"
/>
</CopiedIcon>
</InviteLinkContainer>
) : (
<InviteLinkContainer onClick={onClickInviteLink}>
copy invite link
<CopyIcon
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="none"
viewBox="0 0 16 16"
>
<path
stroke="current"
strokeLinecap="square"
strokeWidth="1.5"
d="M10.667 2.667h-8v8"
/>
<path
stroke="current"
strokeLinecap="square"
strokeWidth="1.5"
d="M5.417 5.417H13.25V13.25H5.417z"
/>
</CopyIcon>
</InviteLinkContainer>
)
) : null}
<ProfileImageContainer>
<Image
src={twitterProfileInformation?.profile_image_url ?? ""}
@ -86,13 +24,7 @@ export const TwitterProfile: FunctionComponent<Props> = (props) => {
<ProfileContentContainer>
<ProfileNameContainer>
<ProfileName>{twitterProfileInformation?.name}</ProfileName>
{isOwner ? (
<IsOwnerIcon>
<ICNSIcon />
</IsOwnerIcon>
) : null}
{twitterProfileInformation?.name}
</ProfileNameContainer>
<ProfileUserNameContainer>
@{twitterProfileInformation?.username}
@ -126,8 +58,6 @@ export const ProfileContainer = styled.div`
display: flex;
flex-direction: row;
position: relative;
width: 100%;
padding: 1.5rem 2rem;
@ -135,45 +65,6 @@ export const ProfileContainer = styled.div`
background-color: ${(props) => props.color};
`;
const CopyIcon = styled.svg`
stroke: ${color.grey["100"]};
`;
const CopiedIcon = styled.svg`
stroke: ${color.grey["100"]};
`;
export const InviteLinkContainer = styled.div`
display: flex;
flex-direction: row;
align-items: center;
gap: 0.2rem;
position: absolute;
top: 1.75rem;
right: 1.5rem;
font-family: "Inter", serif;
font-style: normal;
font-weight: 600;
font-size: 0.875rem;
line-height: 0.875rem;
text-transform: uppercase;
color: ${color.grey["100"]};
cursor: pointer;
&:hover {
color: ${color.grey["200"]};
${CopyIcon} {
stroke: ${color.grey["200"]};
}
}
`;
export const ProfileContentContainer = styled.div`
display: flex;
flex-direction: column;
@ -196,12 +87,6 @@ export const ProfileImageContainer = styled.div`
`;
export const ProfileNameContainer = styled.div`
display: flex;
flex-direction: row;
align-items: center;
`;
export const ProfileName = styled.div`
font-weight: 600;
font-size: 1.2rem;
line-height: 1.5rem;
@ -209,15 +94,6 @@ export const ProfileName = styled.div`
color: ${color.white};
`;
export const IsOwnerIcon = styled.div`
height: 1px;
background-color: red;
margin-top: 0.1rem;
display: flex;
align-items: center;
`;
export const ProfileUserNameContainer = styled.div`
font-weight: 500;
font-size: 0.8rem;

View File

@ -23,14 +23,3 @@ export const VERIFICATION_THRESHOLD_MESSAGE =
export const INVALID_REFERRAL_ERROR = "Invalid referral:";
export const INVALID_REFERRAL_MESSAGE =
"Make sure that the referrer ICNS name has been registered.";
export const TOO_MANY_CHAINS_IN_LEDGER_ERROR = "Output buffer too small";
export const TOO_MANY_CHAINS_IN_LEDGER_MESSAGE =
"Due to hardware constraints, limited number of chains can be linked at a time(1-2 on Ledger Nano S / 25 on Ledger Nano S+/X). Please select less chains and try again.";
export const EVM_CHAIN_IN_LEDGER_ERROR = "Ledger is unsupported for this chain";
export const EVM_CHAIN_IN_LEDGER_MESSAGE =
"ICNS for Cosmos chains using Ethereum/EVM keys are not supported. Remove EVM-based Cosmos SDK chains and try again.";
export const LEDGER_MAX_REGISTER_ERROR =
"Data is invalid : JSON. Too many tokens";

View File

@ -20,9 +20,6 @@ export const RESOLVER_ADDRESS =
process.env.NEXT_PUBLIC_ICNS_RESOLVER_CONTRACT_ADDRESS ??
"osmo1002awr7frr9wk44lc3vfzt0d2w6vz5z03ql6fszjsjy8vdcvk0sskruz3c";
export const CLAIM_URL =
"https://lcd-osmosis.keplr.app/cosmwasm/wasm/v1/contract/osmo1mypljhatv0prfr9cjzzvamxdf2ctg34xkt50sudxads9zhqnyneqjuvy26/smart/eyJudW1fdG9rZW5zIjp7fX0=";
export const CHAIN_ALLOWLIST =
process.env.NEXT_PUBLIC_CHAIN_ALLOWLIST ||
[

View File

@ -1,26 +0,0 @@
import { useEffect, useRef } from "react";
import useIsomorphicLayoutEffect from "./use-isomorphic-layout-effect";
function useInterval(callback: () => void, delay: number | null) {
const savedCallback = useRef(callback);
// Remember the latest callback if it changes.
useIsomorphicLayoutEffect(() => {
savedCallback.current = callback;
}, [callback]);
// Set up the interval.
useEffect(() => {
// Don't schedule if no delay is specified.
// Note: 0 is a valid value for delay.
if (!delay && delay !== 0) {
return;
}
const id = setInterval(() => savedCallback.current(), delay);
return () => clearInterval(id);
}, [delay]);
}
export default useInterval;

View File

@ -1,6 +0,0 @@
import { useEffect, useLayoutEffect } from "react";
const useIsomorphicLayoutEffect =
typeof window !== "undefined" ? useLayoutEffect : useEffect;
export default useIsomorphicLayoutEffect;

View File

@ -2,11 +2,12 @@
const { withSentryConfig } = require("@sentry/nextjs");
const nextConfig = {
...(!!process.env.NEXT_PUBLIC_SENTRY_DSN && {
sentry: {
hideSourceMaps: true,
},
}),
sentry: {
hideSourceMaps: true,
},
api: {
externalResolver: true,
},
reactStrictMode: false,
swcMinify: true,
compiler: {

View File

@ -15,15 +15,13 @@
"@keplr-wallet/cosmos": "^0.11.25",
"@keplr-wallet/proto-types": "^0.11.25",
"@keplr-wallet/types": "^0.11.25",
"@sentry/nextjs": "^7.29.0",
"@sentry/nextjs": "^7.27.0",
"axios": "^0.27.2",
"buffer": "^6.0.3",
"cors": "^2.8.5",
"crypto": "^1.0.1",
"iron-session": "^6.3.1",
"next": "13.0.5",
"react": "18.2.0",
"react-countup": "^6.4.0",
"react-dom": "18.2.0",
"react-is": "^18.2.0",
"react-modal": "^3.16.1",
@ -35,7 +33,6 @@
"devDependencies": {
"@next/eslint-plugin-next": "^13.0.5",
"@svgr/webpack": "^6.5.1",
"@types/cors": "^2",
"@types/eslint": "^8.4.10",
"@types/node": "18.11.9",
"@types/react": "18.0.25",

View File

@ -58,6 +58,102 @@ export default function App({ Component, pageProps }: AppProps) {
<ThemeProvider theme={pageTheme}>
<Head>
<title>Interchain Name Service</title>
<meta content="Interchain Name Service" property="og:title" />
<meta content="Interchain Name Service" property="twitter:title" />
<meta
content="Your identity for the Interchain. Claim yours today."
property="og:description"
/>
<meta
content="Your identity for the Interchain. Claim yours today."
property="twitter:description"
/>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<meta
content={`${origin}/images/og-image.webp`}
property="twitter:image"
/>
<meta content={`${origin}/images/og-image.webp`} property="og:image" />
<meta content="summary_large_image" name="twitter:card" />
<meta property="og:type" content="website" />
{/* generated favicons */}
<link
rel="apple-touch-icon"
sizes="57x57"
href="/images/favicon/apple-icon-57x57.png"
/>
<link
rel="apple-touch-icon"
sizes="60x60"
href="/images/favicon/apple-icon-60x60.png"
/>
<link
rel="apple-touch-icon"
sizes="72x72"
href="/images/favicon/apple-icon-72x72.png"
/>
<link
rel="apple-touch-icon"
sizes="76x76"
href="/images/favicon/apple-icon-76x76.png"
/>
<link
rel="apple-touch-icon"
sizes="114x114"
href="/images/favicon/apple-icon-114x114.png"
/>
<link
rel="apple-touch-icon"
sizes="120x120"
href="/images/favicon/apple-icon-120x120.png"
/>
<link
rel="apple-touch-icon"
sizes="144x144"
href="/images/favicon/apple-icon-144x144.png"
/>
<link
rel="apple-touch-icon"
sizes="152x152"
href="/images/favicon/apple-icon-152x152.png"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/images/favicon/apple-icon-180x180.png"
/>
<link
rel="icon"
type="image/png"
sizes="192x192"
href="/images/favicon/android-icon-192x192.png"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/images/favicon/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="96x96"
href="/images/favicon/favicon-96x96.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/images/favicon/favicon-16x16.png"
/>
<link rel="manifest" href="/images/favicon/manifest.json" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta
name="msapplication-TileImage"
content="/images/favicon/ms-icon-144x144.png"
/>
<meta name="theme-color" content="#ffffff" />
</Head>
<React.Fragment>
<GlobalStyle />

View File

@ -54,109 +54,6 @@ class MyDocument extends Document {
href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
rel="stylesheet"
/>
<meta content="Interchain Name Service" property="og:title" />
<meta content="Interchain Name Service" name="twitter:title" />
<meta
content="Your identity for the Interchain. Claim yours today."
property="og:description"
/>
<meta
content="Your identity for the Interchain. Claim yours today."
property="twitter:description"
/>
<meta
name="viewport"
content="initial-scale=1.0, width=device-width"
/>
<meta
content={`https://app.icns.xyz/images/og-image.jpg`}
name="twitter:image"
/>
<meta content={`ICNS image`} name="twitter:image:alt" />
<meta
content={`https://app.icns.xyz/images/og-image.jpg`}
property="og:image"
/>
<meta content="summary_large_image" name="twitter:card" />
<meta property="og:type" content="website" />
{/* generated favicons */}
<link
rel="apple-touch-icon"
sizes="57x57"
href="/images/favicon/apple-icon-57x57.png"
/>
<link
rel="apple-touch-icon"
sizes="60x60"
href="/images/favicon/apple-icon-60x60.png"
/>
<link
rel="apple-touch-icon"
sizes="72x72"
href="/images/favicon/apple-icon-72x72.png"
/>
<link
rel="apple-touch-icon"
sizes="76x76"
href="/images/favicon/apple-icon-76x76.png"
/>
<link
rel="apple-touch-icon"
sizes="114x114"
href="/images/favicon/apple-icon-114x114.png"
/>
<link
rel="apple-touch-icon"
sizes="120x120"
href="/images/favicon/apple-icon-120x120.png"
/>
<link
rel="apple-touch-icon"
sizes="144x144"
href="/images/favicon/apple-icon-144x144.png"
/>
<link
rel="apple-touch-icon"
sizes="152x152"
href="/images/favicon/apple-icon-152x152.png"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/images/favicon/apple-icon-180x180.png"
/>
<link
rel="icon"
type="image/png"
sizes="192x192"
href="/images/favicon/android-icon-192x192.png"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/images/favicon/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="96x96"
href="/images/favicon/favicon-96x96.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/images/favicon/favicon-16x16.png"
/>
<link rel="manifest" href="/images/favicon/manifest.json" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta
name="msapplication-TileImage"
content="/images/favicon/ms-icon-144x144.png"
/>
<meta name="theme-color" content="#ffffff" />
</Head>
<body>
<Main />

View File

@ -1,23 +0,0 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { CHAIN_ALLOWLIST } from "../../constants/icns";
import Cors from "cors";
const cors = Cors({
methods: ["GET"],
});
export default async function (req: NextApiRequest, res: NextApiResponse) {
await new Promise((resolve, reject) => {
cors(req, res, (result: any) => {
if (result instanceof Error) {
return reject(result);
}
return resolve(result);
});
});
res.status(200).json({
chains: CHAIN_ALLOWLIST,
});
}

View File

@ -1,7 +1,8 @@
import { captureException } from "@sentry/nextjs";
import { withIronSessionApiRoute } from "iron-session/next";
import type { NextApiRequest, NextApiResponse } from "next";
import { ironOptions } from "../../iron.config";
import { IcnsVerificationResponse } from "../../types";
import { request } from "../../utils/url";
export default withIronSessionApiRoute(async function handler(
req: NextApiRequest,
@ -9,42 +10,30 @@ export default withIronSessionApiRoute(async function handler(
) {
try {
if (!process.env.ICNS_VERIFIER_ORIGIN_LIST) {
const errorMessage = ".env is not set";
console.error(errorMessage);
captureException(errorMessage);
console.log(".env is not set");
return res.status(500).json({ error: "Internal server error" });
}
const verifierOriginList = process.env.ICNS_VERIFIER_ORIGIN_LIST.split(",");
const verificationList = await Promise.allSettled(
verifierOriginList.map(async (verfierOrigin) =>
(
await fetch(`${verfierOrigin}/api/verify_twitter`, {
verifierOriginList.map((verfierOrigin) =>
request<IcnsVerificationResponse>(
`${verfierOrigin}/api/verify_twitter`,
{
method: "post",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(req.body),
})
).json(),
},
),
),
);
const errorTrimmedVerificationList = verificationList.map(
(verification) => ({
...verification,
...(verification.status === "rejected" && {
reason: verification.reason.message || verification.reason,
}),
}),
);
res.status(200).json({
verificationList: errorTrimmedVerificationList,
verificationList,
});
} catch (error) {
console.error(error);
captureException(error);
res.status(500).json({ error: "Internal server error" });
}
},

View File

@ -1,8 +1,8 @@
import { captureException } from "@sentry/nextjs";
import { withIronSessionApiRoute } from "iron-session/next";
import type { NextApiRequest, NextApiResponse } from "next";
import { twitterApiBaseUrl } from "../../constants/twitter";
import { withIronSessionApiRoute } from "iron-session/next";
import { request } from "../../utils/url";
import { ironOptions } from "../../iron.config";
import { twitterApiBaseUrl } from "../../constants/twitter";
export default withIronSessionApiRoute(async function handler(
req: NextApiRequest,
@ -45,74 +45,53 @@ export default withIronSessionApiRoute(async function handler(
params.append("code_verifier", req.session.code_verifier);
}
const {
access_token: accessToken,
refresh_token,
error: authTokenErrorTitle,
error_description: authTokenErrorDesc,
}: TwitterOAuth2TokenResponse = await (
await fetch(`${twitterApiBaseUrl}/oauth2/token`, {
method: "post",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: `Basic ${Buffer.from(
`${process.env.TWITTER_CLIENT_ID}:${process.env.TWITTER_CLIENT_SECRET}`,
).toString("base64")}`,
const { access_token: accessToken, refresh_token } =
await request<TwitterOAuth2TokenResponse>(
`${twitterApiBaseUrl}/oauth2/token`,
{
method: "post",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: `Basic ${Buffer.from(
`${process.env.TWITTER_CLIENT_ID}:${process.env.TWITTER_CLIENT_SECRET}`,
).toString("base64")}`,
},
body: params,
},
body: params,
})
).json();
if (authTokenErrorTitle) {
throw new Error(`${authTokenErrorTitle}: ${authTokenErrorDesc}`);
}
);
req.session.refresh_token = refresh_token;
await req.session.save();
const {
data,
title: usersMeErrorTitle,
detail: usersMeErrorDesc,
}: TwitterUsersMeResponse = await (
await fetch(
`${twitterApiBaseUrl}/users/me?user.fields=profile_image_url,public_metrics,description`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
},
data: {
id,
username,
name,
profile_image_url,
description,
public_metrics,
},
} = await request<TwitterUsersMeResponse>(
`${twitterApiBaseUrl}/users/me?user.fields=profile_image_url,public_metrics,description`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
},
)
).json();
if (usersMeErrorTitle) {
throw new Error(`${usersMeErrorTitle}: ${usersMeErrorDesc}`);
}
const {
id,
username,
name,
profile_image_url,
description,
public_metrics,
} = data || {};
},
);
res.status(200).json({
accessToken,
id,
username,
name,
profile_image_url: profile_image_url?.replace(
"normal.jpg",
"400x400.jpg",
),
profile_image_url: profile_image_url.replace("normal.jpg", "400x400.jpg"),
description,
public_metrics,
});
} catch (error: any) {
} catch (error) {
console.error(error);
captureException(error);
res.status(500).json({ error: error.message });
res.status(500).json({ error: "Internal server error " });
}
},
ironOptions);
@ -123,12 +102,10 @@ interface TwitterOAuth2TokenResponse {
access_token: string;
scope: string;
refresh_token: string;
error?: string;
error_description?: string;
}
interface TwitterUsersMeResponse {
data?: {
data: {
id: string;
username: string;
name: string;
@ -136,11 +113,6 @@ interface TwitterUsersMeResponse {
description: string;
public_metrics: TwitterPublicMetrics;
};
// Error data
title?: string;
detail?: string;
type?: string;
status?: string;
}
export interface TwitterPublicMetrics {

View File

@ -1,14 +1,13 @@
import { captureException } from "@sentry/nextjs";
import type { NextApiRequest, NextApiResponse } from "next";
import crypto from "crypto";
import { withIronSessionApiRoute } from "iron-session/next";
import type { NextApiRequest, NextApiResponse } from "next";
import { base64URLEncode } from "../../utils/encoding";
import { buildQueryString } from "../../utils/url";
import { ironOptions } from "../../iron.config";
import {
twitterOAuthBaseUrl,
twitterOAuthScopes,
} from "../../constants/twitter";
import { ironOptions } from "../../iron.config";
import { base64URLEncode } from "../../utils/encoding";
import { buildQueryString } from "../../utils/url";
export default withIronSessionApiRoute(async function handler(
req: NextApiRequest,
@ -47,7 +46,6 @@ export default withIronSessionApiRoute(async function handler(
res.status(200).json({ authUrl });
} catch (error) {
console.error(error);
captureException(error);
res.status(500).json({ error: "Internal server error" });
}
},

View File

@ -11,10 +11,11 @@ import AlertCircleOutlineIcon from "../../public/images/svg/alert-circle-outline
import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import { TendermintTxTracer } from "@keplr-wallet/cosmos";
import { queryAddressesFromTwitterName } from "../../queries";
import { RegisteredAddresses } from "../../types";
import { SHARE_URL } from "../../constants/twitter";
import { REST_URL, RPC_URL } from "../../constants/icns";
import { RPC_URL } from "../../constants/icns";
export default function CompletePage() {
const router = useRouter();
@ -34,33 +35,19 @@ export default function CompletePage() {
}, [router.query]);
const initialize = async (txHash: string, twitterUserName: string) => {
const txTracer = new TendermintTxTracer(RPC_URL, "/websocket");
try {
for (let i = 0; i < 20; i++) {
// Try to fetch tx response per 3sec, 20times.
await new Promise((resolve) => setTimeout(resolve, 3000));
const result: { code?: number } = await txTracer.traceTx(
Buffer.from(txHash, "hex"),
);
const res = await fetch(`${REST_URL}/cosmos/tx/v1beta1/txs/${txHash}`);
if (!result.code || result.code === 0) {
amplitude.track("complete registration");
if (res.ok && res.status === 200) {
const txRes = await res.json();
if (txRes && txRes.tx_response) {
if (
txRes.tx_response.code == null ||
txRes.tx_response.code === 0
) {
amplitude.track("complete registration");
const addresses = await queryAddressesFromTwitterName(
twitterUserName,
);
setRegisteredAddressed(addresses.data.addresses);
setIsSuccess(true);
break;
}
}
}
const addresses = await queryAddressesFromTwitterName(twitterUserName);
setRegisteredAddressed(addresses.data.addresses);
setIsSuccess(true);
}
} catch (e) {
console.log("error", e);
@ -77,7 +64,7 @@ export default function CompletePage() {
const width = 500;
const height = 700;
window.open(
`${SHARE_URL}?url=https://app.icns.xyz/?referral=${twitterUsername}&text=${shareMessage}`,
`${SHARE_URL}?url=https://app.icns.xyz?referral=${twitterUsername}&text=${shareMessage}`,
"Share Twitter",
`top=${(window.screen.height - height) / 2}, left=${
(window.screen.width - width) / 2

View File

@ -6,23 +6,17 @@ import color from "../styles/color";
// Components
import { ConnectWalletModal } from "../components/connect-wallet-modal";
import {
PrimaryButton,
Spinner,
SpinnerWrapper,
} from "../components/primary-button";
import { PrimaryButton } from "../components/primary-button";
// Image Assets
import { useEffect, useState } from "react";
import { Logo } from "../components/logo";
import { CLAIM_URL, REFERRAL_KEY } from "../constants/icns";
import { REFERRAL_KEY } from "../constants/icns";
import { SELECTED_WALLET_KEY } from "../constants/wallet";
import StarIcon from "../public/images/svg/bg-asset-3.svg";
import CheckIcon from "../public/images/svg/check-icon.svg";
import MainLogo from "../public/images/svg/main-logo.svg";
import MainTitle from "../public/images/svg/main-title.svg";
import CountUp from "react-countup";
import useInterval from "../hooks/use-interval";
export default function Home() {
const [currentReferral, setCurrentReferral] = useState("");
@ -30,8 +24,6 @@ export default function Home() {
const [isConnectWalletModalOpen, setIsConnectWalletModalOpen] =
useState(false);
const [count, setCount] = useState<{ start: number; end: number }>();
const onClickConnectWalletButton = async () => {
amplitude.track("click connect wallet button");
@ -54,46 +46,10 @@ export default function Home() {
localStorage.removeItem(SELECTED_WALLET_KEY);
}, []);
useEffect(() => {
setTimeout(() => {
countUpCallback();
}, 1000);
}, []);
useInterval(async () => {
await countUpCallback();
}, 10000);
const countUpCallback = async () => {
const response: { data: { count: number } } = await (
await fetch(CLAIM_URL)
).json();
setCount({
start: (count?.end ?? 100) - 100,
end: response.data.count,
});
};
return (
<Container>
<Logo />
<CountUpContainer>
{count ? (
<CountUpText>
<CountUp start={count?.start} end={count?.end ?? 0} duration={1} />
</CountUpText>
) : (
<SpinnerWrapper>
<Spinner />
<Spinner />
<Spinner />
<Spinner />
</SpinnerWrapper>
)}
<CountUpDescription>ICNS names claimed so far</CountUpDescription>
</CountUpContainer>
<MainContainer>
<MainTitleContainer>
<MainTitleImageBackground>
@ -194,45 +150,6 @@ const MainContainer = styled.div`
}
`;
const CountUpContainer = styled.div`
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
gap: 1.25rem;
width: calc(25rem - 2px);
height: calc(5rem - 2px);
position: absolute;
margin-top: calc(10rem + 2px);
margin-left: calc(55rem + 2px);
background-color: ${color.black};
`;
const CountUpText = styled.div`
font-family: "Inter", serif;
font-style: normal;
font-weight: 600;
font-size: 1rem;
line-height: 1.2rem;
letter-spacing: 0.46rem;
color: ${color.white};
`;
const CountUpDescription = styled.div`
font-family: "Inter", serif;
font-style: normal;
font-weight: 500;
font-size: 0.875rem;
line-height: 1.1rem;
color: ${color.grey["400"]};
`;
const MainTitleContainer = styled.div`
display: flex;
flex-direction: column;

View File

@ -54,16 +54,11 @@ import {
import {
ACCOUNT_NOT_EXIST_ERROR,
ACCOUNT_NOT_EXIST_MESSAGE,
EVM_CHAIN_IN_LEDGER_ERROR,
EVM_CHAIN_IN_LEDGER_MESSAGE,
INSUFFICIENT_GAS_ERROR,
INSUFFICIENT_GAS_MESSAGE,
INVALID_REFERRAL_ERROR,
INVALID_REFERRAL_MESSAGE,
KEPLR_NOT_FOUND_ERROR,
LEDGER_MAX_REGISTER_ERROR,
TOO_MANY_CHAINS_IN_LEDGER_ERROR,
TOO_MANY_CHAINS_IN_LEDGER_MESSAGE,
TWITTER_LOGIN_ERROR,
VERIFICATION_THRESHOLD_ERROR,
VERIFICATION_THRESHOLD_MESSAGE,
@ -106,8 +101,6 @@ export default function VerificationPage() {
const [searchValue, setSearchValue] = useState("");
const [nftOwnerAddress, setNFTOwnerAddress] = useState("");
// Handle the token id which actually registered.
const [registeredTwitterName, setRegisteredTwitterName] = useState("");
const [isOwner, setIsOwner] = useState(false);
const [isModalOpen, setModalOpen] = useState(false);
@ -211,13 +204,6 @@ export default function VerificationPage() {
isRegistered: "data" in registeredQueryResponse,
});
if (
"data" in registeredQueryResponse &&
registeredQueryResponse.data?.name
) {
setRegisteredTwitterName(registeredQueryResponse.data.name);
}
if ("data" in registeredQueryResponse) {
const ownerOfQueryResponse = await queryOwnerOfTwitterName(
registeredQueryResponse.data.name,
@ -239,12 +225,13 @@ export default function VerificationPage() {
}
} catch (error) {
if (error instanceof Error) {
setErrorMessage({ message: error.message, path: "/" });
setErrorModalOpen(true);
if (error.message === TWITTER_LOGIN_ERROR) {
setErrorMessage({ message: TWITTER_LOGIN_ERROR, path: "/" });
setErrorModalOpen(true);
}
}
console.error(error);
captureException(error);
} finally {
setIsLoadingInit(false);
}
@ -391,22 +378,16 @@ export default function VerificationPage() {
twitterInfo.accessToken,
);
console.log("icnsVerificationList", icnsVerificationList);
icnsVerificationList.forEach((verification) => {
if (verification.status === "fulfilled") {
if (verification.value.errors.length > 0) {
verification.value.errors.forEach((error) => {
const errorMessage = error.message || error;
captureException(errorMessage);
});
captureException(verification.value.errors);
}
}
if (verification.status === "rejected") {
if (verification.reason) {
const errorMessage = verification.reason;
captureException(errorMessage);
captureException(verification.reason);
}
}
});
@ -443,6 +424,8 @@ export default function VerificationPage() {
rest: REST_URL,
};
console.log(aminoMsgs);
const simulated = await simulateMsgs(
chainInfo,
walletKey.bech32Address,
@ -472,7 +455,7 @@ export default function VerificationPage() {
pathname: "complete",
query: {
txHash: Buffer.from(txHash).toString("hex"),
twitterUsername: registeredTwitterName || twitterInfo.username,
twitterUsername: twitterInfo.username,
},
});
}
@ -504,34 +487,17 @@ export default function VerificationPage() {
return;
}
const errorMessage = (error?.response?.data as QueryError).message;
captureException(errorMessage);
captureException(error);
setErrorMessage({
message: errorMessage,
message: (error?.response?.data as QueryError).message,
});
setErrorModalOpen(true);
return;
}
if (error instanceof Error) {
const errorMessage = error.message || error;
console.log(errorMessage);
captureException(errorMessage);
if (
error.message.includes(TOO_MANY_CHAINS_IN_LEDGER_ERROR) ||
error.message.includes(LEDGER_MAX_REGISTER_ERROR)
) {
setErrorMessage({ message: TOO_MANY_CHAINS_IN_LEDGER_MESSAGE });
setErrorModalOpen(true);
return;
}
if (error.message.includes(EVM_CHAIN_IN_LEDGER_ERROR)) {
setErrorMessage({ message: EVM_CHAIN_IN_LEDGER_MESSAGE });
setErrorModalOpen(true);
return;
}
console.log(error.message);
captureException(error);
setErrorMessage({ message: error.message });
setErrorModalOpen(true);
@ -561,11 +527,7 @@ export default function VerificationPage() {
) : (
<ContentContainer>
<BackButton />
<TwitterProfile
isOwner={isOwner}
registeredTwitterName={registeredTwitterName}
twitterProfileInformation={twitterAuthInfo}
/>
<TwitterProfile twitterProfileInformation={twitterAuthInfo} />
<ChainListTitleContainer>
<ChainListTitle>Chain List</ChainListTitle>
<SearchInput

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@ -1,13 +0,0 @@
<svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect y="0.5" width="19" height="19" rx="9.5" fill="#121212"/>
<path d="M3.95654 6.78418H6.28393V10.0425H3.95654V6.78418Z" fill="#FB5232"/>
<rect x="3.95654" y="4.45654" width="2.32738" height="2.32738" rx="1.16369" fill="#FFCDC4"/>
<rect x="7.21484" y="10.042" width="2.32738" height="5.58572" fill="#EBFFBF"/>
<path d="M3.95654 10.042V10.042C5.75607 10.042 7.21488 11.5008 7.21488 13.3003V15.6277H3.95654V10.042Z" fill="#00B86E"/>
<path d="M6.28394 7.2494C6.28394 5.70695 7.53434 4.45654 9.0768 4.45654H15.128V10.0423H9.0768C7.53434 10.0423 6.28394 8.79186 6.28394 7.2494V7.2494Z" fill="#F4CC3E"/>
<path d="M8.61133 7.24966C8.61133 6.99258 8.81973 6.78418 9.07681 6.78418H15.128V7.71513H9.07681C8.81973 7.71513 8.61133 7.50673 8.61133 7.24966V7.24966Z" fill="#121212"/>
<path d="M9.5421 12.8353C9.5421 12.4686 9.61434 12.1054 9.75469 11.7666C9.89505 11.4277 10.1008 11.1198 10.3601 10.8605C10.6195 10.6011 10.9273 10.3954 11.2662 10.2551C11.605 10.1147 11.9682 10.0425 12.335 10.0425L12.335 12.8353H9.5421Z" fill="#BED4FF"/>
<path d="M15.1278 12.835C15.1278 13.2017 15.0556 13.5649 14.9152 13.9037C14.7749 14.2426 14.5692 14.5505 14.3098 14.8098C14.0505 15.0692 13.7426 15.2749 13.4037 15.4152C13.0649 15.5556 12.7017 15.6278 12.335 15.6278L12.335 12.835H15.1278Z" fill="#5A4CFA"/>
<path d="M12.335 10.0425H15.1278L12.335 12.8353V10.0425Z" fill="#BED4FF"/>
<path d="M12.335 15.6279H9.5421L12.335 12.8351V15.6279Z" fill="#5A4CFA"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,5 +1,5 @@
import {
IcnsVerificationResponseOnFrontend,
IcnsVerificationResponse,
TwitterAuthInfoResponse,
TwitterAuthUrlResponse,
} from "../types";
@ -27,18 +27,15 @@ export const verifyTwitterAccount = async (
accessToken: string,
) => {
return (
await request<IcnsVerificationResponseOnFrontend>(
"/api/icns-verification",
{
method: "post",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
claimer: claimer,
authToken: accessToken,
}),
await request<IcnsVerificationResponse>("/api/icns-verification", {
method: "post",
headers: {
"Content-Type": "application/json",
},
)
body: JSON.stringify({
claimer: claimer,
authToken: accessToken,
}),
})
).verificationList;
};

View File

@ -10,7 +10,7 @@ Sentry.init({
enabled: !!SENTRY_DSN,
dsn: SENTRY_DSN,
// Adjust this value in production, or use tracesSampler for greater control
tracesSampleRate: 0.2,
tracesSampleRate: 1.0,
// ...
// Note: if you want to override the automatic release value, do not set a
// `release` value here - use the environment variable `SENTRY_RELEASE`, so

View File

@ -10,7 +10,7 @@ Sentry.init({
enabled: !!SENTRY_DSN,
dsn: SENTRY_DSN,
// Adjust this value in production, or use tracesSampler for greater control
tracesSampleRate: 0.2,
tracesSampleRate: 1.0,
// ...
// Note: if you want to override the automatic release value, do not set a
// `release` value here - use the environment variable `SENTRY_RELEASE`, so

View File

@ -38,30 +38,6 @@ export interface IcnsVerificationResponse {
)[];
}
export interface IcnsVerificationResponseOnFrontend {
verificationList: (
| {
status: "fulfilled";
value: {
errors: Error[];
data: {
// JSON string
verifying_msg: string;
// Base64 encoded
public_key: string;
// Base64 encoded
signature: string;
algorithm: string;
};
};
}
| {
status: "rejected";
reason: string;
}
)[];
}
export interface NameByTwitterIdQueryResponse {
data: {
name: string;

View File

@ -2,28 +2,23 @@ import { TwitterLoginSuccess } from "../types";
import { TWITTER_LOGIN_ERROR } from "../constants/error-message";
import { WALLET_INSTALL_URL } from "../constants/wallet";
export async function request<TResponse>(
export function request<TResponse>(
url: string,
config: RequestInit = {},
customConfig?: {
isErrorIgnore?: boolean;
},
): Promise<TResponse> {
const response = await fetch(url, config);
const data = await response.json();
if (
(!response.ok || data.error || data.errors) &&
!customConfig?.isErrorIgnore
) {
const { error, errors } = data;
const errorMessage =
(error && error.toString()) || (errors && errors.toString());
throw new Error(errorMessage);
}
return data;
return fetch(url, config)
.then((response) => {
if (!response.ok && !customConfig?.isErrorIgnore) {
throw new Error(
`This is an HTTP error: The status is ${response.status} ${response.statusText}`,
);
}
return response.json();
})
.then((data) => data as TResponse);
}
export function buildQueryString(query: Record<string, any>): string {

227
yarn.lock
View File

@ -2090,25 +2090,6 @@ __metadata:
languageName: node
linkType: hard
"@rollup/plugin-babel@npm:^6.0.2":
version: 6.0.3
resolution: "@rollup/plugin-babel@npm:6.0.3"
dependencies:
"@babel/helper-module-imports": ^7.18.6
"@rollup/pluginutils": ^5.0.1
peerDependencies:
"@babel/core": ^7.0.0
"@types/babel__core": ^7.1.9
rollup: ^1.20.0||^2.0.0||^3.0.0
peerDependenciesMeta:
"@types/babel__core":
optional: true
rollup:
optional: true
checksum: 412c1c3bb5dd029cbf0b37315ad54b51ef378b8d2fd91d1ec44d73cade723cec8718b5affa2ce8a8b06660710d11765056fac4068521f18737ce26142506a8b1
languageName: node
linkType: hard
"@rollup/plugin-sucrase@npm:4.0.4":
version: 4.0.4
resolution: "@rollup/plugin-sucrase@npm:4.0.4"
@ -2143,22 +2124,6 @@ __metadata:
languageName: node
linkType: hard
"@rollup/pluginutils@npm:^5.0.1":
version: 5.0.2
resolution: "@rollup/pluginutils@npm:5.0.2"
dependencies:
"@types/estree": ^1.0.0
estree-walker: ^2.0.2
picomatch: ^2.3.1
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0
peerDependenciesMeta:
rollup:
optional: true
checksum: edea15e543bebc7dcac3b0ac8bc7b8e8e6dbd46e2864dbe5dd28072de1fbd5b0e10d545a610c0edaa178e8a7ac432e2a2a52e547ece1308471412caba47db8ce
languageName: node
linkType: hard
"@rushstack/eslint-patch@npm:^1.1.3":
version: 1.2.0
resolution: "@rushstack/eslint-patch@npm:1.2.0"
@ -2166,16 +2131,16 @@ __metadata:
languageName: node
linkType: hard
"@sentry/browser@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/browser@npm:7.29.0"
"@sentry/browser@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/browser@npm:7.27.0"
dependencies:
"@sentry/core": 7.29.0
"@sentry/replay": 7.29.0
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/core": 7.27.0
"@sentry/replay": 7.27.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
tslib: ^1.9.3
checksum: 136b9d03a9ff38e72f4d8fd335f23469341d0095d1f075a36d85ef2cd6bd0763635a7e1cbc7abe14508291e88cffe549eda6016c858564b55c1d4e81ef67882f
checksum: da5e50bd576126cadf4d96aa9485d0108ad047bc94ac9aba982f51ab76f792be4c89dbcca5f9714332d99676d03f18d53a9f3918b380c1ca7e084f7d790b9f7f
languageName: node
linkType: hard
@ -2196,42 +2161,42 @@ __metadata:
languageName: node
linkType: hard
"@sentry/core@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/core@npm:7.29.0"
"@sentry/core@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/core@npm:7.27.0"
dependencies:
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
tslib: ^1.9.3
checksum: d9330ed3528f2328b524cb237e400368dcb6c36b8afb791d28141e98ab5c0b56dc306a65cfc7164108cb5616346dabe793a39a140257f723906dc25a03b7ebcd
checksum: 36138a8f43e3f959a1fe5ddc0f67a3b80248fd7b3fcd4465965b4a75a148d9afdf0f09393da4d61f5c978b24f4243952b9af8acd83bd79f5b669ef3d89ba96c6
languageName: node
linkType: hard
"@sentry/integrations@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/integrations@npm:7.29.0"
"@sentry/integrations@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/integrations@npm:7.27.0"
dependencies:
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
localforage: ^1.8.1
tslib: ^1.9.3
checksum: fec2b9b7902b9b097b5453ae4c797e4efa18ac05a3b539c58d037085e12846f443ebe2e8d916a273ee4df71a29891265db5723b7fd4b5e8287fe5864cb9b2e43
checksum: 26cc2a10a4bb89ff131274efd448709e76b500a78594e7ebddcb2d9dfa533e3534373953f660603c6b21bb2a702d10f6602809f795e891d63aa783a2d3f2188c
languageName: node
linkType: hard
"@sentry/nextjs@npm:^7.29.0":
version: 7.29.0
resolution: "@sentry/nextjs@npm:7.29.0"
"@sentry/nextjs@npm:^7.27.0":
version: 7.27.0
resolution: "@sentry/nextjs@npm:7.27.0"
dependencies:
"@rollup/plugin-sucrase": 4.0.4
"@rollup/plugin-virtual": 3.0.0
"@sentry/core": 7.29.0
"@sentry/integrations": 7.29.0
"@sentry/node": 7.29.0
"@sentry/react": 7.29.0
"@sentry/tracing": 7.29.0
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/core": 7.27.0
"@sentry/integrations": 7.27.0
"@sentry/node": 7.27.0
"@sentry/react": 7.27.0
"@sentry/tracing": 7.27.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
"@sentry/webpack-plugin": 1.20.0
chalk: 3.0.0
rollup: 2.78.0
@ -2243,79 +2208,79 @@ __metadata:
peerDependenciesMeta:
webpack:
optional: true
checksum: 53864f15c199c810b3efa21bcae88a075619d7328b6c70d65660a9e5a01170404a867ddb20a8e7ef7a8fbcfd8d8d23a2bb5399f0d7e9bddb30af7aebd4a8ec99
checksum: fdc0ba40b41280ce841e4d841ffe9dd57a6dac6446a47b5c634c9fe48c2a668c1ed6ba4533f37252ba37d034eb2971685b6b56a34f35df0b4edad56069701d56
languageName: node
linkType: hard
"@sentry/node@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/node@npm:7.29.0"
"@sentry/node@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/node@npm:7.27.0"
dependencies:
"@sentry/core": 7.29.0
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/core": 7.27.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
cookie: ^0.4.1
https-proxy-agent: ^5.0.0
lru_map: ^0.3.3
tslib: ^1.9.3
checksum: 1669d47dfaede34080a63f385bbac9908d4de68d055e1b8414554a77b9e89aee9839ce081a01e3301365d327f457c040b685536dba10f6e9eb71bf866fa9d065
checksum: a42cb398ed1e8579229cff2fb1303c9809369046995da3c382e27e28d053360dd007828b94a1ff599f85eacc1e7c822b484fc2875995f7d6bb61ac8bcb464542
languageName: node
linkType: hard
"@sentry/react@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/react@npm:7.29.0"
"@sentry/react@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/react@npm:7.27.0"
dependencies:
"@sentry/browser": 7.29.0
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/browser": 7.27.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
hoist-non-react-statics: ^3.3.2
tslib: ^1.9.3
peerDependencies:
react: 15.x || 16.x || 17.x || 18.x
checksum: 022bf398f2cf43bf5e1f7340cfc02ccfc4cdc026fb3d6805e760d182bcb2601d413cf412beaa37fecbbf0dc554ce38c4a01d9bf38d1591f80cd059ee5235205d
checksum: 164cefe9efee1dc41bd7244c2da5567f3a772717bc537d40b961db1bb9e67458be13b79e0f68be4cbc2970daa868a5d786de682f40c8fbe0d0d42015bef32b81
languageName: node
linkType: hard
"@sentry/replay@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/replay@npm:7.29.0"
"@sentry/replay@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/replay@npm:7.27.0"
dependencies:
"@sentry/core": 7.29.0
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/core": 7.27.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
peerDependencies:
"@sentry/browser": ">=7.24.0"
checksum: 539e18c128bb7966c9d4ea91ebd9cde6d42f42f96fa648d7ead5bff699e643f3792f57a344376586fab26f659f5e1431176faf0e12e6ea53508fd48ba928dd12
checksum: 440ac09c9acb2ced340c61ae56289dabdd006fd48a85545d8459990c93745b5e5cdbfcd0ec8311092a495094c2679239278650d2af373011df29d435333dbc66
languageName: node
linkType: hard
"@sentry/tracing@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/tracing@npm:7.29.0"
"@sentry/tracing@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/tracing@npm:7.27.0"
dependencies:
"@sentry/core": 7.29.0
"@sentry/types": 7.29.0
"@sentry/utils": 7.29.0
"@sentry/core": 7.27.0
"@sentry/types": 7.27.0
"@sentry/utils": 7.27.0
tslib: ^1.9.3
checksum: 7ad9040664a8c65693aba2bdd9cecc8334ce25a296c01727d38649c7141106b78c92142626ce8e44983b4272e0f411010a3df99843a1af6d4f89e4f67ce6f57e
checksum: 203a3a6b467d6ccb12913f3da38e7d224f1d074dc3b3ac2e108a8ae6feff8d60ecb379eedf1b2bd82b1cdd58c11801df5b426e4a15be0a70845c9e2eae05b6ed
languageName: node
linkType: hard
"@sentry/types@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/types@npm:7.29.0"
checksum: 53815b66662a193cfd7024b9fb2477afb8178a771aa59f3bef10578cc940a9d7207722f9f04e2ca65a8e118cef012ac42f4936aa921aacdfc00a914bec88b009
"@sentry/types@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/types@npm:7.27.0"
checksum: a22056aa589da4b17f42548b1a218edbb839d97f865c9214d89dc4a831389ac71c647af087c6f363df28d7adadb0e623ad77a7f3243d411458aafc655714424e
languageName: node
linkType: hard
"@sentry/utils@npm:7.29.0":
version: 7.29.0
resolution: "@sentry/utils@npm:7.29.0"
"@sentry/utils@npm:7.27.0":
version: 7.27.0
resolution: "@sentry/utils@npm:7.27.0"
dependencies:
"@sentry/types": 7.29.0
"@sentry/types": 7.27.0
tslib: ^1.9.3
checksum: 9914a2129692a5713453437d75b957a18ad5a4ef8085776e5499208ad329dea8da27ee2e2b74fdc089a3831b4e2929f8e6c0f3bc75528f41023d85de5077f462
checksum: d01f2d1999b877904df04e521a05a6978a756eeb518b6ca5099edf7888023691ed3b812eb089bd77c92069764b8928d285dd33cf667ab2030a8e590d79ca55da
languageName: node
linkType: hard
@ -2562,15 +2527,6 @@ __metadata:
languageName: node
linkType: hard
"@types/cors@npm:^2":
version: 2.8.13
resolution: "@types/cors@npm:2.8.13"
dependencies:
"@types/node": "*"
checksum: 7ef197ea19d2e5bf1313b8416baa6f3fd6dd887fd70191da1f804f557395357dafd8bc8bed0ac60686923406489262a7c8a525b55748f7b2b8afa686700de907
languageName: node
linkType: hard
"@types/eslint@npm:^8.4.10":
version: 8.4.10
resolution: "@types/eslint@npm:8.4.10"
@ -2581,7 +2537,7 @@ __metadata:
languageName: node
linkType: hard
"@types/estree@npm:*, @types/estree@npm:^1.0.0":
"@types/estree@npm:*":
version: 1.0.0
resolution: "@types/estree@npm:1.0.0"
checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443
@ -3785,16 +3741,6 @@ __metadata:
languageName: node
linkType: hard
"cors@npm:^2.8.5":
version: 2.8.5
resolution: "cors@npm:2.8.5"
dependencies:
object-assign: ^4
vary: ^1
checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006
languageName: node
linkType: hard
"cosmiconfig@npm:^7.0.1":
version: 7.1.0
resolution: "cosmiconfig@npm:7.1.0"
@ -3808,13 +3754,6 @@ __metadata:
languageName: node
linkType: hard
"countup.js@npm:^2.3.2":
version: 2.3.2
resolution: "countup.js@npm:2.3.2"
checksum: 77bb509cd17619568c8d841f9dbba7d75c70948d7f9acd0a1acea80e3894c4b4173e27e8896268c1f53415ebee465229f1e623da5ad759083a618484ac4f9b60
languageName: node
linkType: hard
"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0":
version: 1.2.0
resolution: "create-hash@npm:1.2.0"
@ -4642,7 +4581,7 @@ __metadata:
languageName: node
linkType: hard
"estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2":
"estree-walker@npm:^2.0.1":
version: 2.0.2
resolution: "estree-walker@npm:2.0.2"
checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc
@ -5255,9 +5194,8 @@ __metadata:
"@keplr-wallet/proto-types": ^0.11.25
"@keplr-wallet/types": ^0.11.25
"@next/eslint-plugin-next": ^13.0.5
"@sentry/nextjs": ^7.29.0
"@sentry/nextjs": ^7.27.0
"@svgr/webpack": ^6.5.1
"@types/cors": ^2
"@types/eslint": ^8.4.10
"@types/node": 18.11.9
"@types/react": 18.0.25
@ -5269,7 +5207,6 @@ __metadata:
"@typescript-eslint/parser": ^5.45.0
axios: ^0.27.2
buffer: ^6.0.3
cors: ^2.8.5
crypto: ^1.0.1
eslint: 8.28.0
eslint-config-next: 13.0.5
@ -5285,7 +5222,6 @@ __metadata:
next: 13.0.5
prettier: ^2.8.0
react: 18.2.0
react-countup: ^6.4.0
react-dom: 18.2.0
react-is: ^18.2.0
react-modal: ^3.16.1
@ -6475,7 +6411,7 @@ __metadata:
languageName: node
linkType: hard
"object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
@ -6905,18 +6841,6 @@ __metadata:
languageName: node
linkType: hard
"react-countup@npm:^6.4.0":
version: 6.4.0
resolution: "react-countup@npm:6.4.0"
dependencies:
"@rollup/plugin-babel": ^6.0.2
countup.js: ^2.3.2
peerDependencies:
react: ">= 16.3.0"
checksum: 259277fa70fc778fa3d67b375f5c44fdc3c8e5c9cc73225605f456adff31406966ff00379cb23ec771cb624a70c91c46d8216583c9dfc3fedb69071d31cb3208
languageName: node
linkType: hard
"react-dom@npm:18.2.0":
version: 18.2.0
resolution: "react-dom@npm:18.2.0"
@ -8123,13 +8047,6 @@ __metadata:
languageName: node
linkType: hard
"vary@npm:^1":
version: 1.1.2
resolution: "vary@npm:1.1.2"
checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b
languageName: node
linkType: hard
"warning@npm:^4.0.3":
version: 4.0.3
resolution: "warning@npm:4.0.3"