This commit is contained in:
Jamie Hewitt 2023-05-15 09:59:35 +00:00 committed by GitHub
commit 38a1df4fae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 905 additions and 177 deletions

535
package-lock.json generated
View File

@ -13,9 +13,13 @@
"@oceanprotocol/typographies": "^0.1.0",
"@svgr/webpack": "^7.0.0",
"axios": "^1.1.3",
"chart.js": "^4.3.0",
"dotenv": "^16.0.3",
"next": "12.3.1",
"moment": "^2.29.4",
"next": "13.0.5",
"react": "18.2.0",
"react-chartjs-2": "^5.2.0",
"react-datepicker": "^4.11.0",
"react-dom": "18.2.0",
"swr": "^1.3.0",
"tiny-relative-date": "^1.3.0"
@ -1732,10 +1736,11 @@
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
},
"node_modules/@babel/runtime": {
"version": "7.19.0",
"license": "MIT",
"version": "7.21.5",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
"integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
"dependencies": {
"regenerator-runtime": "^0.13.4"
"regenerator-runtime": "^0.13.11"
},
"engines": {
"node": ">=6.9.0"
@ -2603,9 +2608,15 @@
"@jridgewell/sourcemap-codec": "1.4.14"
}
},
"node_modules/@kurkle/color": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
"integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
},
"node_modules/@next/env": {
"version": "12.3.1",
"license": "MIT"
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.0.5.tgz",
"integrity": "sha512-F3KLtiDrUslAZhTYTh8Zk5ZaavbYwLUn3NYPBnOjAXU8hWm0QVGVzKIOuURQ098ofRU4e9oglf3Sj9pFx5nI5w=="
},
"node_modules/@next/eslint-plugin-next": {
"version": "12.3.1",
@ -2635,9 +2646,9 @@
}
},
"node_modules/@next/swc-android-arm-eabi": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz",
"integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.5.tgz",
"integrity": "sha512-YO691dxHlviy6H0eghgwqn+5kU9J3iQnKERHTDSppqjjGDBl6ab4wz9XfI5AhljjkaTg3TknHoIEWFDoZ4Ve8g==",
"cpu": [
"arm"
],
@ -2650,9 +2661,9 @@
}
},
"node_modules/@next/swc-android-arm64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz",
"integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.5.tgz",
"integrity": "sha512-ugbwffkUmp8cd2afehDC8LtQeFUxElRUBBngfB5UYSWBx18HW4OgzkPFIY8jUBH16zifvGZWXbICXJWDHrOLtw==",
"cpu": [
"arm64"
],
@ -2665,9 +2676,9 @@
}
},
"node_modules/@next/swc-darwin-arm64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz",
"integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.5.tgz",
"integrity": "sha512-mshlh8QOtOalfZbc17uNAftWgqHTKnrv6QUwBe+mpGz04eqsSUzVz1JGZEdIkmuDxOz00cK2NPoc+VHDXh99IQ==",
"cpu": [
"arm64"
],
@ -2680,9 +2691,9 @@
}
},
"node_modules/@next/swc-darwin-x64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz",
"integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.5.tgz",
"integrity": "sha512-SfigOKW4Z2UB3ruUPyvrlDIkcJq1hiw1wvYApWugD+tQsAkYZKEoz+/8emCmeYZ6Gwgi1WHV+z52Oj8u7bEHPg==",
"cpu": [
"x64"
],
@ -2695,9 +2706,9 @@
}
},
"node_modules/@next/swc-freebsd-x64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz",
"integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.5.tgz",
"integrity": "sha512-0NJg8HZr4yG8ynmMGFXQf+Mahvq4ZgBmUwSlLXXymgxEQgH17erH/LoR69uITtW+KTsALgk9axEt5AAabM4ucg==",
"cpu": [
"x64"
],
@ -2710,9 +2721,9 @@
}
},
"node_modules/@next/swc-linux-arm-gnueabihf": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz",
"integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.5.tgz",
"integrity": "sha512-Cye+h3oDT3NDWjACMlRaolL8fokpKie34FlPj9nfoW7bYKmoMBY1d4IO/GgBF+5xEl7HkH0Ny/qex63vQ0pN+A==",
"cpu": [
"arm"
],
@ -2725,9 +2736,9 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz",
"integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.5.tgz",
"integrity": "sha512-5BfDS/VoRDR5QUGG9oedOCEZGmV2zxUVFYLUJVPMSMeIgqkjxWQBiG2BUHZI6/LGk9yvHmjx7BTvtBCLtRg6IQ==",
"cpu": [
"arm64"
],
@ -2740,9 +2751,9 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz",
"integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.5.tgz",
"integrity": "sha512-xenvqlXz+KxVKAB1YR723gnVNszpsCvKZkiFFaAYqDGJ502YuqU2fwLsaSm/ASRizNcBYeo9HPLTyc3r/9cdMQ==",
"cpu": [
"arm64"
],
@ -2755,11 +2766,12 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
"version": "12.3.1",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.5.tgz",
"integrity": "sha512-9Ahi1bbdXwhrWQmOyoTod23/hhK05da/FzodiNqd6drrMl1y7+RujoEcU8Dtw3H1mGWB+yuTlWo8B4Iba8hqiQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
@ -2769,11 +2781,12 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
"version": "12.3.1",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.5.tgz",
"integrity": "sha512-V+1mnh49qmS9fOZxVRbzjhBEz9IUGJ7AQ80JPWAYQM5LI4TxfdiF4APLPvJ52rOmNeTqnVz1bbKtVOso+7EZ4w==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
@ -2783,9 +2796,9 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz",
"integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.5.tgz",
"integrity": "sha512-wRE9rkp7I+/3Jf2T9PFIJOKq3adMWYEFkPOA7XAkUfYbQHlDJm/U5cVCWUsKByyQq5RThwufI91sgd19MfxRxg==",
"cpu": [
"arm64"
],
@ -2798,9 +2811,9 @@
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz",
"integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.5.tgz",
"integrity": "sha512-Q1XQSLEhFuFhkKFdJIGt7cYQ4T3u6P5wrtUNreg5M+7P+fjSiC8+X+Vjcw+oebaacsdl0pWZlK+oACGafush1w==",
"cpu": [
"ia32"
],
@ -2813,9 +2826,9 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz",
"integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.5.tgz",
"integrity": "sha512-t5gRblrwwiNZP6cT7NkxlgxrFgHWtv9ei5vUraCLgBqzvIsa7X+PnarZUeQCXqz6Jg9JSGGT9j8lvzD97UqeJQ==",
"cpu": [
"x64"
],
@ -2874,6 +2887,15 @@
"resolved": "https://registry.npmjs.org/@oceanprotocol/typographies/-/typographies-0.1.0.tgz",
"integrity": "sha512-kMsZsqvzpz9KzVbVZzllwhPoIC3zbqsdRrClagZL/C2PHzgLrKGC1kYn3gPt0RMIFg9ZjrwieKaxlgIK9i9zzg=="
},
"node_modules/@popperjs/core": {
"version": "2.11.7",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
"integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@rushstack/eslint-patch": {
"version": "1.2.0",
"dev": true,
@ -3119,8 +3141,9 @@
}
},
"node_modules/@swc/helpers": {
"version": "0.4.11",
"license": "MIT",
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
"integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
"dependencies": {
"tslib": "^2.4.0"
}
@ -3676,6 +3699,27 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/chart.js": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.0.tgz",
"integrity": "sha512-ynG0E79xGfMaV2xAHdbhwiPLczxnNNnasrmPEXriXsPJGjmhOBYzFVEsB65w2qMDz+CaBJJuJD0inE/ab/h36g==",
"dependencies": {
"@kurkle/color": "^0.3.0"
},
"engines": {
"pnpm": ">=7"
}
},
"node_modules/classnames": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
},
"node_modules/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
"node_modules/color-convert": {
"version": "2.0.1",
"dev": true,
@ -3851,6 +3895,21 @@
"dev": true,
"license": "BSD-2-Clause"
},
"node_modules/date-fns": {
"version": "2.30.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"dependencies": {
"@babel/runtime": "^7.21.0"
},
"engines": {
"node": ">=0.11"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/date-fns"
}
},
"node_modules/debug": {
"version": "4.3.4",
"license": "MIT",
@ -5467,6 +5526,14 @@
"dev": true,
"license": "MIT"
},
"node_modules/moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
},
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@ -5512,42 +5579,42 @@
"license": "MIT"
},
"node_modules/next": {
"version": "12.3.1",
"license": "MIT",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/next/-/next-13.0.5.tgz",
"integrity": "sha512-awpc3DkphyKydwCotcBnuKwh6hMqkT5xdiBK4OatJtOZurDPBYLP62jtM2be/4OunpmwIbsS0Eyv+ZGU97ciEg==",
"dependencies": {
"@next/env": "12.3.1",
"@swc/helpers": "0.4.11",
"@next/env": "13.0.5",
"@swc/helpers": "0.4.14",
"caniuse-lite": "^1.0.30001406",
"postcss": "8.4.14",
"styled-jsx": "5.0.7",
"use-sync-external-store": "1.2.0"
"styled-jsx": "5.1.0"
},
"bin": {
"next": "dist/bin/next"
},
"engines": {
"node": ">=12.22.0"
"node": ">=14.6.0"
},
"optionalDependencies": {
"@next/swc-android-arm-eabi": "12.3.1",
"@next/swc-android-arm64": "12.3.1",
"@next/swc-darwin-arm64": "12.3.1",
"@next/swc-darwin-x64": "12.3.1",
"@next/swc-freebsd-x64": "12.3.1",
"@next/swc-linux-arm-gnueabihf": "12.3.1",
"@next/swc-linux-arm64-gnu": "12.3.1",
"@next/swc-linux-arm64-musl": "12.3.1",
"@next/swc-linux-x64-gnu": "12.3.1",
"@next/swc-linux-x64-musl": "12.3.1",
"@next/swc-win32-arm64-msvc": "12.3.1",
"@next/swc-win32-ia32-msvc": "12.3.1",
"@next/swc-win32-x64-msvc": "12.3.1"
"@next/swc-android-arm-eabi": "13.0.5",
"@next/swc-android-arm64": "13.0.5",
"@next/swc-darwin-arm64": "13.0.5",
"@next/swc-darwin-x64": "13.0.5",
"@next/swc-freebsd-x64": "13.0.5",
"@next/swc-linux-arm-gnueabihf": "13.0.5",
"@next/swc-linux-arm64-gnu": "13.0.5",
"@next/swc-linux-arm64-musl": "13.0.5",
"@next/swc-linux-x64-gnu": "13.0.5",
"@next/swc-linux-x64-musl": "13.0.5",
"@next/swc-win32-arm64-msvc": "13.0.5",
"@next/swc-win32-ia32-msvc": "13.0.5",
"@next/swc-win32-x64-msvc": "13.0.5"
},
"peerDependencies": {
"fibers": ">= 3.1.0",
"node-sass": "^6.0.0 || ^7.0.0",
"react": "^17.0.2 || ^18.0.0-0",
"react-dom": "^17.0.2 || ^18.0.0-0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.3.0"
},
"peerDependenciesMeta": {
@ -5605,7 +5672,6 @@
},
"node_modules/object-assign": {
"version": "4.1.1",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@ -5990,7 +6056,6 @@
},
"node_modules/prop-types": {
"version": "15.8.1",
"dev": true,
"license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
@ -6051,6 +6116,32 @@
"node": ">=0.10.0"
}
},
"node_modules/react-chartjs-2": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz",
"integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==",
"peerDependencies": {
"chart.js": "^4.1.1",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-datepicker": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.11.0.tgz",
"integrity": "sha512-50n93o7mQwBEhg05tbopjFKgs8qgi8VBCAOMC4VqrKut72eAjESc/wXS/k5hRtnP0oe2FCGw7MJuIwh37wuXOw==",
"dependencies": {
"@popperjs/core": "^2.9.2",
"classnames": "^2.2.6",
"date-fns": "^2.24.0",
"prop-types": "^15.7.2",
"react-onclickoutside": "^6.12.2",
"react-popper": "^2.3.0"
},
"peerDependencies": {
"react": "^16.9.0 || ^17 || ^18",
"react-dom": "^16.9.0 || ^17 || ^18"
}
},
"node_modules/react-dom": {
"version": "18.2.0",
"license": "MIT",
@ -6062,11 +6153,42 @@
"react": "^18.2.0"
}
},
"node_modules/react-fast-compare": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz",
"integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg=="
},
"node_modules/react-is": {
"version": "16.13.1",
"dev": true,
"license": "MIT"
},
"node_modules/react-onclickoutside": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz",
"integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==",
"funding": {
"type": "individual",
"url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md"
},
"peerDependencies": {
"react": "^15.5.x || ^16.x || ^17.x || ^18.x",
"react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x"
}
},
"node_modules/react-popper": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz",
"integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==",
"dependencies": {
"react-fast-compare": "^3.0.1",
"warning": "^4.0.2"
},
"peerDependencies": {
"@popperjs/core": "^2.0.0",
"react": "^16.8.0 || ^17 || ^18",
"react-dom": "^16.8.0 || ^17 || ^18"
}
},
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@ -6084,8 +6206,9 @@
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.9",
"license": "MIT"
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"node_modules/regenerator-transform": {
"version": "0.15.1",
@ -6395,8 +6518,12 @@
}
},
"node_modules/styled-jsx": {
"version": "5.0.7",
"license": "MIT",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.0.tgz",
"integrity": "sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ==",
"dependencies": {
"client-only": "0.0.1"
},
"engines": {
"node": ">= 12.0.0"
},
@ -6510,8 +6637,9 @@
}
},
"node_modules/tslib": {
"version": "2.4.0",
"license": "0BSD"
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"node_modules/tsutils": {
"version": "3.21.0",
@ -6655,13 +6783,6 @@
"punycode": "^2.1.0"
}
},
"node_modules/use-sync-external-store": {
"version": "1.2.0",
"license": "MIT",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/utf-8-validate": {
"version": "5.0.10",
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
@ -6677,6 +6798,14 @@
"node": ">=6.14.2"
}
},
"node_modules/warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/which": {
"version": "2.0.2",
"dev": true,
@ -7907,9 +8036,11 @@
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
},
"@babel/runtime": {
"version": "7.19.0",
"version": "7.21.5",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
"integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
"requires": {
"regenerator-runtime": "^0.13.4"
"regenerator-runtime": "^0.13.11"
}
},
"@babel/runtime-corejs3": {
@ -8432,8 +8563,15 @@
"@jridgewell/sourcemap-codec": "1.4.14"
}
},
"@kurkle/color": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
"integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
},
"@next/env": {
"version": "12.3.1"
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.0.5.tgz",
"integrity": "sha512-F3KLtiDrUslAZhTYTh8Zk5ZaavbYwLUn3NYPBnOjAXU8hWm0QVGVzKIOuURQ098ofRU4e9oglf3Sj9pFx5nI5w=="
},
"@next/eslint-plugin-next": {
"version": "12.3.1",
@ -8457,77 +8595,81 @@
}
},
"@next/swc-android-arm-eabi": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz",
"integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.5.tgz",
"integrity": "sha512-YO691dxHlviy6H0eghgwqn+5kU9J3iQnKERHTDSppqjjGDBl6ab4wz9XfI5AhljjkaTg3TknHoIEWFDoZ4Ve8g==",
"optional": true
},
"@next/swc-android-arm64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz",
"integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.5.tgz",
"integrity": "sha512-ugbwffkUmp8cd2afehDC8LtQeFUxElRUBBngfB5UYSWBx18HW4OgzkPFIY8jUBH16zifvGZWXbICXJWDHrOLtw==",
"optional": true
},
"@next/swc-darwin-arm64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz",
"integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.5.tgz",
"integrity": "sha512-mshlh8QOtOalfZbc17uNAftWgqHTKnrv6QUwBe+mpGz04eqsSUzVz1JGZEdIkmuDxOz00cK2NPoc+VHDXh99IQ==",
"optional": true
},
"@next/swc-darwin-x64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz",
"integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.5.tgz",
"integrity": "sha512-SfigOKW4Z2UB3ruUPyvrlDIkcJq1hiw1wvYApWugD+tQsAkYZKEoz+/8emCmeYZ6Gwgi1WHV+z52Oj8u7bEHPg==",
"optional": true
},
"@next/swc-freebsd-x64": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz",
"integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.5.tgz",
"integrity": "sha512-0NJg8HZr4yG8ynmMGFXQf+Mahvq4ZgBmUwSlLXXymgxEQgH17erH/LoR69uITtW+KTsALgk9axEt5AAabM4ucg==",
"optional": true
},
"@next/swc-linux-arm-gnueabihf": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz",
"integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.5.tgz",
"integrity": "sha512-Cye+h3oDT3NDWjACMlRaolL8fokpKie34FlPj9nfoW7bYKmoMBY1d4IO/GgBF+5xEl7HkH0Ny/qex63vQ0pN+A==",
"optional": true
},
"@next/swc-linux-arm64-gnu": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz",
"integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.5.tgz",
"integrity": "sha512-5BfDS/VoRDR5QUGG9oedOCEZGmV2zxUVFYLUJVPMSMeIgqkjxWQBiG2BUHZI6/LGk9yvHmjx7BTvtBCLtRg6IQ==",
"optional": true
},
"@next/swc-linux-arm64-musl": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz",
"integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.5.tgz",
"integrity": "sha512-xenvqlXz+KxVKAB1YR723gnVNszpsCvKZkiFFaAYqDGJ502YuqU2fwLsaSm/ASRizNcBYeo9HPLTyc3r/9cdMQ==",
"optional": true
},
"@next/swc-linux-x64-gnu": {
"version": "12.3.1",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.5.tgz",
"integrity": "sha512-9Ahi1bbdXwhrWQmOyoTod23/hhK05da/FzodiNqd6drrMl1y7+RujoEcU8Dtw3H1mGWB+yuTlWo8B4Iba8hqiQ==",
"optional": true
},
"@next/swc-linux-x64-musl": {
"version": "12.3.1",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.5.tgz",
"integrity": "sha512-V+1mnh49qmS9fOZxVRbzjhBEz9IUGJ7AQ80JPWAYQM5LI4TxfdiF4APLPvJ52rOmNeTqnVz1bbKtVOso+7EZ4w==",
"optional": true
},
"@next/swc-win32-arm64-msvc": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz",
"integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.5.tgz",
"integrity": "sha512-wRE9rkp7I+/3Jf2T9PFIJOKq3adMWYEFkPOA7XAkUfYbQHlDJm/U5cVCWUsKByyQq5RThwufI91sgd19MfxRxg==",
"optional": true
},
"@next/swc-win32-ia32-msvc": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz",
"integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.5.tgz",
"integrity": "sha512-Q1XQSLEhFuFhkKFdJIGt7cYQ4T3u6P5wrtUNreg5M+7P+fjSiC8+X+Vjcw+oebaacsdl0pWZlK+oACGafush1w==",
"optional": true
},
"@next/swc-win32-x64-msvc": {
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz",
"integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.5.tgz",
"integrity": "sha512-t5gRblrwwiNZP6cT7NkxlgxrFgHWtv9ei5vUraCLgBqzvIsa7X+PnarZUeQCXqz6Jg9JSGGT9j8lvzD97UqeJQ==",
"optional": true
},
"@nodelib/fs.scandir": {
@ -8565,6 +8707,11 @@
"resolved": "https://registry.npmjs.org/@oceanprotocol/typographies/-/typographies-0.1.0.tgz",
"integrity": "sha512-kMsZsqvzpz9KzVbVZzllwhPoIC3zbqsdRrClagZL/C2PHzgLrKGC1kYn3gPt0RMIFg9ZjrwieKaxlgIK9i9zzg=="
},
"@popperjs/core": {
"version": "2.11.7",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
"integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw=="
},
"@rushstack/eslint-patch": {
"version": "1.2.0",
"dev": true
@ -8689,7 +8836,9 @@
}
},
"@swc/helpers": {
"version": "0.4.11",
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
"integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
"requires": {
"tslib": "^2.4.0"
}
@ -9050,6 +9199,24 @@
"supports-color": "^7.1.0"
}
},
"chart.js": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.0.tgz",
"integrity": "sha512-ynG0E79xGfMaV2xAHdbhwiPLczxnNNnasrmPEXriXsPJGjmhOBYzFVEsB65w2qMDz+CaBJJuJD0inE/ab/h36g==",
"requires": {
"@kurkle/color": "^0.3.0"
}
},
"classnames": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
},
"client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
"color-convert": {
"version": "2.0.1",
"dev": true,
@ -9173,6 +9340,14 @@
"version": "1.0.8",
"dev": true
},
"date-fns": {
"version": "2.30.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"requires": {
"@babel/runtime": "^7.21.0"
}
},
"debug": {
"version": "4.3.4",
"requires": {
@ -10259,6 +10434,11 @@
"version": "1.2.6",
"dev": true
},
"moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@ -10289,27 +10469,28 @@
"dev": true
},
"next": {
"version": "12.3.1",
"version": "13.0.5",
"resolved": "https://registry.npmjs.org/next/-/next-13.0.5.tgz",
"integrity": "sha512-awpc3DkphyKydwCotcBnuKwh6hMqkT5xdiBK4OatJtOZurDPBYLP62jtM2be/4OunpmwIbsS0Eyv+ZGU97ciEg==",
"requires": {
"@next/env": "12.3.1",
"@next/swc-android-arm-eabi": "12.3.1",
"@next/swc-android-arm64": "12.3.1",
"@next/swc-darwin-arm64": "12.3.1",
"@next/swc-darwin-x64": "12.3.1",
"@next/swc-freebsd-x64": "12.3.1",
"@next/swc-linux-arm-gnueabihf": "12.3.1",
"@next/swc-linux-arm64-gnu": "12.3.1",
"@next/swc-linux-arm64-musl": "12.3.1",
"@next/swc-linux-x64-gnu": "12.3.1",
"@next/swc-linux-x64-musl": "12.3.1",
"@next/swc-win32-arm64-msvc": "12.3.1",
"@next/swc-win32-ia32-msvc": "12.3.1",
"@next/swc-win32-x64-msvc": "12.3.1",
"@swc/helpers": "0.4.11",
"@next/env": "13.0.5",
"@next/swc-android-arm-eabi": "13.0.5",
"@next/swc-android-arm64": "13.0.5",
"@next/swc-darwin-arm64": "13.0.5",
"@next/swc-darwin-x64": "13.0.5",
"@next/swc-freebsd-x64": "13.0.5",
"@next/swc-linux-arm-gnueabihf": "13.0.5",
"@next/swc-linux-arm64-gnu": "13.0.5",
"@next/swc-linux-arm64-musl": "13.0.5",
"@next/swc-linux-x64-gnu": "13.0.5",
"@next/swc-linux-x64-musl": "13.0.5",
"@next/swc-win32-arm64-msvc": "13.0.5",
"@next/swc-win32-ia32-msvc": "13.0.5",
"@next/swc-win32-x64-msvc": "13.0.5",
"@swc/helpers": "0.4.14",
"caniuse-lite": "^1.0.30001406",
"postcss": "8.4.14",
"styled-jsx": "5.0.7",
"use-sync-external-store": "1.2.0"
"styled-jsx": "5.1.0"
}
},
"node-gyp-build": {
@ -10343,8 +10524,7 @@
}
},
"object-assign": {
"version": "4.1.1",
"dev": true
"version": "4.1.1"
},
"object-inspect": {
"version": "1.12.2",
@ -10573,7 +10753,6 @@
},
"prop-types": {
"version": "15.8.1",
"dev": true,
"requires": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@ -10611,6 +10790,25 @@
"loose-envify": "^1.1.0"
}
},
"react-chartjs-2": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz",
"integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==",
"requires": {}
},
"react-datepicker": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.11.0.tgz",
"integrity": "sha512-50n93o7mQwBEhg05tbopjFKgs8qgi8VBCAOMC4VqrKut72eAjESc/wXS/k5hRtnP0oe2FCGw7MJuIwh37wuXOw==",
"requires": {
"@popperjs/core": "^2.9.2",
"classnames": "^2.2.6",
"date-fns": "^2.24.0",
"prop-types": "^15.7.2",
"react-onclickoutside": "^6.12.2",
"react-popper": "^2.3.0"
}
},
"react-dom": {
"version": "18.2.0",
"requires": {
@ -10618,9 +10816,28 @@
"scheduler": "^0.23.0"
}
},
"react-fast-compare": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz",
"integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg=="
},
"react-is": {
"version": "16.13.1",
"dev": true
"version": "16.13.1"
},
"react-onclickoutside": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz",
"integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==",
"requires": {}
},
"react-popper": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz",
"integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==",
"requires": {
"react-fast-compare": "^3.0.1",
"warning": "^4.0.2"
}
},
"regenerate": {
"version": "1.4.2",
@ -10636,7 +10853,9 @@
}
},
"regenerator-runtime": {
"version": "0.13.9"
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"regenerator-transform": {
"version": "0.15.1",
@ -10829,8 +11048,12 @@
"dev": true
},
"styled-jsx": {
"version": "5.0.7",
"requires": {}
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.0.tgz",
"integrity": "sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ==",
"requires": {
"client-only": "0.0.1"
}
},
"supports-color": {
"version": "7.2.0",
@ -10898,7 +11121,9 @@
}
},
"tslib": {
"version": "2.4.0"
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"tsutils": {
"version": "3.21.0",
@ -10982,10 +11207,6 @@
"punycode": "^2.1.0"
}
},
"use-sync-external-store": {
"version": "1.2.0",
"requires": {}
},
"utf-8-validate": {
"version": "5.0.10",
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
@ -10997,6 +11218,14 @@
"node-gyp-build": "^4.3.0"
}
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"requires": {
"loose-envify": "^1.0.0"
}
},
"which": {
"version": "2.0.2",
"dev": true,

View File

@ -16,9 +16,13 @@
"@oceanprotocol/typographies": "^0.1.0",
"@svgr/webpack": "^7.0.0",
"axios": "^1.1.3",
"chart.js": "^4.3.0",
"dotenv": "^16.0.3",
"next": "12.3.1",
"moment": "^2.29.4",
"next": "13.0.5",
"react": "18.2.0",
"react-chartjs-2": "^5.2.0",
"react-datepicker": "^4.11.0",
"react-dom": "18.2.0",
"swr": "^1.3.0",
"tiny-relative-date": "^1.3.0"

79
src/components/Chart.tsx Normal file
View File

@ -0,0 +1,79 @@
import React, { useEffect, useState, ReactElement } from 'react'
import {
Chart as ChartJS,
CategoryScale,
LinearScale,
BarElement,
Title,
Tooltip,
Legend
} from 'chart.js'
import styles from '../styles/Home.module.css'
import { Bar } from 'react-chartjs-2'
ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend)
export default function Chart({
path,
title,
from,
to
}: {
path: string
title: string
from: number
to: number
}): ReactElement {
const [chartData, setChartData] = useState(null)
console.log('from: ', from)
console.log('to: ', to)
const options = {
responsive: true,
plugins: {
legend: {
position: 'top' as const
},
title: {
display: true,
text: title
}
}
}
useEffect(() => {
async function fetchData() {
const res = await fetch(
`http://localhost:8000${path}?since=${from}&limit=${to}`
)
const data = await res.json()
console.log(data)
// Assuming the response data is an object with keys as labels and values as data points
const labels = Object.keys(data)
const datasetData = Object.values(data)
setChartData({
labels: labels,
datasets: [
{
label: 'NFTS Published',
data: datasetData
}
]
})
}
fetchData()
}, [])
if (!chartData) {
return <div>Loading...</div>
}
return (
<div className={styles.card}>
<Bar options={options} data={chartData} className={styles.chart} />
</div>
)
}

