diff --git a/explorer/package-lock.json b/explorer/package-lock.json index 04013463b..4fd3f4c39 100644 --- a/explorer/package-lock.json +++ b/explorer/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@blockworks-foundation/mango-client": "^3.0.24", "@bonfida/bot": "^0.5.3", + "@cloudflare/stream-react": "^1.2.0", "@metamask/jazzicon": "^2.0.0", "@project-serum/serum": "^0.13.60", "@react-hook/debounce": "^4.0.0", @@ -44,6 +45,7 @@ "prettier": "^2.4.1", "react": "^17.0.2", "react-chartjs-2": "^2.11.2", + "react-content-loader": "^6.0.3", "react-countup": "^6.0.0", "react-dom": "^17.0.2", "react-moment": "^1.1.1", @@ -92,6 +94,10 @@ }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, "node_modules/@babel/core/node_modules/debug": { @@ -103,6 +109,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@babel/core/node_modules/ms": { @@ -162,6 +173,9 @@ "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", "semver": "7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { @@ -182,6 +196,9 @@ "@babel/helper-optimise-call-expression": "^7.12.13", "@babel/helper-replace-supers": "^7.13.0", "@babel/helper-split-export-declaration": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { @@ -191,6 +208,9 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { @@ -206,6 +226,9 @@ "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { @@ -217,6 +240,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { @@ -422,6 +450,9 @@ "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-remap-async-to-generator": "^7.13.0", "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { @@ -431,6 +462,9 @@ "dependencies": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-decorators": { @@ -441,6 +475,9 @@ "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-decorators": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { @@ -450,6 +487,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { @@ -459,6 +499,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { @@ -468,6 +511,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { @@ -477,6 +523,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { @@ -486,6 +535,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { @@ -495,6 +547,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { @@ -505,6 +560,9 @@ "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-transform-parameters": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { @@ -514,6 +572,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { @@ -524,6 +585,9 @@ "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { @@ -533,6 +597,9 @@ "dependencies": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { @@ -545,6 +612,9 @@ }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { @@ -553,6 +623,9 @@ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-bigint": { @@ -561,6 +634,9 @@ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { @@ -569,6 +645,9 @@ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-decorators": { @@ -577,6 +656,9 @@ "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { @@ -585,6 +667,9 @@ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { @@ -593,6 +678,9 @@ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-flow": { @@ -601,6 +689,9 @@ "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-import-meta": { @@ -609,6 +700,9 @@ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { @@ -617,6 +711,9 @@ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-jsx": { @@ -625,6 +722,9 @@ "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { @@ -633,6 +733,9 @@ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { @@ -641,6 +744,9 @@ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -649,6 +755,9 @@ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { @@ -657,6 +766,9 @@ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { @@ -665,6 +777,9 @@ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { @@ -673,6 +788,9 @@ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { @@ -681,6 +799,9 @@ "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-typescript": { @@ -689,6 +810,9 @@ "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { @@ -697,6 +821,9 @@ "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { @@ -707,6 +834,9 @@ "@babel/helper-module-imports": "^7.12.13", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-remap-async-to-generator": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { @@ -715,6 +845,9 @@ "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { @@ -723,6 +856,9 @@ "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { @@ -737,6 +873,9 @@ "@babel/helper-replace-supers": "^7.13.0", "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { @@ -745,6 +884,9 @@ "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { @@ -753,6 +895,9 @@ "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { @@ -762,6 +907,9 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { @@ -770,6 +918,9 @@ "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { @@ -779,6 +930,9 @@ "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-flow-strip-types": { @@ -788,6 +942,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-flow": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { @@ -796,6 +953,9 @@ "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { @@ -805,6 +965,9 @@ "dependencies": { "@babel/helper-function-name": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { @@ -813,6 +976,9 @@ "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { @@ -821,6 +987,9 @@ "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { @@ -831,6 +1000,9 @@ "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { @@ -842,6 +1014,9 @@ "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-simple-access": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { @@ -854,6 +1029,9 @@ "@babel/helper-plugin-utils": "^7.12.13", "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-validator-identifier": { @@ -868,6 +1046,9 @@ "dependencies": { "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { @@ -876,6 +1057,9 @@ "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { @@ -884,6 +1068,9 @@ "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { @@ -893,6 +1080,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { @@ -901,6 +1091,9 @@ "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { @@ -909,6 +1102,9 @@ "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-constant-elements": { @@ -917,6 +1113,9 @@ "integrity": "sha512-qmzKVTn46Upvtxv8LQoQ8mTCdUC83AOVQIQm57e9oekLT5cmK9GOMOfcWhe8jMNx4UJXn/UDhVZ/7lGofVNeDQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-display-name": { @@ -925,6 +1124,9 @@ "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx": { @@ -937,6 +1139,9 @@ "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-jsx": "^7.12.13", "@babel/types": "^7.12.17" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-development": { @@ -945,6 +1150,9 @@ "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", "dependencies": { "@babel/plugin-transform-react-jsx": "^7.12.17" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-self": { @@ -953,6 +1161,9 @@ "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-source": { @@ -961,6 +1172,9 @@ "integrity": "sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { @@ -970,6 +1184,9 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { @@ -978,6 +1195,9 @@ "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dependencies": { "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { @@ -986,6 +1206,9 @@ "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-runtime": { @@ -997,6 +1220,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "resolve": "^1.8.1", "semver": "^5.5.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { @@ -1005,6 +1231,9 @@ "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { @@ -1014,6 +1243,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { @@ -1022,6 +1254,9 @@ "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { @@ -1030,6 +1265,9 @@ "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { @@ -1038,6 +1276,9 @@ "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typescript": { @@ -1048,6 +1289,9 @@ "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-typescript": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { @@ -1056,6 +1300,9 @@ "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { @@ -1065,6 +1312,9 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { @@ -1140,6 +1390,9 @@ "babel-plugin-polyfill-regenerator": "^0.1.1", "core-js-compat": "^3.9.0", "semver": "7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env/node_modules/semver": { @@ -1160,6 +1413,9 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-react": { @@ -1172,6 +1428,9 @@ "@babel/plugin-transform-react-jsx": "^7.12.13", "@babel/plugin-transform-react-jsx-development": "^7.12.12", "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-typescript": { @@ -1181,6 +1440,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-transform-typescript": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { @@ -1281,6 +1543,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@babel/traverse/node_modules/ms": { @@ -1634,6 +1901,17 @@ "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" }, + "node_modules/@cloudflare/stream-react": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@cloudflare/stream-react/-/stream-react-1.2.0.tgz", + "integrity": "sha512-uLsKstcNOrTH19UEFxHWUX6h8SM9Ytr1Qyo6dIObuDUQ40g/cJgNnNnFn4gcGWf3zPwXQN3LkRmVol5MU/rU2Q==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16" + } + }, "node_modules/@cnakazawa/watch": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", @@ -1741,6 +2019,18 @@ "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } } }, "node_modules/@emotion/react/node_modules/@babel/runtime": { @@ -1812,6 +2102,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@eslint/eslintrc/node_modules/globals": { @@ -1823,6 +2118,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@eslint/eslintrc/node_modules/ignore": { @@ -1841,22 +2139,26 @@ "node_modules/@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'" }, "node_modules/@hapi/bourne": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" }, "node_modules/@hapi/hoek": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" }, "node_modules/@hapi/joi": { "version": "15.1.1", "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "deprecated": "Switch to 'npm install joi'", "dependencies": { "@hapi/address": "2.x.x", "@hapi/bourne": "1.x.x", @@ -1868,6 +2170,7 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", "dependencies": { "@hapi/hoek": "^8.3.0" } @@ -1993,6 +2296,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/console/node_modules/chalk": { @@ -2005,6 +2311,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/console/node_modules/color-convert": { @@ -2104,6 +2413,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/core/node_modules/chalk": { @@ -2116,6 +2428,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/core/node_modules/color-convert": { @@ -2206,6 +2521,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@jest/core/node_modules/path-exists": { @@ -2241,6 +2559,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@jest/core/node_modules/read-pkg/node_modules/type-fest": { @@ -2260,6 +2581,9 @@ }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@jest/core/node_modules/strip-ansi": { @@ -2322,6 +2646,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/environment/node_modules/chalk": { @@ -2334,6 +2661,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/environment/node_modules/color-convert": { @@ -2411,6 +2741,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/fake-timers/node_modules/chalk": { @@ -2423,6 +2756,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/fake-timers/node_modules/color-convert": { @@ -2497,6 +2833,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/globals/node_modules/chalk": { @@ -2509,6 +2848,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/globals/node_modules/color-convert": { @@ -2607,6 +2949,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/reporters/node_modules/chalk": { @@ -2619,6 +2964,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/reporters/node_modules/color-convert": { @@ -2709,6 +3057,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@jest/reporters/node_modules/path-exists": { @@ -2744,6 +3095,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@jest/reporters/node_modules/read-pkg/node_modules/type-fest": { @@ -2816,6 +3170,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/test-result/node_modules/chalk": { @@ -2828,6 +3185,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/test-result/node_modules/color-convert": { @@ -2929,6 +3289,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/transform/node_modules/chalk": { @@ -2941,6 +3304,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/transform/node_modules/color-convert": { @@ -3002,6 +3368,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/types/node_modules/chalk": { @@ -3014,6 +3383,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/types/node_modules/color-convert": { @@ -3142,6 +3514,9 @@ }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { @@ -3158,6 +3533,36 @@ }, "engines": { "node": ">= 10.x" + }, + "peerDependencies": { + "@types/webpack": "4.x", + "react-refresh": ">=0.8.3 <0.10.0", + "sockjs-client": "^1.4.0", + "type-fest": "^0.13.1", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { @@ -3292,6 +3697,9 @@ }, "engines": { "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^0.70.3" } }, "node_modules/@react-hook/debounce": { @@ -3308,7 +3716,10 @@ "node_modules/@react-hook/latest": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", - "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==" + "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "peerDependencies": { + "react": ">=16.8" + } }, "node_modules/@rollup/plugin-node-resolve": { "version": "7.1.3", @@ -3323,6 +3734,9 @@ }, "engines": { "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, "node_modules/@rollup/plugin-replace": { @@ -3332,6 +3746,9 @@ "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" } }, "node_modules/@rollup/pluginutils": { @@ -3345,6 +3762,9 @@ }, "engines": { "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, "node_modules/@rollup/pluginutils/node_modules/@types/estree": { @@ -3571,6 +3991,20 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3648,6 +4082,10 @@ "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { @@ -3656,6 +4094,10 @@ "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { @@ -3664,6 +4106,10 @@ "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { @@ -3672,6 +4118,10 @@ "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { @@ -3680,6 +4130,10 @@ "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { @@ -3688,6 +4142,10 @@ "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { @@ -3696,6 +4154,10 @@ "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { @@ -3704,6 +4166,10 @@ "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/babel-preset": { @@ -3722,6 +4188,10 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/core": { @@ -3735,6 +4205,10 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/core/node_modules/camelcase": { @@ -3743,6 +4217,9 @@ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@svgr/hast-util-to-babel-ast": { @@ -3754,6 +4231,10 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/plugin-jsx": { @@ -3768,6 +4249,10 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/plugin-svgo": { @@ -3781,6 +4266,10 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/webpack": { @@ -3799,6 +4288,10 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@testing-library/dom": { @@ -3977,6 +4470,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { @@ -4153,6 +4649,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.3.1.tgz", "integrity": "sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==", + "deprecated": "This is a stub types definition. classnames provides its own type definitions, so you do not need this installed.", "dependencies": { "classnames": "*" } @@ -4530,6 +5027,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-3.0.0.tgz", "integrity": "sha512-s+IPvFoEIjKA3RdJz/Z2dGR4gLgysKi8owcnrVwNjgvc01Lk68LJDDsG2GRqegFITcxmvCMYM7bhMpwEMlHmDg==", + "deprecated": "This is a stub types definition. socket.io-client provides its own type definitions, so you do not need this installed.", "dependencies": { "socket.io-client": "*" } @@ -4625,6 +5123,19 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { @@ -4636,6 +5147,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { @@ -4671,6 +5187,13 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" } }, "node_modules/@typescript-eslint/parser": { @@ -4685,6 +5208,18 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/parser/node_modules/debug": { @@ -4696,6 +5231,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@typescript-eslint/parser/node_modules/ms": { @@ -4713,6 +5253,10 @@ }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/types": { @@ -4721,6 +5265,10 @@ "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/typescript-estree": { @@ -4738,6 +5286,15 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { @@ -4749,6 +5306,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { @@ -4780,6 +5342,10 @@ }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@webassemblyjs/ast": { @@ -4999,7 +5565,10 @@ "node_modules/acorn-jsx": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, "node_modules/acorn-walk": { "version": "7.2.0", @@ -5050,17 +5619,27 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "peerDependencies": { + "ajv": ">=5.0.0" + } }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } }, "node_modules/alphanum-sort": { "version": "1.0.2", @@ -5084,6 +5663,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-escapes/node_modules/type-fest": { @@ -5092,6 +5674,9 @@ "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-html": { @@ -5213,6 +5798,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-union": { @@ -5250,6 +5838,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array.prototype.flatmap": { @@ -5264,6 +5855,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/arrify": { @@ -5432,6 +6026,10 @@ }, "bin": { "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, "node_modules/aws-sign2": { @@ -5472,6 +6070,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.7.0", @@ -5482,6 +6081,9 @@ }, "engines": { "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" } }, "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { @@ -5519,6 +6121,9 @@ }, "engines": { "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/babel-jest/node_modules/@jest/types": { @@ -5545,6 +6150,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/babel-jest/node_modules/chalk": { @@ -5557,6 +6165,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/babel-jest/node_modules/color-convert": { @@ -5607,6 +6218,10 @@ }, "engines": { "node": ">= 6.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, "node_modules/babel-loader/node_modules/json5": { @@ -5715,6 +6330,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/babel-plugin-macros/node_modules/path-type": { @@ -5728,7 +6346,10 @@ "node_modules/babel-plugin-named-asset-import": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", - "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==" + "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==", + "peerDependencies": { + "@babel/core": "^7.1.0" + } }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.1.2", @@ -5738,6 +6359,9 @@ "@babel/compat-data": "^7.11.0", "@babel/helper-define-polyfill-provider": "^0.1.0", "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { @@ -5755,6 +6379,9 @@ "dependencies": { "@babel/helper-define-polyfill-provider": "^0.1.0", "core-js-compat": "^3.8.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { @@ -5763,6 +6390,9 @@ "integrity": "sha512-QZlnPDLX2JEXP8RQGeP4owNxRKUAqHD+rdlyRHV8ENeCcI9ni2qT9IzxT9jYW1aZrxCgehD31LztlMaA68zoqQ==", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-syntax-object-rest-spread": { @@ -5801,6 +6431,9 @@ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/babel-preset-jest": { @@ -5813,6 +6446,9 @@ }, "engines": { "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/babel-preset-react-app": { @@ -5844,6 +6480,9 @@ "dependencies": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { @@ -5853,6 +6492,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-numeric-separator": { @@ -5862,6 +6504,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-optional-chaining": { @@ -5872,6 +6517,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-preset-react-app/node_modules/@babel/plugin-transform-react-display-name": { @@ -5880,6 +6528,9 @@ "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-preset-react-app/node_modules/@babel/preset-env": { @@ -5953,6 +6604,9 @@ "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-preset-react-app/node_modules/@babel/preset-react": { @@ -5967,6 +6621,9 @@ "@babel/plugin-transform-react-jsx-self": "^7.12.1", "@babel/plugin-transform-react-jsx-source": "^7.12.1", "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-runtime": { @@ -5981,7 +6638,9 @@ "node_modules/babel-runtime/node_modules/core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true }, "node_modules/babel-runtime/node_modules/regenerator-runtime": { "version": "0.11.1", @@ -6269,7 +6928,15 @@ "node_modules/bootstrap": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", - "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } }, "node_modules/borsh": { "version": "0.4.0", @@ -6403,6 +7070,10 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, "node_modules/bs58": { @@ -6435,6 +7106,20 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -6479,6 +7164,9 @@ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/builtin-status-codes": { @@ -6541,6 +7229,9 @@ }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/cache-base": { @@ -6569,6 +7260,9 @@ "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/caller-callsite": { @@ -6637,7 +7331,11 @@ "node_modules/caniuse-lite": { "version": "1.0.30001230", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", - "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==" + "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/capture-exit": { "version": "2.0.0", @@ -6840,7 +7538,8 @@ "node_modules/circular-json": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", - "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==" + "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor." }, "node_modules/cjs-module-lexer": { "version": "0.6.0", @@ -7265,7 +7964,12 @@ "node_modules/core-js": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.0.tgz", - "integrity": "sha512-PyFBJaLq93FlyYdsndE5VaueA9K5cNB7CGzeCj191YYLhkQM0gdZR2SKihM70oF0wdqKSKClv/tEBOpoRmdOVQ==" + "integrity": "sha512-PyFBJaLq93FlyYdsndE5VaueA9K5cNB7CGzeCj191YYLhkQM0gdZR2SKihM70oF0wdqKSKClv/tEBOpoRmdOVQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, "node_modules/core-js-compat": { "version": "3.9.0", @@ -7274,6 +7978,10 @@ "dependencies": { "browserslist": "^4.16.3", "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat/node_modules/semver": { @@ -7287,7 +7995,12 @@ "node_modules/core-js-pure": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==" + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, "node_modules/core-util-is": { "version": "1.0.2", @@ -7321,6 +8034,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cosmiconfig/node_modules/path-type": { @@ -7425,6 +8141,9 @@ "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/crypto-random-string": { @@ -7538,6 +8257,13 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" } }, "node_modules/css-loader/node_modules/camelcase": { @@ -7546,6 +8272,9 @@ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/css-loader/node_modules/semver": { @@ -7909,6 +8638,9 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deep-is": { @@ -8375,6 +9107,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "hasInstallScript": true, "engines": { "node": ">=0.10.0" } @@ -8409,6 +9142,9 @@ "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, "node_modules/emoji-regex": { @@ -8465,6 +9201,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/engine.io-client/node_modules/ms": { @@ -8478,6 +9219,18 @@ "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", "engines": { "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/engine.io-parser": { @@ -8608,6 +9361,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-to-primitive": { @@ -8621,6 +9377,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es5-ext": { @@ -8694,8 +9453,7 @@ "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "optionator": "^0.8.1" }, "bin": { "escodegen": "bin/escodegen.js", @@ -8703,6 +9461,9 @@ }, "engines": { "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, "node_modules/escodegen/node_modules/levn": { @@ -8812,6 +9573,9 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-react-app": { @@ -8823,6 +9587,27 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0", + "@typescript-eslint/parser": "^4.0.0", + "babel-eslint": "^10.0.0", + "eslint": "^7.5.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jest": "^24.0.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react-hooks": "^4.0.8", + "eslint-plugin-testing-library": "^3.9.0" + }, + "peerDependenciesMeta": { + "eslint-plugin-jest": { + "optional": true + }, + "eslint-plugin-testing-library": { + "optional": true + } } }, "node_modules/eslint-import-resolver-node": { @@ -8928,6 +9713,9 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.1.0" } }, "node_modules/eslint-plugin-import": { @@ -8951,6 +9739,9 @@ }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -9104,6 +9895,9 @@ }, "engines": { "node": ">=10" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/eslint-plugin-jsx-a11y": { @@ -9125,6 +9919,9 @@ }, "engines": { "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { @@ -9151,6 +9948,9 @@ }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" } }, "node_modules/eslint-plugin-react-hooks": { @@ -9159,6 +9959,9 @@ "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", "engines": { "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "node_modules/eslint-plugin-react/node_modules/doctrine": { @@ -9182,6 +9985,9 @@ "engines": { "node": "^10.12.0 || >=12.0.0", "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^5 || ^6 || ^7" } }, "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/experimental-utils": { @@ -9197,6 +10003,13 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" } }, "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { @@ -9205,6 +10018,10 @@ "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { @@ -9223,6 +10040,15 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { @@ -9234,6 +10060,10 @@ }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/eslint-plugin-testing-library/node_modules/debug": { @@ -9245,6 +10075,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys": { @@ -9295,6 +10130,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { @@ -9326,6 +10164,14 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0", + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { @@ -9339,6 +10185,10 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/eslint/node_modules/@babel/code-frame": { @@ -9358,6 +10208,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/eslint/node_modules/chalk": { @@ -9370,6 +10223,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/eslint/node_modules/color-convert": { @@ -9410,6 +10266,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/eslint/node_modules/globals": { @@ -9421,6 +10282,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/has-flag": { @@ -9763,6 +10627,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/expect/node_modules/chalk": { @@ -9775,6 +10642,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/expect/node_modules/color-convert": { @@ -10091,6 +10961,13 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/file-loader/node_modules/schema-utils": { @@ -10104,6 +10981,10 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/file-uri-to-path": { @@ -10189,6 +11070,9 @@ }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/flatted": { @@ -10199,7 +11083,8 @@ "node_modules/flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash." }, "node_modules/flush-write-stream": { "version": "1.1.1", @@ -10547,6 +11432,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -10597,6 +11483,9 @@ "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-own-enumerable-property-symbols": { @@ -10658,6 +11547,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { @@ -10717,6 +11609,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { @@ -10767,6 +11662,7 @@ "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -10810,6 +11706,9 @@ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-value": { @@ -11063,6 +11962,9 @@ }, "engines": { "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/html-webpack-plugin/node_modules/json5": { @@ -11349,7 +12251,21 @@ "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/iferr": { "version": "0.1.5", @@ -11367,7 +12283,11 @@ "node_modules/immer": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", - "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" + "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } }, "node_modules/import-cwd": { "version": "2.1.0", @@ -11390,6 +12310,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-from": { @@ -11609,6 +12532,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-arrayish": { @@ -11638,6 +12564,9 @@ "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-capitalized": { @@ -11680,6 +12609,9 @@ "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-data-descriptor": { @@ -11710,6 +12642,9 @@ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-descriptor": { @@ -11750,6 +12685,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-extendable": { @@ -11798,6 +12736,9 @@ "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-number": { @@ -11879,6 +12820,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-regexp": { @@ -11916,6 +12860,9 @@ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-symbol": { @@ -11927,6 +12874,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { @@ -12036,6 +12986,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/istanbul-lib-report/node_modules/semver": { @@ -12079,6 +13032,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/istanbul-lib-source-maps/node_modules/ms": { @@ -12180,6 +13138,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-changed-files/node_modules/chalk": { @@ -12192,6 +13153,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-changed-files/node_modules/color-convert": { @@ -12240,6 +13204,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/jest-changed-files/node_modules/get-stream": { @@ -12251,6 +13218,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-changed-files/node_modules/has-flag": { @@ -12372,6 +13342,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-circus/node_modules/chalk": { @@ -12384,6 +13357,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-circus/node_modules/color-convert": { @@ -12447,6 +13423,14 @@ }, "engines": { "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, "node_modules/jest-config/node_modules/@jest/types": { @@ -12473,6 +13457,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-config/node_modules/chalk": { @@ -12485,6 +13472,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-config/node_modules/color-convert": { @@ -12575,6 +13565,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-config/node_modules/path-exists": { @@ -12629,6 +13622,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-config/node_modules/read-pkg/node_modules/type-fest": { @@ -12688,6 +13684,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-diff/node_modules/chalk": { @@ -12700,6 +13699,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-diff/node_modules/color-convert": { @@ -12806,6 +13808,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-each/node_modules/chalk": { @@ -12818,6 +13823,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-each/node_modules/color-convert": { @@ -12915,6 +13923,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-environment-jsdom/node_modules/chalk": { @@ -12927,6 +13938,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-environment-jsdom/node_modules/color-convert": { @@ -13004,6 +14018,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-environment-node/node_modules/chalk": { @@ -13016,6 +14033,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-environment-node/node_modules/color-convert": { @@ -13111,6 +14131,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-haste-map/node_modules/chalk": { @@ -13123,6 +14146,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-haste-map/node_modules/color-convert": { @@ -13212,6 +14238,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-jasmine2/node_modules/chalk": { @@ -13224,6 +14253,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-jasmine2/node_modules/color-convert": { @@ -13316,6 +14348,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-leak-detector/node_modules/chalk": { @@ -13328,6 +14363,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-leak-detector/node_modules/color-convert": { @@ -13422,6 +14460,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-matcher-utils/node_modules/chalk": { @@ -13434,6 +14475,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-matcher-utils/node_modules/color-convert": { @@ -13533,6 +14577,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-message-util/node_modules/chalk": { @@ -13545,6 +14592,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-message-util/node_modules/color-convert": { @@ -13637,6 +14687,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-mock/node_modules/chalk": { @@ -13649,6 +14702,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-mock/node_modules/color-convert": { @@ -13692,6 +14748,14 @@ "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "engines": { "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, "node_modules/jest-regex-util": { @@ -13757,6 +14821,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-resolve-dependencies/node_modules/chalk": { @@ -13769,6 +14836,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-resolve-dependencies/node_modules/color-convert": { @@ -13815,6 +14885,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-resolve/node_modules/chalk": { @@ -13827,6 +14900,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-resolve/node_modules/color-convert": { @@ -13899,6 +14975,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-resolve/node_modules/path-exists": { @@ -13934,6 +15013,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": { @@ -14009,6 +15091,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-runner/node_modules/chalk": { @@ -14021,6 +15106,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-runner/node_modules/color-convert": { @@ -14111,6 +15199,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-runner/node_modules/path-exists": { @@ -14146,6 +15237,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-runner/node_modules/read-pkg/node_modules/type-fest": { @@ -14231,6 +15325,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-runtime/node_modules/camelcase": { @@ -14251,6 +15348,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-runtime/node_modules/cliui": { @@ -14364,6 +15464,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-runtime/node_modules/path-exists": { @@ -14399,6 +15502,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-runtime/node_modules/read-pkg/node_modules/type-fest": { @@ -14560,6 +15666,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-snapshot/node_modules/chalk": { @@ -14572,6 +15681,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-snapshot/node_modules/color-convert": { @@ -14662,6 +15774,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-snapshot/node_modules/path-exists": { @@ -14716,6 +15831,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-snapshot/node_modules/read-pkg/node_modules/type-fest": { @@ -14791,6 +15909,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-util/node_modules/chalk": { @@ -14803,6 +15924,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-util/node_modules/color-convert": { @@ -14880,6 +16004,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-validate/node_modules/camelcase": { @@ -14888,6 +16015,9 @@ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-validate/node_modules/chalk": { @@ -14900,6 +16030,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-validate/node_modules/color-convert": { @@ -14971,6 +16104,9 @@ }, "engines": { "node": ">=10" + }, + "peerDependencies": { + "jest": "^26.0.0" } }, "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { @@ -14982,6 +16118,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-watch-typeahead/node_modules/chalk": { @@ -14994,6 +16133,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-watch-typeahead/node_modules/color-convert": { @@ -15083,6 +16225,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-watcher/node_modules/chalk": { @@ -15095,6 +16240,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-watcher/node_modules/color-convert": { @@ -15188,6 +16336,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest/node_modules/camelcase": { @@ -15208,6 +16359,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest/node_modules/cliui": { @@ -15406,6 +16560,12 @@ "node": ">=6" } }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", + "peer": true + }, "node_modules/js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", @@ -15472,6 +16632,14 @@ }, "engines": { "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, "node_modules/jsdom/node_modules/tough-cookie": { @@ -15551,7 +16719,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, @@ -15642,7 +16810,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.9" } }, @@ -15877,6 +17045,10 @@ "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "engines": { "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, "node_modules/loose-envify": { @@ -16185,6 +17357,13 @@ }, "engines": { "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" } }, "node_modules/mini-css-extract-plugin/node_modules/json5": { @@ -16822,7 +18001,10 @@ "node_modules/object-inspect": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/object-is": { "version": "1.1.5", @@ -16834,6 +18016,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { @@ -16867,6 +18052,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.entries": { @@ -16895,6 +18083,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.getownpropertydescriptors": { @@ -16908,6 +18099,9 @@ }, "engines": { "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.pick": { @@ -16933,6 +18127,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obuf": { @@ -16976,6 +18173,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open": { @@ -16988,6 +18188,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/opn": { @@ -17016,6 +18219,9 @@ "dependencies": { "cssnano": "^4.1.10", "last-call-webpack-plugin": "^3.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/optionator": { @@ -17053,6 +18259,9 @@ "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-finally": { @@ -17072,6 +18281,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { @@ -17094,6 +18306,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry": { @@ -17345,6 +18560,9 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "engines": { "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pidtree": { @@ -17451,6 +18669,17 @@ "node": ">=6" } }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -17496,6 +18725,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-attribute-case-insensitive": { @@ -17516,6 +18749,9 @@ }, "engines": { "node": ">=8.0.0" + }, + "peerDependencies": { + "browserslist": "^4" } }, "node_modules/postcss-calc": { @@ -17882,6 +19118,10 @@ }, "engines": { "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-load-config/node_modules/cosmiconfig": { @@ -18542,6 +19782,10 @@ }, "engines": { "node": ">=10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-safe-parser/node_modules/postcss": { @@ -18555,6 +19799,10 @@ }, "engines": { "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-selector-matches": { @@ -18682,6 +19930,9 @@ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pretty-error": { @@ -18716,6 +19967,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/pretty-format/node_modules/color-convert": { @@ -18904,6 +20158,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "engines": { "node": ">=0.4.x" } @@ -18924,7 +20179,21 @@ "node_modules/queue-microtask": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/raf": { "version": "3.4.1", @@ -19016,6 +20285,22 @@ "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.7.2" + }, + "peerDependencies": { + "chart.js": "^2.3", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-content-loader": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-6.0.3.tgz", + "integrity": "sha512-CIRgTHze+ls+jGDIfCitw27YkW2XcaMpsYORTUdBxsMFiKuUYMnlvY76dZE4Lsaa9vFXVw+41ieBEK7SJt0nug==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16.0.0" } }, "node_modules/react-countup": { @@ -19078,6 +20363,10 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" } }, "node_modules/react-dev-utils/node_modules/cross-spawn": { @@ -19127,6 +20416,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-dev-utils/node_modules/locate-path": { @@ -19219,6 +20511,9 @@ "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" } }, "node_modules/react-error-overlay": { @@ -19232,6 +20527,9 @@ "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", "dependencies": { "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0" } }, "node_modules/react-is": { @@ -19242,7 +20540,12 @@ "node_modules/react-moment": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/react-moment/-/react-moment-1.1.1.tgz", - "integrity": "sha512-WjwvxBSnmLMRcU33do0KixDB+9vP3e84eCse+rd+HNklAMNWyRgZTDEQlay/qK6lcXFPRuEIASJTpEt6pyK7Ww==" + "integrity": "sha512-WjwvxBSnmLMRcU33do0KixDB+9vP3e84eCse+rd+HNklAMNWyRgZTDEQlay/qK6lcXFPRuEIASJTpEt6pyK7Ww==", + "peerDependencies": { + "moment": "^2.29.0", + "prop-types": "^15.7.0", + "react": "^16.0 || ^17.0.0" + } }, "node_modules/react-refresh": { "version": "0.8.3", @@ -19383,6 +20686,15 @@ }, "optionalDependencies": { "fsevents": "^2.1.3" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/react-scripts/node_modules/camelcase": { @@ -19391,6 +20703,9 @@ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-scripts/node_modules/fs-extra": { @@ -19412,8 +20727,10 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "graceful-fs": "^4.1.6", "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, "node_modules/react-scripts/node_modules/semver": { @@ -19439,6 +20756,10 @@ "prop-types": "^15.6.0", "react-input-autosize": "^3.0.0", "react-transition-group": "^4.3.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, "node_modules/react-transition-group": { @@ -19450,6 +20771,10 @@ "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" } }, "node_modules/read-pkg": { @@ -19568,6 +20893,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpp": { @@ -19576,6 +20904,9 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/regexpu-core": { @@ -19660,6 +20991,9 @@ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "engines": { "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/renderkid/node_modules/domutils": { @@ -19691,6 +21025,7 @@ "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -19726,12 +21061,16 @@ }, "engines": { "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/request-promise-native": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", "dependencies": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", @@ -19739,6 +21078,9 @@ }, "engines": { "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/require-directory": { @@ -19774,6 +21116,9 @@ "dependencies": { "is-core-module": "^2.0.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { @@ -19811,7 +21156,8 @@ "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" }, "node_modules/resolve-url-loader": { "version": "3.1.3", @@ -20011,9 +21357,14 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.", "dependencies": { "@babel/helper-module-imports": "^7.0.0", "rollup-pluginutils": "^2.8.1" + }, + "peerDependencies": { + "@babel/core": "7 || ^7.0.0-rc.2", + "rollup": ">=0.60.0 <3" } }, "node_modules/rollup-plugin-terser": { @@ -20026,6 +21377,9 @@ "rollup-pluginutils": "^2.8.2", "serialize-javascript": "^4.0.0", "terser": "^4.6.2" + }, + "peerDependencies": { + "rollup": ">=0.66.0 <3" } }, "node_modules/rollup-plugin-terser/node_modules/jest-worker": { @@ -20084,6 +21438,10 @@ "uuid": "^8.3.0", "ws": "^7.3.1" }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, "optionalDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" @@ -20109,6 +21467,20 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { "queue-microtask": "^1.2.2" } @@ -20124,7 +21496,21 @@ "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safe-regex": { "version": "1.1.0", @@ -20143,6 +21529,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", "dependencies": { "@cnakazawa/watch": "^1.0.3", "anymatch": "^2.0.0", @@ -20326,6 +21713,27 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } } }, "node_modules/sass-loader/node_modules/schema-utils": { @@ -20339,6 +21747,10 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/sass-loader/node_modules/semver": { @@ -20391,6 +21803,10 @@ }, "engines": { "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/secp256k1": { @@ -20609,6 +22025,9 @@ "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/signal-exit": { @@ -20653,6 +22072,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/slice-ansi/node_modules/ansi-styles": { @@ -20664,6 +22086,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/slice-ansi/node_modules/color-convert": { @@ -20871,6 +22296,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/socket.io-client/node_modules/ms": { @@ -20900,6 +22330,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/socket.io-parser/node_modules/ms": { @@ -21068,6 +22503,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/spdy-transport/node_modules/ms": { @@ -21084,6 +22524,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/spdy/node_modules/ms": { @@ -21122,6 +22567,11 @@ "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, "engines": { "node": ">=0.10.0" } @@ -21355,6 +22805,9 @@ "internal-slot": "^1.0.3", "regexp.prototype.flags": "^1.3.1", "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.padend": { @@ -21368,6 +22821,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { @@ -21377,6 +22833,9 @@ "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { @@ -21386,6 +22845,9 @@ "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/stringify-object": { @@ -21481,6 +22943,9 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/style-loader": { @@ -21493,6 +22958,13 @@ }, "engines": { "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/stylehacks": { @@ -21621,6 +23093,9 @@ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "engines": { "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/svgo/node_modules/domutils": { @@ -21660,6 +23135,10 @@ "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/table/node_modules/emoji-regex": { @@ -21778,6 +23257,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terser": { @@ -21813,6 +23295,13 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { @@ -21826,6 +23315,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, "node_modules/terser-webpack-plugin/node_modules/find-up": { @@ -21860,6 +23352,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terser-webpack-plugin/node_modules/p-limit": { @@ -21871,6 +23366,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terser-webpack-plugin/node_modules/p-locate": { @@ -21893,6 +23391,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terser-webpack-plugin/node_modules/path-exists": { @@ -21925,6 +23426,10 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/terser-webpack-plugin/node_modules/semver": { @@ -22216,6 +23721,11 @@ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "engines": { "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/tsconfig-paths": { @@ -22254,6 +23764,9 @@ }, "engines": { "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, "node_modules/tty-browserify": { @@ -22523,7 +24036,8 @@ "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" }, "node_modules/url": { "version": "0.11.0", @@ -22545,6 +24059,19 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } } }, "node_modules/url-loader/node_modules/schema-utils": { @@ -22558,6 +24085,10 @@ }, "engines": { "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/url-parse": { @@ -22578,6 +24109,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "engines": { "node": ">=0.4.x" } @@ -22622,6 +24154,9 @@ "es-abstract": "^1.17.2", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/util.promisify/node_modules/es-abstract": { @@ -22643,6 +24178,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/util/node_modules/inherits": { @@ -22667,6 +24205,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { "uuid": "bin/uuid" } @@ -22722,7 +24261,11 @@ "node_modules/vendors": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, "node_modules/verror": { "version": "1.10.0", @@ -22859,12 +24402,12 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", "optional": true, "dependencies": { "anymatch": "^2.0.0", "async-each": "^1.0.1", "braces": "^2.3.2", - "fsevents": "^1.2.7", "glob-parent": "^3.1.0", "inherits": "^2.0.3", "is-binary-path": "^1.0.0", @@ -22873,6 +24416,9 @@ "path-is-absolute": "^1.0.0", "readdirp": "^2.2.1", "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" } }, "node_modules/watchpack-chokidar2/node_modules/fill-range": { @@ -22906,6 +24452,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", "hasInstallScript": true, "optional": true, "os": [ @@ -23108,6 +24655,18 @@ }, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, "node_modules/webpack-dev-middleware": { @@ -23123,6 +24682,9 @@ }, "engines": { "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/webpack-dev-middleware/node_modules/mime": { @@ -23180,6 +24742,14 @@ }, "engines": { "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, "node_modules/webpack-dev-server/node_modules/anymatch": { @@ -23245,6 +24815,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", "dependencies": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -23271,6 +24842,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/webpack-dev-server/node_modules/fill-range": { @@ -23302,6 +24878,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", "hasInstallScript": true, "optional": true, "os": [ @@ -23562,6 +25139,9 @@ }, "engines": { "node": ">=6.11.5" + }, + "peerDependencies": { + "webpack": "2 || 3 || 4" } }, "node_modules/webpack-manifest-plugin/node_modules/fs-extra": { @@ -23581,7 +25161,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, @@ -23839,6 +25419,9 @@ }, "engines": { "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/webpack/node_modules/to-regex-range": { @@ -24021,7 +25604,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, @@ -24142,6 +25725,9 @@ }, "engines": { "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/workbox-window": { @@ -24243,6 +25829,18 @@ "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", "engines": { "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/xml-name-validator": { @@ -24377,6 +25975,9 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } }, @@ -25881,6 +27482,12 @@ } } }, + "@cloudflare/stream-react": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@cloudflare/stream-react/-/stream-react-1.2.0.tgz", + "integrity": "sha512-uLsKstcNOrTH19UEFxHWUX6h8SM9Ytr1Qyo6dIObuDUQ40g/cJgNnNnFn4gcGWf3zPwXQN3LkRmVol5MU/rU2Q==", + "requires": {} + }, "@cnakazawa/watch": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", @@ -27224,7 +28831,8 @@ "@react-hook/latest": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", - "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==" + "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "requires": {} }, "@rollup/plugin-node-resolve": { "version": "7.1.3", @@ -28658,7 +30266,8 @@ "acorn-jsx": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -28702,12 +30311,14 @@ "ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} }, "alphanum-sort": { "version": "1.0.2", @@ -29245,7 +30856,8 @@ "babel-plugin-named-asset-import": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", - "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==" + "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==", + "requires": {} }, "babel-plugin-polyfill-corejs2": { "version": "0.1.2", @@ -29731,7 +31343,8 @@ "bootstrap": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", - "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==", + "requires": {} }, "borsh": { "version": "0.4.0", @@ -31609,7 +33222,8 @@ "ws": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==" + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "requires": {} } } }, @@ -32304,7 +33918,8 @@ "eslint-plugin-react-hooks": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", - "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==" + "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", + "requires": {} }, "eslint-plugin-testing-library": { "version": "3.10.1", @@ -35966,7 +37581,8 @@ "jest-pnp-resolver": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "requires": {} }, "jest-regex-util": { "version": "26.0.0", @@ -37118,6 +38734,12 @@ } } }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", + "peer": true + }, "js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", @@ -38813,6 +40435,12 @@ "ts-pnp": "^1.1.6" } }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "peer": true + }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -40126,6 +41754,12 @@ "prop-types": "^15.7.2" } }, + "react-content-loader": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-6.0.3.tgz", + "integrity": "sha512-CIRgTHze+ls+jGDIfCitw27YkW2XcaMpsYORTUdBxsMFiKuUYMnlvY76dZE4Lsaa9vFXVw+41ieBEK7SJt0nug==", + "requires": {} + }, "react-countup": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-6.0.0.tgz", @@ -40301,7 +41935,8 @@ "react-moment": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/react-moment/-/react-moment-1.1.1.tgz", - "integrity": "sha512-WjwvxBSnmLMRcU33do0KixDB+9vP3e84eCse+rd+HNklAMNWyRgZTDEQlay/qK6lcXFPRuEIASJTpEt6pyK7Ww==" + "integrity": "sha512-WjwvxBSnmLMRcU33do0KixDB+9vP3e84eCse+rd+HNklAMNWyRgZTDEQlay/qK6lcXFPRuEIASJTpEt6pyK7Ww==", + "requires": {} }, "react-refresh": { "version": "0.8.3", @@ -44544,7 +46179,8 @@ "ws": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "requires": {} }, "xml-name-validator": { "version": "3.0.0", diff --git a/explorer/package.json b/explorer/package.json index e1eaabcd7..41b61d548 100644 --- a/explorer/package.json +++ b/explorer/package.json @@ -5,6 +5,7 @@ "dependencies": { "@blockworks-foundation/mango-client": "^3.0.24", "@bonfida/bot": "^0.5.3", + "@cloudflare/stream-react": "^1.2.0", "@metamask/jazzicon": "^2.0.0", "@project-serum/serum": "^0.13.60", "@react-hook/debounce": "^4.0.0", @@ -39,6 +40,7 @@ "prettier": "^2.4.1", "react": "^17.0.2", "react-chartjs-2": "^2.11.2", + "react-content-loader": "^6.0.3", "react-countup": "^6.0.0", "react-dom": "^17.0.2", "react-moment": "^1.1.1", diff --git a/explorer/src/components/account/MetaplexNFTHeader.tsx b/explorer/src/components/account/MetaplexNFTHeader.tsx new file mode 100644 index 000000000..532ca7491 --- /dev/null +++ b/explorer/src/components/account/MetaplexNFTHeader.tsx @@ -0,0 +1,171 @@ +import "bootstrap/dist/js/bootstrap.min.js"; +import { NFTData } from "providers/accounts"; +import { Creator } from "metaplex/classes"; +import { ArtContent } from "metaplex/Art/Art"; +import { InfoTooltip } from "components/common/InfoTooltip"; +import { EditionData } from "providers/accounts/utils/metadataHelpers"; +import { clusterPath } from "utils/url"; +import { Link } from "react-router-dom"; + +export function NFTHeader({ + nftData, + address, +}: { + nftData: NFTData; + address: string; +}) { + const metadata = nftData.metadata; + return ( +
+
+ +
+ +
+ {
Metaplex NFT
} +
+

+ {metadata.data.name !== "" + ? metadata.data.name + : "No NFT name was found"} +

+ {getEditionPill(nftData.editionData)} +
+

+ {metadata.data.symbol !== "" + ? metadata.data.symbol + : "No Symbol was found"} +

+
+ {getSaleTypePill(metadata.primarySaleHappened)} +
+
{getIsMutablePill(metadata.isMutable)}
+
+ +
+ {getCreatorDropdownItems(metadata.data.creators)} +
+
+
+
+ ); +} + +function getCreatorDropdownItems(creators: Creator[] | null) { + const CreatorHeader = () => { + const creatorTooltip = + "Verified creators signed the metadata associated with this NFT when it was created."; + + const shareTooltip = + "The percentage of the proceeds a creator receives when this NFT is sold."; + + return ( +
+
+ Creator Address + +
+
+ Royalty + +
+
+ ); + }; + + const getVerifiedIcon = (isVerified: boolean) => { + const className = isVerified ? "fe fe-check" : "fe fe-alert-octagon"; + return ; + }; + + const CreatorEntry = (creator: Creator) => { + return ( +
+ {getVerifiedIcon(creator.verified)} + + {creator.address} + +
{`${creator.share}%`}
+
+ ); + }; + + if (creators && creators.length > 0) { + let listOfCreators: JSX.Element[] = []; + + listOfCreators.push(); + creators.forEach((creator) => { + listOfCreators.push(); + }); + + return listOfCreators; + } + + return ( +
+
No creators are associated with this NFT.
+
+ ); +} + +function getEditionPill(editionData?: EditionData) { + const masterEdition = editionData?.masterEdition; + const edition = editionData?.edition; + + return ( +
+ {`${ + edition && masterEdition + ? `Edition ${edition.edition.toNumber()} / ${masterEdition.supply.toNumber()}` + : masterEdition + ? "Master Edition" + : "No Master Edition Information" + }`} +
+ ); +} + +function getSaleTypePill(hasPrimarySaleHappened: boolean) { + const primaryMarketTooltip = + "Creator(s) split 100% of the proceeds when this NFT is sold."; + + const secondaryMarketTooltip = + "Creator(s) split the Seller Fee when this NFT is sold. The owner receives the remaining proceeds."; + + return ( +
+ {`${ + hasPrimarySaleHappened ? "Secondary Market" : "Primary Market" + }`} + +
+ ); +} + +function getIsMutablePill(isMutable: boolean) { + return ( + {`${ + isMutable ? "Mutable" : "Immutable" + }`} + ); +} diff --git a/explorer/src/components/account/TokenAccountSection.tsx b/explorer/src/components/account/TokenAccountSection.tsx index 8c2281bad..1decf1770 100644 --- a/explorer/src/components/account/TokenAccountSection.tsx +++ b/explorer/src/components/account/TokenAccountSection.tsx @@ -1,5 +1,4 @@ -import React from "react"; -import { Account, useFetchAccountInfo } from "providers/accounts"; +import { Account, NFTData, useFetchAccountInfo } from "providers/accounts"; import { TokenAccount, MintAccountInfo, @@ -20,6 +19,7 @@ import { Copyable } from "components/common/Copyable"; import { CoingeckoStatus, useCoinGecko } from "utils/coingecko"; import { displayTimestampWithoutDate } from "utils/date"; import { LoadingCard } from "components/common/LoadingCard"; +import { toPublicKey } from "metaplex/ids"; const getEthAddress = (link?: string) => { let address = ""; @@ -47,7 +47,21 @@ export function TokenAccountSection({ switch (tokenAccount.type) { case "mint": { const info = create(tokenAccount.info, MintAccountInfo); - return ; + + if ( + account.details?.data?.program === "spl-token" && + account.details.data.nftData + ) { + return ( + + ); + } + + return ; } case "account": { const info = create(tokenAccount.info, TokenAccountInfo); @@ -68,7 +82,7 @@ export function TokenAccountSection({ return ; } -function MintAccountCard({ +function FungibleTokenMintAccountCard({ account, info, }: { @@ -270,6 +284,87 @@ function MintAccountCard({ ); } +function NonFungibleTokenMintAccountCard({ + account, + nftData, + mintInfo, +}: { + account: Account; + nftData: NFTData; + mintInfo: MintAccountInfo; +}) { + const fetchInfo = useFetchAccountInfo(); + const refresh = () => fetchInfo(account.pubkey); + + return ( +
+
+

+ Overview +

+ +
+ + + Address + +
+ + + {nftData?.editionData?.masterEdition?.maxSupply && ( + + Max Total Supply + + {nftData.editionData.masterEdition.maxSupply.toNumber() === 0 + ? 1 + : nftData.editionData.masterEdition.maxSupply.toNumber()} + + + )} + {nftData?.editionData?.masterEdition?.supply && ( + + Current Supply + + {nftData.editionData.masterEdition.supply.toNumber() === 0 + ? 1 + : nftData.editionData.masterEdition.supply.toNumber()} + + + )} + {mintInfo.mintAuthority && ( + + Mint Authority + +
+ + + )} + + Update Authority + +
+ + + {nftData?.metadata.data && ( + + Seller Fee + + {`${nftData?.metadata.data.sellerFeeBasisPoints / 100}%`} + + + )} + +
+ ); +} + function TokenAccountCard({ account, info, diff --git a/explorer/src/components/common/InfoTooltip.tsx b/explorer/src/components/common/InfoTooltip.tsx index 4baf49888..95a670600 100644 --- a/explorer/src/components/common/InfoTooltip.tsx +++ b/explorer/src/components/common/InfoTooltip.tsx @@ -2,7 +2,7 @@ import React, { useState, ReactNode } from "react"; type Props = { text: string; - children: ReactNode; + children?: ReactNode; bottom?: boolean; right?: boolean; }; diff --git a/explorer/src/metaplex/Art/Art.tsx b/explorer/src/metaplex/Art/Art.tsx new file mode 100644 index 000000000..367a5a0c3 --- /dev/null +++ b/explorer/src/metaplex/Art/Art.tsx @@ -0,0 +1,268 @@ +import React, { Ref, useCallback, useEffect, useState } from "react"; +import { MetadataCategory, MetadataFile } from "../types"; +import { pubkeyToString } from "../utils"; +import { useCachedImage, useExtendedArt } from "./useArt"; +import { Stream, StreamPlayerApi } from "@cloudflare/stream-react"; +import { PublicKey } from "@solana/web3.js"; +import { getLast } from "../utils"; +import { Metadata } from "metaplex/classes"; +import ContentLoader from "react-content-loader"; + +const Placeholder = () => ( + + + + + +); + +const CachedImageContent = ({ + uri, +}: { + uri?: string; + className?: string; + preview?: boolean; + style?: React.CSSProperties; +}) => { + const [loaded, setLoaded] = useState(false); + const { cachedBlob } = useCachedImage(uri || ""); + + return ( + <> + {!loaded && } + {"nft"} { + setLoaded(true); + }} + onError={() => { + setLoaded(true); + }} + /> + + ); +}; + +const VideoArtContent = ({ + className, + style, + files, + uri, + animationURL, + active, +}: { + className?: string; + style?: React.CSSProperties; + files?: (MetadataFile | string)[]; + uri?: string; + animationURL?: string; + active?: boolean; +}) => { + const [playerApi, setPlayerApi] = useState(); + + const playerRef = useCallback( + (ref) => { + setPlayerApi(ref); + }, + [setPlayerApi] + ); + + useEffect(() => { + if (playerApi) { + playerApi.currentTime = 0; + } + }, [active, playerApi]); + + const likelyVideo = (files || []).filter((f, index, arr) => { + if (typeof f !== "string") { + return false; + } + + // TODO: filter by fileType + return arr.length >= 2 ? index === 1 : index === 0; + })?.[0] as string; + + const content = + likelyVideo && + likelyVideo.startsWith("https://watch.videodelivery.net/") ? ( +
+ playerRef(e)} + src={likelyVideo.replace("https://watch.videodelivery.net/", "")} + loop={true} + height={150} + width={150} + controls={false} + style={{ borderRadius: 12 }} + videoDimensions={{ + videoHeight: 150, + videoWidth: 150, + }} + autoplay={true} + muted={true} + /> +
+ ) : ( + + ); + + return content; +}; + +const HTMLContent = ({ + animationUrl, + className, + style, + files, +}: { + animationUrl?: string; + className?: string; + style?: React.CSSProperties; + files?: (MetadataFile | string)[]; +}) => { + const [loaded, setLoaded] = useState(false); + const htmlURL = + files && files.length > 0 && typeof files[0] === "string" + ? files[0] + : animationUrl; + + return ( + <> + {!loaded && } + + + ); +}; + +export const ArtContent = ({ + metadata, + category, + className, + preview, + style, + active, + pubkey, + uri, + animationURL, + files, +}: { + metadata: Metadata; + category?: MetadataCategory; + className?: string; + preview?: boolean; + style?: React.CSSProperties; + width?: number; + height?: number; + ref?: Ref; + active?: boolean; + pubkey?: PublicKey | string; + uri?: string; + animationURL?: string; + files?: (MetadataFile | string)[]; +}) => { + const id = pubkeyToString(pubkey); + + const { data } = useExtendedArt(id, metadata); + + if (pubkey && data) { + uri = data.image; + animationURL = data.animation_url; + } + + if (pubkey && data?.properties) { + files = data.properties.files; + category = data.properties.category; + } + + animationURL = animationURL || ""; + + const animationUrlExt = new URLSearchParams( + getLast(animationURL.split("?")) + ).get("ext"); + + const content = + category === "video" ? ( + + ) : category === "html" || animationUrlExt === "html" ? ( + + ) : ( + + ); + + return ( +
+ {content} +
+ ); +}; diff --git a/explorer/src/metaplex/Art/useArt.ts b/explorer/src/metaplex/Art/useArt.ts new file mode 100644 index 000000000..bc73c709e --- /dev/null +++ b/explorer/src/metaplex/Art/useArt.ts @@ -0,0 +1,114 @@ +import { IMetadataExtension, Metadata } from "metaplex/classes"; +import { StringPublicKey } from "metaplex/types"; +import { useEffect, useState } from "react"; + +const cachedImages = new Map(); +export const useCachedImage = (uri: string) => { + const [cachedBlob, setCachedBlob] = useState(undefined); + const [isLoading, setIsLoading] = useState(false); + + useEffect(() => { + if (!uri) { + return; + } + + const result = cachedImages.get(uri); + if (result) { + setCachedBlob(result); + return; + } + + if (!isLoading) { + (async () => { + setIsLoading(true); + let response: Response; + try { + response = await fetch(uri, { cache: "force-cache" }); + } catch { + try { + response = await fetch(uri, { cache: "reload" }); + } catch { + // If external URL, just use the uri + if (uri?.startsWith("http")) { + setCachedBlob(uri); + } + setIsLoading(false); + return; + } + } + + const blob = await response.blob(); + const blobURI = URL.createObjectURL(blob); + cachedImages.set(uri, blobURI); + setCachedBlob(blobURI); + setIsLoading(false); + })(); + } + }, [uri, setCachedBlob, isLoading, setIsLoading]); + + return { cachedBlob, isLoading }; +}; + +export const useExtendedArt = (id: StringPublicKey, metadata: Metadata) => { + const [data, setData] = useState(); + + useEffect(() => { + if (id && !data) { + const USE_CDN = false; + const routeCDN = (uri: string) => { + let result = uri; + if (USE_CDN) { + result = uri.replace( + "https://arweave.net/", + "https://coldcdn.com/api/cdn/bronil/" + ); + } + + return result; + }; + + if (metadata.data.uri) { + const uri = routeCDN(metadata.data.uri); + + const processJson = (extended: any) => { + if (!extended || extended?.properties?.files?.length === 0) { + return; + } + + if (extended?.image) { + const file = extended.image.startsWith("http") + ? extended.image + : `${metadata.data.uri}/${extended.image}`; + extended.image = routeCDN(file); + } + + return extended; + }; + + try { + fetch(uri) + .then(async (_) => { + try { + const data = await _.json(); + try { + localStorage.setItem(uri, JSON.stringify(data)); + } catch { + // ignore + } + setData(processJson(data)); + } catch { + return undefined; + } + }) + .catch(() => { + return undefined; + }); + } catch (ex) { + console.error(ex); + } + } + } + }, [id, data, setData, metadata.data.uri]); + + return { data }; +}; diff --git a/explorer/src/metaplex/classes.ts b/explorer/src/metaplex/classes.ts new file mode 100644 index 000000000..f5f110d33 --- /dev/null +++ b/explorer/src/metaplex/classes.ts @@ -0,0 +1,296 @@ +/* + Taken from: https://github.com/metaplex-foundation/metaplex/blob/master/js/packages/common/src/actions/metadata.ts +*/ + +import BN from "bn.js"; +import { + StringPublicKey, + EDITION_MARKER_BIT_SIZE, + MetadataKey, + FileOrString, + MetadataCategory, + MetaplexKey, +} from "./types"; + +export class MasterEditionV1 { + key: MetadataKey; + supply: BN; + maxSupply?: BN; + /// Can be used to mint tokens that give one-time permission to mint a single limited edition. + printingMint: StringPublicKey; + /// If you don't know how many printing tokens you are going to need, but you do know + /// you are going to need some amount in the future, you can use a token from this mint. + /// Coming back to token metadata with one of these tokens allows you to mint (one time) + /// any number of printing tokens you want. This is used for instance by Auction Manager + /// with participation NFTs, where we dont know how many people will bid and need participation + /// printing tokens to redeem, so we give it ONE of these tokens to use after the auction is over, + /// because when the auction begins we just dont know how many printing tokens we will need, + /// but at the end we will. At the end it then burns this token with token-metadata to + /// get the printing tokens it needs to give to bidders. Each bidder then redeems a printing token + /// to get their limited editions. + oneTimePrintingAuthorizationMint: StringPublicKey; + + constructor(args: { + key: MetadataKey; + supply: BN; + maxSupply?: BN; + printingMint: StringPublicKey; + oneTimePrintingAuthorizationMint: StringPublicKey; + }) { + this.key = MetadataKey.MasterEditionV1; + this.supply = args.supply; + this.maxSupply = args.maxSupply; + this.printingMint = args.printingMint; + this.oneTimePrintingAuthorizationMint = + args.oneTimePrintingAuthorizationMint; + } +} + +export class MasterEditionV2 { + key: MetadataKey; + supply: BN; + maxSupply?: BN; + + constructor(args: { key: MetadataKey; supply: BN; maxSupply?: BN }) { + this.key = MetadataKey.MasterEditionV2; + this.supply = args.supply; + this.maxSupply = args.maxSupply; + } +} + +export class EditionMarker { + key: MetadataKey; + ledger: number[]; + + constructor(args: { key: MetadataKey; ledger: number[] }) { + this.key = MetadataKey.EditionMarker; + this.ledger = args.ledger; + } + + editionTaken(edition: number) { + const editionOffset = edition % EDITION_MARKER_BIT_SIZE; + const indexOffset = Math.floor(editionOffset / 8); + + if (indexOffset > 30) { + throw Error("bad index for edition"); + } + + const positionInBitsetFromRight = 7 - (editionOffset % 8); + + const mask = Math.pow(2, positionInBitsetFromRight); + + const appliedMask = this.ledger[indexOffset] & mask; + + return appliedMask !== 0; + } +} + +export class Edition { + key: MetadataKey; + /// Points at MasterEdition struct + parent: StringPublicKey; + /// Starting at 0 for master record, this is incremented for each edition minted. + edition: BN; + + constructor(args: { + key: MetadataKey; + parent: StringPublicKey; + edition: BN; + }) { + this.key = MetadataKey.EditionV1; + this.parent = args.parent; + this.edition = args.edition; + } +} +export class Creator { + address: StringPublicKey; + verified: boolean; + share: number; + + constructor(args: { + address: StringPublicKey; + verified: boolean; + share: number; + }) { + this.address = args.address; + this.verified = args.verified; + this.share = args.share; + } +} + +export class Data { + name: string; + symbol: string; + uri: string; + sellerFeeBasisPoints: number; + creators: Creator[] | null; + constructor(args: { + name: string; + symbol: string; + uri: string; + sellerFeeBasisPoints: number; + creators: Creator[] | null; + }) { + this.name = args.name; + this.symbol = args.symbol; + this.uri = args.uri; + this.sellerFeeBasisPoints = args.sellerFeeBasisPoints; + this.creators = args.creators; + } +} + +export class Metadata { + key: MetadataKey; + updateAuthority: StringPublicKey; + mint: StringPublicKey; + data: Data; + primarySaleHappened: boolean; + isMutable: boolean; + editionNonce: number | null; + + constructor(args: { + updateAuthority: StringPublicKey; + mint: StringPublicKey; + data: Data; + primarySaleHappened: boolean; + isMutable: boolean; + editionNonce: number | null; + }) { + this.key = MetadataKey.MetadataV1; + this.updateAuthority = args.updateAuthority; + this.mint = args.mint; + this.data = args.data; + this.primarySaleHappened = args.primarySaleHappened; + this.isMutable = args.isMutable; + this.editionNonce = args.editionNonce; + } +} + +export interface IMetadataExtension { + name: string; + symbol: string; + + creators: Creator[] | null; + description: string; + // preview image absolute URI + image: string; + animation_url?: string; + + // stores link to item on meta + external_url: string; + + seller_fee_basis_points: number; + + properties: { + files?: FileOrString[]; + category: MetadataCategory; + maxSupply?: number; + creators?: { + address: string; + shares: number; + }[]; + }; +} + +export const METADATA_SCHEMA = new Map([ + [ + MasterEditionV1, + { + kind: "struct", + fields: [ + ["key", "u8"], + ["supply", "u64"], + ["maxSupply", { kind: "option", type: "u64" }], + ["printingMint", "pubkeyAsString"], + ["oneTimePrintingAuthorizationMint", "pubkeyAsString"], + ], + }, + ], + [ + MasterEditionV2, + { + kind: "struct", + fields: [ + ["key", "u8"], + ["supply", "u64"], + ["maxSupply", { kind: "option", type: "u64" }], + ], + }, + ], + [ + Edition, + { + kind: "struct", + fields: [ + ["key", "u8"], + ["parent", "pubkeyAsString"], + ["edition", "u64"], + ], + }, + ], + [ + Data, + { + kind: "struct", + fields: [ + ["name", "string"], + ["symbol", "string"], + ["uri", "string"], + ["sellerFeeBasisPoints", "u16"], + ["creators", { kind: "option", type: [Creator] }], + ], + }, + ], + [ + Creator, + { + kind: "struct", + fields: [ + ["address", "pubkeyAsString"], + ["verified", "u8"], + ["share", "u8"], + ], + }, + ], + [ + Metadata, + { + kind: "struct", + fields: [ + ["key", "u8"], + ["updateAuthority", "pubkeyAsString"], + ["mint", "pubkeyAsString"], + ["data", Data], + ["primarySaleHappened", "u8"], // bool + ["isMutable", "u8"], // bool + ], + }, + ], + [ + EditionMarker, + { + kind: "struct", + fields: [ + ["key", "u8"], + ["ledger", [31]], + ], + }, + ], +]); + +export class WhitelistedCreator { + key: MetaplexKey = MetaplexKey.WhitelistedCreatorV1; + address: StringPublicKey; + activated: boolean = true; + + // Populated from name service + twitter?: string; + name?: string; + image?: string; + description?: string; + + constructor(args: { address: string; activated: boolean }) { + this.address = args.address; + this.activated = args.activated; + } +} diff --git a/explorer/src/metaplex/ids.ts b/explorer/src/metaplex/ids.ts new file mode 100644 index 000000000..705158f34 --- /dev/null +++ b/explorer/src/metaplex/ids.ts @@ -0,0 +1,72 @@ +/* + Taken from: https://github.com/metaplex-foundation/metaplex/blob/master/js/packages/common/src/utils/ids.ts +*/ + +import { PublicKey, AccountInfo } from "@solana/web3.js"; + +export type StringPublicKey = string; + +export class LazyAccountInfoProxy { + executable: boolean = false; + owner: StringPublicKey = ""; + lamports: number = 0; + + get data() { + // + return undefined as unknown as T; + } +} + +export interface LazyAccountInfo { + executable: boolean; + owner: StringPublicKey; + lamports: number; + data: [string, string]; +} + +const PubKeysInternedMap = new Map(); + +export const toPublicKey = (key: string | PublicKey) => { + if (typeof key !== "string") { + return key; + } + + let result = PubKeysInternedMap.get(key); + if (!result) { + result = new PublicKey(key); + PubKeysInternedMap.set(key, result); + } + + return result; +}; + +export interface PublicKeyStringAndAccount { + pubkey: string; + account: AccountInfo; +} + +export const SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = new PublicKey( + "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" +); + +export const BPF_UPGRADE_LOADER_ID = new PublicKey( + "BPFLoaderUpgradeab1e11111111111111111111111" +); + +export const MEMO_ID = new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr" +); + +export const METADATA_PROGRAM_ID = + "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" as StringPublicKey; + +export const VAULT_ID = + "vau1zxA2LbssAUEF7Gpw91zMM1LvXrvpzJtmZ58rPsn" as StringPublicKey; + +export const AUCTION_ID = + "auctxRXPeJoc4817jDhf4HbjnhEcr1cCXenosMhK5R8" as StringPublicKey; + +export const METAPLEX_ID = + "p1exdMJcjVao65QdewkaZRUnU6VPSXhus9n2GzWfh98" as StringPublicKey; + +export const SYSTEM = new PublicKey("11111111111111111111111111111111"); diff --git a/explorer/src/metaplex/types.ts b/explorer/src/metaplex/types.ts new file mode 100644 index 000000000..00dd2e7b5 --- /dev/null +++ b/explorer/src/metaplex/types.ts @@ -0,0 +1,101 @@ +/* + Taken from: https://github.com/metaplex-foundation/metaplex/blob/master/js/packages/common/src/actions/metadata.ts +*/ + +export type StringPublicKey = string; + +export const EDITION = "edition"; +export const METADATA_PREFIX = "metadata"; + +export const MAX_AUCTION_DATA_EXTENDED_SIZE = 8 + 9 + 2 + 200; + +export const MAX_NAME_LENGTH = 32; +export const MAX_SYMBOL_LENGTH = 10; +export const MAX_URI_LENGTH = 200; +export const MAX_CREATOR_LIMIT = 5; +export const EDITION_MARKER_BIT_SIZE = 248; +export const MAX_CREATOR_LEN = 32 + 1 + 1; +export const MAX_METADATA_LEN = + 1 + + 32 + + 32 + + MAX_NAME_LENGTH + + MAX_SYMBOL_LENGTH + + MAX_URI_LENGTH + + MAX_CREATOR_LIMIT * MAX_CREATOR_LEN + + 2 + + 1 + + 1 + + 198; + +export enum MetadataKey { + Uninitialized = 0, + MetadataV1 = 4, + EditionV1 = 1, + MasterEditionV1 = 2, + MasterEditionV2 = 6, + EditionMarker = 7, +} + +export enum MetadataCategory { + Audio = "audio", + Video = "video", + Image = "image", + VR = "vr", + HTML = "html", +} + +export type MetadataFile = { + uri: string; + type: string; +}; + +export type FileOrString = MetadataFile | string; + +export interface Auction { + name: string; + auctionerName: string; + auctionerLink: string; + highestBid: number; + solAmt: number; + link: string; + image: string; +} + +export interface Artist { + address?: string; + name: string; + link: string; + image: string; + itemsAvailable?: number; + itemsSold?: number; + about?: string; + verified?: boolean; + + share?: number; +} + +export enum ArtType { + Master, + Print, + NFT, +} +export interface Art { + url: string; +} + +export enum MetaplexKey { + Uninitialized = 0, + OriginalAuthorityLookupV1 = 1, + BidRedemptionTicketV1 = 2, + StoreV1 = 3, + WhitelistedCreatorV1 = 4, + PayoutTicketV1 = 5, + SafetyDepositValidationTicketV1 = 6, + AuctionManagerV1 = 7, + PrizeTrackingTicketV1 = 8, + SafetyDepositConfigV1 = 9, + AuctionManagerV2 = 10, + BidRedemptionTicketV2 = 11, + AuctionWinnerTokenTypeTrackerV1 = 12, +} diff --git a/explorer/src/metaplex/utils.ts b/explorer/src/metaplex/utils.ts new file mode 100644 index 000000000..76454cad7 --- /dev/null +++ b/explorer/src/metaplex/utils.ts @@ -0,0 +1,17 @@ +/* + Taken from: https://github.com/metaplex-foundation/metaplex/blob/master/js/packages/common/src/utils/utils.ts +*/ + +import { PublicKey } from "@solana/web3.js"; + +export const pubkeyToString = (key: PublicKey | string = "") => { + return typeof key === "string" ? key : key?.toBase58() || ""; +}; + +export const getLast = (arr: T[]) => { + if (arr.length <= 0) { + return undefined; + } + + return arr[arr.length - 1]; +}; diff --git a/explorer/src/pages/AccountDetailsPage.tsx b/explorer/src/pages/AccountDetailsPage.tsx index 629f9e992..3342c95c0 100644 --- a/explorer/src/pages/AccountDetailsPage.tsx +++ b/explorer/src/pages/AccountDetailsPage.tsx @@ -34,6 +34,7 @@ import { TransactionHistoryCard } from "components/account/history/TransactionHi import { TokenTransfersCard } from "components/account/history/TokenTransfersCard"; import { TokenInstructionsCard } from "components/account/history/TokenInstructionsCard"; import { RewardsCard } from "components/account/RewardsCard"; +import { NFTHeader } from "components/account/MetaplexNFTHeader"; const IDENTICON_WIDTH = 64; @@ -151,6 +152,11 @@ export function AccountHeader({ const account = info?.data; const data = account?.details?.data; const isToken = data?.program === "spl-token" && data?.parsed.type === "mint"; + const isNFT = isToken && data.nftData; + + if (isNFT) { + return ; + } if (tokenDetails || isToken) { return ( diff --git a/explorer/src/providers/accounts/index.tsx b/explorer/src/providers/accounts/index.tsx index be0f2e2e2..de8da26e6 100644 --- a/explorer/src/providers/accounts/index.tsx +++ b/explorer/src/providers/accounts/index.tsx @@ -25,6 +25,12 @@ import { UpgradeableLoaderAccount, } from "validators/accounts/upgradeable-program"; import { RewardsProvider } from "./rewards"; +import { Metadata } from "metaplex/classes"; +import { + EditionData, + getEditionData, + getMetadata, +} from "./utils/metadataHelpers"; export { useAccountHistory } from "./history"; export type StakeProgramData = { @@ -39,9 +45,15 @@ export type UpgradeableLoaderAccountData = { programData?: ProgramDataAccountInfo; }; +export type NFTData = { + metadata: Metadata; + editionData?: EditionData; +}; + export type TokenProgramData = { program: "spl-token"; parsed: TokenAccount; + nftData?: NFTData; }; export type VoteProgramData = { @@ -226,9 +238,22 @@ async function fetchAccountInfo( break; case "spl-token": + const parsed = create(info, TokenAccount); + let nftData; + + // Generate a PDA and check for a Metadata Account + if (parsed.type === "mint") { + const metadata = await getMetadata(pubkey, url); + if (metadata) { + // We have a valid Metadata account. Try and pull edition data. + const editionData = await getEditionData(pubkey, url); + nftData = { metadata, editionData }; + } + } data = { program: result.data.program, - parsed: create(info, TokenAccount), + parsed, + nftData, }; break; default: diff --git a/explorer/src/providers/accounts/utils/metadataHelpers.ts b/explorer/src/providers/accounts/utils/metadataHelpers.ts new file mode 100644 index 000000000..e8c22b8c3 --- /dev/null +++ b/explorer/src/providers/accounts/utils/metadataHelpers.ts @@ -0,0 +1,219 @@ +import { AccountInfo, Connection, PublicKey } from "@solana/web3.js"; +import { + Edition, + MasterEditionV1, + MasterEditionV2, + Metadata, + METADATA_SCHEMA, +} from "metaplex/classes"; +import { MetadataKey, METADATA_PREFIX, StringPublicKey } from "metaplex/types"; +import { deserializeUnchecked, BinaryReader, BinaryWriter } from "borsh"; +import base58 from "bs58"; +import { + METADATA_PROGRAM_ID, + SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + METAPLEX_ID, + BPF_UPGRADE_LOADER_ID, + SYSTEM, + MEMO_ID, + VAULT_ID, + AUCTION_ID, + toPublicKey, +} from "metaplex/ids"; +import { TOKEN_PROGRAM_ID } from "providers/accounts/tokens"; + +let STORE: PublicKey | undefined; + +export type EditionData = { + masterEdition?: MasterEditionV1 | MasterEditionV2; + edition?: Edition; +}; + +export const programIds = () => { + return { + token: TOKEN_PROGRAM_ID, + associatedToken: SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + bpf_upgrade_loader: BPF_UPGRADE_LOADER_ID, + system: SYSTEM, + metadata: METADATA_PROGRAM_ID, + memo: MEMO_ID, + vault: VAULT_ID, + auction: AUCTION_ID, + metaplex: METAPLEX_ID, + store: STORE, + }; +}; + +export async function getMetadata( + pubkey: PublicKey, + url: string +): Promise { + const connection = new Connection(url, "confirmed"); + const metadataKey = await generatePDA(pubkey); + const accountInfo = await connection.getAccountInfo(toPublicKey(metadataKey)); + + if (accountInfo && accountInfo.data.length > 0) { + if (!isMetadataAccount(accountInfo)) return; + + if (isMetadataV1Account(accountInfo)) { + const metadata = decodeMetadata(accountInfo.data); + + if (isValidHttpUrl(metadata.data.uri)) { + return metadata; + } + } + } +} + +export async function getEditionData( + pubkey: PublicKey, + url: string +): Promise { + const connection = new Connection(url, "confirmed"); + const editionKey = await generatePDA(pubkey, true /* addEditionToSeeds */); + const accountInfo = await connection.getAccountInfo(toPublicKey(editionKey)); + + if (accountInfo && accountInfo.data.length > 0) { + if (!isMetadataAccount(accountInfo)) return; + + if (isMasterEditionAccount(accountInfo)) { + return { + masterEdition: decodeMasterEdition(accountInfo.data), + edition: undefined, + }; + } + + // This is an Edition NFT. Pull the Parent (MasterEdition) + if (isEditionV1Account(accountInfo)) { + const edition = decodeEdition(accountInfo.data); + const masterEditionAccountInfo = await connection.getAccountInfo( + toPublicKey(edition.parent) + ); + + if ( + masterEditionAccountInfo && + masterEditionAccountInfo.data.length > 0 && + isMasterEditionAccount(masterEditionAccountInfo) + ) { + return { + masterEdition: decodeMasterEdition(masterEditionAccountInfo.data), + edition, + }; + } + } + } + + return; +} + +async function generatePDA( + tokenMint: PublicKey, + addEditionToSeeds: boolean = false +): Promise { + const PROGRAM_IDS = programIds(); + + const metadataSeeds = [ + Buffer.from(METADATA_PREFIX), + toPublicKey(PROGRAM_IDS.metadata).toBuffer(), + tokenMint.toBuffer(), + ]; + + if (addEditionToSeeds) { + metadataSeeds.push(Buffer.from("edition")); + } + + return ( + await PublicKey.findProgramAddress( + metadataSeeds, + toPublicKey(PROGRAM_IDS.metadata) + ) + )[0]; +} + +const decodeMetadata = (buffer: Buffer): Metadata => { + const metadata = deserializeUnchecked( + METADATA_SCHEMA, + Metadata, + buffer + ) as Metadata; + + // Remove any trailing null characters from the deserialized strings + metadata.data.name = metadata.data.name.replace(/\0/g, ""); + metadata.data.symbol = metadata.data.symbol.replace(/\0/g, ""); + metadata.data.uri = metadata.data.uri.replace(/\0/g, ""); + metadata.data.name = metadata.data.name.replace(/\0/g, ""); + return metadata; +}; + +export const decodeMasterEdition = ( + buffer: Buffer +): MasterEditionV1 | MasterEditionV2 => { + if (buffer[0] === MetadataKey.MasterEditionV1) { + return deserializeUnchecked( + METADATA_SCHEMA, + MasterEditionV1, + buffer + ) as MasterEditionV1; + } else { + return deserializeUnchecked( + METADATA_SCHEMA, + MasterEditionV2, + buffer + ) as MasterEditionV2; + } +}; + +export const decodeEdition = (buffer: Buffer) => { + return deserializeUnchecked(METADATA_SCHEMA, Edition, buffer) as Edition; +}; + +const isMetadataAccount = (account: AccountInfo) => + account.owner.toBase58() === METADATA_PROGRAM_ID; + +const isMetadataV1Account = (account: AccountInfo) => + account.data[0] === MetadataKey.MetadataV1; + +const isEditionV1Account = (account: AccountInfo) => + account.data[0] === MetadataKey.EditionV1; + +const isMasterEditionAccount = (account: AccountInfo) => + account.data[0] === MetadataKey.MasterEditionV1 || + account.data[0] === MetadataKey.MasterEditionV2; + +function isValidHttpUrl(text: string) { + try { + const url = new URL(text); + return url.protocol === "http:" || url.protocol === "https:"; + } catch (_) { + return false; + } +} + +// Required to properly serialize and deserialize pubKeyAsString types +const extendBorsh = () => { + (BinaryReader.prototype as any).readPubkey = function () { + const reader = this as unknown as BinaryReader; + const array = reader.readFixedArray(32); + return new PublicKey(array); + }; + + (BinaryWriter.prototype as any).writePubkey = function (value: any) { + const writer = this as unknown as BinaryWriter; + writer.writeFixedArray(value.toBuffer()); + }; + + (BinaryReader.prototype as any).readPubkeyAsString = function () { + const reader = this as unknown as BinaryReader; + const array = reader.readFixedArray(32); + return base58.encode(array) as StringPublicKey; + }; + + (BinaryWriter.prototype as any).writePubkeyAsString = function ( + value: StringPublicKey + ) { + const writer = this as unknown as BinaryWriter; + writer.writeFixedArray(base58.decode(value)); + }; +}; + +extendBorsh(); diff --git a/explorer/src/scss/_solana.scss b/explorer/src/scss/_solana.scss index ab68723db..7f5330d76 100644 --- a/explorer/src/scss/_solana.scss +++ b/explorer/src/scss/_solana.scss @@ -381,7 +381,7 @@ pre.json-wrap { p.updated-time { position: absolute; font-size: 0.66rem; - margin: .375rem; + margin: 0.375rem; right: 0; bottom: 0; } @@ -399,5 +399,24 @@ p.updated-time { } .identicon-wrapper-small { - margin-left: .4rem; + margin-left: 0.4rem; +} + +.creators-dropdown-button-width { + width: 150px; +} + +.creator-dropdown-entry { + flex-flow: row wrap; +} + +.creator-dropdown-header { + max-width: 80%; + flex: 0 0 80%; +} + +.creator-dropdown-entry-address { + @extend .creator-dropdown-header; + overflow: hidden; + text-overflow: ellipsis; }