View File

@ -0,0 +1,154 @@
.menu {
width: 100%;
padding: calc(var(--spacer) / 2) calc(var(--spacer) / 3);
}
.link1 {
font-size: 100px;
}
.navigation {
order: 3;
margin-top: calc(var(--spacer) / 2);
text-align: right;
border-top: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
margin-left: -1rem;
margin-right: -1rem;
width: calc(100% + 2rem);
}
.actions {
order: 2;
display: flex;
margin-left: auto;
}
.title {
display: none;
}
.navigation {
white-space: nowrap;
overflow-y: hidden;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: none;
}
.navigation::-webkit-scrollbar,
.navigation::-moz-scrollbar {
display: none;
}
.dateSelection {
display: inline;
}
.navigation li {
display: inline-block;
vertical-align: middle;
margin-right: calc(var(--spacer) / 3);
margin-left: calc(var(--spacer) / 3);
}
.link {
display: block;
padding: calc(var(--spacer) / 4) calc(var(--spacer) / 2);
text-transform: uppercase;
color: var(--color-secondary);
font-weight: var(--font-weight-bold);
font-size: var(--font-size-base);
position: relative;
z-index: 1;
}
.actions,
.link:hover,
.link:focus,
.link:active {
color: var(--font-color-text);
}
.link[aria-current],
.link[aria-current]:hover,
.link[aria-current]:focus {
color: var(--font-color-heading);
}
.link:last-child {
padding-right: 0;
}
.link[aria-disabled] {
pointer-events: none;
}
.actions button {
text-transform: none;
}
[aria-expanded='true'] .caret {
transform: rotate(180deg);
}
.badge .caret {
fill: var(--brand-white);
opacity: 0.7;
width: var(--font-size-mini);
height: var(--font-size-mini);
margin-left: calc(var(--spacer) / 12);
}
@media screen and (min-width: 42rem) {
.caret,
svg.caret {
display: inline-block;
}
.navigation {
margin-left: calc(var(--spacer) / 2);
}
}
@media screen and (min-width: 42rem) {
.menu {
padding: calc(var(--spacer) / 2);
}
.navigation {
order: 2;
width: auto;
margin: 0;
text-align: right;
border: none;
}
.actions {
order: 3;
margin-left: auto;
}
}
@media screen and (min-width: 55rem) {
.menu {
padding: var(--spacer);
}
.title {
margin: 0;
display: block;
color: var(--color-secondary);
font-size: var(--font-size-h4);
margin-right: calc(var(--spacer) / 6);
}
}
.versions {
padding: calc(var(--spacer) / 4);
}
.versions .link {
display: inline-block;
margin: 0 calc(var(--spacer) / 4);
padding: 0;
font-size: var(--font-size-small);
}

35
src/components/Menu.tsx Normal file
View File

@ -0,0 +1,35 @@
import React from 'react'
import { useRouter } from 'next/router'
import Link from 'next/link'
import styles from './Menu.module.css'
function MenuLink({ name, path }: { name: string; path: string }) {
const router = useRouter()
const classes =
router?.pathname === path ? `${styles.link} ${styles.active}` : styles.link
return (
<Link href={path} className={classes}>
{name}
</Link>
)
}
export default function Menu() {
return (
<nav className={styles.menu}>
<ul className={styles.navigation}>
<li>
<MenuLink name="Status" path="/" />
</li>
<li>
<MenuLink name="Core Stats" path="/stats" />
</li>
<li>
<MenuLink name="veOcean Stats" path="/veOceanStats" />
</li>
</ul>
</nav>
)
}

52
src/config/coreStats.json Normal file
View File

@ -0,0 +1,52 @@
[
{
"name": "publishedNFT",
"title": "NFTs Published",
"path": "/stats/core/publishedNFT"
},
{
"name": "uniqueConsumers",
"title": "Unique Consumers",
"path": "/stats/core/uniqueConsumers"
},
{
"name": "weeklyUniquePublishMarkets",
"title": "Weekly Unique Publish Markets",
"path": "/stats/core/weeklyUniquePublishMarkets"
},
{
"name": "montlyUniquePublishMarkets",
"title": "Montly Unique Publish Markets",
"path": "/stats/core/montlyUniquePublishMarkets"
},
{
"name": "yearlyUniquePublishMarkets",
"title": "Yearly Unique Publish Markets",
"path": "/stats/core/yearlyUniquePublishMarkets"
},
{
"name": "totalUniquePublishMarkets",
"title": "Total Unique Publish Markets",
"path": "/stats/core/totalUniquePublishMarkets"
},
{
"name": "uniqueConsumeMarkets",
"title": "Unique Consume Markets",
"path": "/stats/core/uniqueConsumeMarkets"
},
{
"name": "freeConsumes",
"title": "Free Consumes",
"path": "/stats/core/freeConsumes"
},
{
"name": "paidConsumes",
"title": "Paid Consumes",
"path": "/stats/core/paidConsumes"
},
{
"name": "oceanConsumes",
"title": "Ocean Consumes",
"path": "/stats/core/oceanConsumes"
}
]

View File

@ -0,0 +1,6 @@
[
{ "title": "Deposits", "path": "/deposits" },
{ "title": "Actions", "path": "/actions" },
{ "title": "Weekly Locked Amount", "path": "/weeklyLockedAmount" },
{ "title": "Allocations", "path": "/allocations" }
]

View File

@ -1,9 +1,15 @@
import '@oceanprotocol/typographies/css/ocean-typo.css'
import '../styles/globals.css'
import type { AppProps } from 'next/app'
import Menu from '../components/Menu'
function MyApp({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />
return (
<>
<Menu />
<Component {...pageProps} />
</>
)
}
export default MyApp

View File

@ -1,35 +1,14 @@
import Head from 'next/head'
import React, { Fragment, ReactElement } from 'react'
import { State } from '../@types'
import styles from '../styles/Home.module.css'
import { getData } from '../utils/getData'
import LogoAsset from '../images/logo.svg'
import CheckAsset from '../images/check.svg'
import GithubAsset from '../images/github.svg'
import addresses from '@oceanprotocol/contracts/addresses/address.json'
import { statusApiUri } from '../../app.config'
import relativeDate from 'tiny-relative-date'
import useSWR from 'swr'
function statusIcon(state: State): ReactElement {
if (state === State.Normal) {
return <CheckAsset className={`${styles.icon} ${styles.check}`} />
} else if (state === State.Outage) {
return <span className={styles.icon}>🚨</span>
} else {
return <span className={styles.icon}>🚧</span>
}
}
function statusStyle(state: State) {
if (state === State.Outage) {
return styles.outage
} else if (state === State.Degraded) {
return styles.degraded
} else {
return styles.normal
}
}
import { statusIcon, statusStyle } from '../utils/statusHelpers'
export default function HomePage(): ReactElement {
const { data, error } = useSWR(statusApiUri, getData, {

66
src/pages/stats.tsx Normal file
View File

@ -0,0 +1,66 @@
import React, { useState } from 'react'
import Head from 'next/head'
import Link from 'next/link'
import styles from '../styles/Home.module.css'
import LogoAsset from '../images/logo.svg'
import Chart from '../components/Chart'
import stats from '../config/coreStats.json'
import DatePicker from 'react-datepicker'
import 'react-datepicker/dist/react-datepicker.css'
export default function Stats() {
const now = new Date()
const sixMonthsAgo = new Date()
sixMonthsAgo.setMonth(now.getMonth() - 6)
const [from, setFrom] = useState(sixMonthsAgo)
const [to, setTo] = useState(now)
return (
<div className={styles.app}>
<Head>
<title>Ocean Protocol Stats</title>
<meta
name="description"
content="Status overview of all deployed components hosted by the Ocean Protocol Foundation."
/>
<link rel="icon" href="/favicon.ico" />
</Head>
<header className={styles.header}>
<LogoAsset className={styles.logo} />
<h1 className={styles.title}>Ocean Protocol Stats</h1>
<p className={styles.description}>
Core stats for usage of Ocean Protocol.
</p>
<div className={styles.dateSelection}>
From:{' '}
<DatePicker
selected={from}
dateFormat="do LLL y"
onChange={(date) => setFrom(date)}
/>
To:{' '}
<DatePicker
selected={to}
dateFormat="do LLL y"
onChange={(date) => setTo(date)}
/>
</div>
</header>{' '}
<main>
<div className={styles.chartGrid}>
{stats.map((chart) => (
<Link href={`/stats/${chart.name}`} key={chart.title}>
<Chart
key={chart.title}
path={chart.path}
title={chart.title}
from={from}
to={to}
/>
</Link>
))}
</div>
</main>
</div>
)
}

View File

@ -0,0 +1,39 @@
import React from 'react'
import Head from 'next/head'
import styles from '../../styles/Home.module.css'
import LogoAsset from '../../images/logo.svg'
import Chart from '../../components/Chart'
import stats from '../../config/coreStats.json'
import { useRouter } from 'next/router'
export default function Stats() {
const router = useRouter()
const chartName = router.query.chartName
const chart = stats.find((chart) => chart.name === chartName)
return (
<div className={styles.app}>
<Head>
<title>Ocean Protocol Stats</title>
<meta
name="description"
content="Status overview of all deployed components hosted by the Ocean Protocol Foundation."
/>
<link rel="icon" href="/favicon.ico" />
</Head>
<header className={styles.header}>
<LogoAsset className={styles.logo} />
<h1 className={styles.title}>Ocean Protocol Stats</h1>
<p className={styles.description}>
Core stats for usage of Ocean Protocol.
</p>
</header>{' '}
<main>
<div className={styles.chartGrid}>
{!chart && <div className={styles.description}>Chart not found</div>}
{chart && <Chart path={chart.path} title={chart.title} />}
</div>
</main>
</div>
)
}

View File

@ -0,0 +1,36 @@
import React from 'react'
import Head from 'next/head'
import styles from '../styles/Home.module.css'
import LogoAsset from '../images/logo.svg'
import Chart from '../components/Chart'
import stats from '../config/veOceanStats.json'
export default function Stats() {
return (
<div className={styles.app}>
<Head>
<title>Ocean Protocol Stats</title>
<meta
name="description"
content="Status overview of all deployed components hosted by the Ocean Protocol Foundation."
/>
<link rel="icon" href="/favicon.ico" />
</Head>
<header className={styles.header}>
<LogoAsset className={styles.logo} />
<h1 className={styles.title}>Ocean Protocol Stats</h1>
<p className={styles.description}>
Core stats for usage of Ocean Protocol.
</p>
</header>{' '}
<main>
<div className={styles.chartGrid}>
{stats.map((chart) => (
<Chart key={chart.title} path={chart.path} title={chart.title} />
))}
</div>
</main>
</div>
)
}

View File

@ -1,5 +1,6 @@
.app {
padding: var(--spacer);
padding-top: 0px;
margin: 0 auto;
background: url('../../node_modules/@oceanprotocol/art/waves/waves.svg')
no-repeat center 13.5rem;
@ -9,6 +10,7 @@
@media screen and (min-width: 50rem) {
.app {
padding: calc(var(--spacer) * 2);
padding-top: 0px;
}
}
@ -45,6 +47,12 @@
gap: var(--spacer);
}
.chartGrid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(40rem, 1fr));
gap: var(--spacer);
}
.networkName {
margin-top: calc(var(--spacer) * 3);
margin-bottom: var(--spacer);
@ -214,3 +222,12 @@
font-family: var(--font-family-base);
font-weight: var(--font-weight-base);
}
.chart {
width: 100%;
height: 300px;
margin: 0 auto;
padding: 0;
border: 0;
display: block;
}

View File

@ -4,6 +4,8 @@ import { Status } from '../@types'
export async function getData(url: string): Promise<{ [key: string]: Status }> {
try {
const response: AxiosResponse<Status[]> = await axios.get(url)
console.log('Got response', response)
console.log('Got data', response.data)
if (!response?.data || response.status !== 200)
throw Error('ERROR: no data recieved')

View File

@ -0,0 +1,24 @@
import { State } from '../@types'
import { ReactElement } from 'react'
import CheckAsset from '../images/check.svg'
import styles from '../styles/Home.module.css'
export function statusIcon(state: State): ReactElement {
if (state === State.Normal) {
return <CheckAsset className={`${styles.icon} ${styles.check}`} />
} else if (state === State.Outage) {
return <span className={styles.icon}>🚨</span>
} else {
return <span className={styles.icon}>🚧</span>
}
}
export function statusStyle(state: State) {
if (state === State.Outage) {
return styles.outage
} else if (state === State.Degraded) {
return styles.degraded
} else {
return styles.normal
}
}