diff --git a/package-lock.json b/package-lock.json index 77c4973f12..c597f9d6e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,9 +16,9 @@ "@mapbox/togeojson": "^0.16.0", "@math.gl/web-mercator": "^3.5.3", "@mui/lab": "^5.0.0-alpha.77", - "@mui/material": "^5.8.0", + "@mui/material": "^5.11.4", "@mui/styles": "^5.8.0", - "@mui/x-date-pickers": "^5.0.0-beta.3", + "@mui/x-date-pickers": "^5.0.13", "@next/bundle-analyzer": "^10.2.3", "@sentry/browser": "^6.15.0", "@sentry/integrations": "^6.19.2", @@ -26,6 +26,7 @@ "@sentry/webpack-plugin": "^1.18.3", "@turf/turf": "^5.1.6", "@types/papaparse": "^5.3.2", + "@types/qrcode": "^1.5.0", "@types/react-gtm-module": "^2.0.1", "@types/react-lazyload": "^2.6.0", "d3-ease": "^2.0.0", @@ -48,6 +49,7 @@ "papaparse": "^5.3.1", "path-browserify": "^1.0.1", "prop-types": "^15.7.2", + "qrcode": "^1.5.1", "react": "^17.0.2", "react-content-loader": "^5.1.4", "react-dom": "^17.0.2", @@ -58,7 +60,7 @@ "react-insta-stories": "^2.2.5", "react-json-editor-ajrm": "^2.5.13", "react-lazyload": "^3.2.0", - "react-map-gl": "5.3.19", + "react-map-gl": "5.3.20", "react-mapbox-gl": "^5.1.0", "react-mapbox-gl-draw": "^2.0.4", "react-player": "^2.8.2", @@ -72,7 +74,7 @@ "devDependencies": { "@emotion/babel-plugin": "^11.9.2", "@emotion/eslint-plugin": "^11.7.0", - "@netlify/plugin-nextjs": "^4.28.6", + "@netlify/plugin-nextjs": "^4.30.0", "@storybook/addon-actions": "^6.5.14", "@storybook/addon-essentials": "^6.5.14", "@storybook/addon-interactions": "^6.5.14", @@ -114,7 +116,7 @@ "webpack": "^5.74.0" }, "engines": { - "node": "14.x", + "node": "16.x", "npm": "8.x" } }, @@ -2053,9 +2055,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", - "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -3502,9 +3504,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.16.tgz", - "integrity": "sha512-eK9+olw2ZbXX+vGrtKnN01/vLP1aX0Lq0xok35bqWM1aB93Dcmky/xPNf8h31oJ/C+IzJBjZaZMEDzVZg4Qc0A==", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.9.tgz", + "integrity": "sha512-YGEtucQ/Nl91VZkzYaLad47Cdui51n/hW+OQm4210g4N3/nZzBxmGeKfubEalf+ShKH4aYDS86XTO6q/TpZnjQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" @@ -3552,16 +3554,16 @@ } }, "node_modules/@mui/material": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.16.tgz", - "integrity": "sha512-JSHcDQQ+k30NKkCM/0KX6jq4F5LOrbFKZpS+cEl7scZWOCJpUPH5ccAT5a7O8wzrgNZ8Y9PnwzNvWBrfShpJFw==", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@mui/base": "5.0.0-alpha.108", - "@mui/core-downloads-tracker": "^5.10.16", - "@mui/system": "^5.10.16", - "@mui/types": "^7.2.2", - "@mui/utils": "^5.10.16", + "version": "5.11.10", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.11.10.tgz", + "integrity": "sha512-hs1WErbiedqlJIZsljgoil908x4NMp8Lfk8di+5c7o809roqKcFTg2+k3z5ucKvs29AXcsdXrDB/kn2K6dGYIw==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@mui/base": "5.0.0-alpha.118", + "@mui/core-downloads-tracker": "^5.11.9", + "@mui/system": "^5.11.9", + "@mui/types": "^7.2.3", + "@mui/utils": "^5.11.9", "@types/react-transition-group": "^4.4.5", "clsx": "^1.2.1", "csstype": "^3.1.1", @@ -3595,13 +3597,45 @@ } } }, + "node_modules/@mui/material/node_modules/@mui/base": { + "version": "5.0.0-alpha.118", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.118.tgz", + "integrity": "sha512-GAEpqhnuHjRaAZLdxFNuOf2GDTp9sUawM46oHZV4VnYPFjXJDkIYFWfIQLONb0nga92OiqS5DD/scGzVKCL0Mw==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@emotion/is-prop-valid": "^1.2.0", + "@mui/types": "^7.2.3", + "@mui/utils": "^5.11.9", + "@popperjs/core": "^2.11.6", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@mui/private-theming": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz", - "integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.11.9.tgz", + "integrity": "sha512-XMyVIFGomVCmCm92EvYlgq3zrC9K+J6r7IKl/rBJT2/xVYoRY6uM7jeB+Wxh7kXxnW9Dbqsr2yL3cx6wSD1sAg==", "dependencies": { - "@babel/runtime": "^7.20.1", - "@mui/utils": "^5.10.16", + "@babel/runtime": "^7.20.13", + "@mui/utils": "^5.11.9", "prop-types": "^15.8.1" }, "engines": { @@ -3622,11 +3656,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz", - "integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.9.tgz", + "integrity": "sha512-bkh2CjHKOMy98HyOc8wQXEZvhOmDa/bhxMUekFX5IG0/w4f5HJ8R6+K6nakUUYNEgjOWPYzNPrvGB8EcGbhahQ==", "dependencies": { - "@babel/runtime": "^7.20.1", + "@babel/runtime": "^7.20.13", "@emotion/cache": "^11.10.5", "csstype": "^3.1.1", "prop-types": "^15.8.1" @@ -3693,15 +3727,15 @@ } }, "node_modules/@mui/system": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.16.tgz", - "integrity": "sha512-OqI9B1jZ9zQ/dmoqseku4CzdEs9DbLiiMOaWxC3WeAJxM1UavlCgXz0encqm93LIlmSL7TjuHN1/rW8BJCnU8A==", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@mui/private-theming": "^5.10.16", - "@mui/styled-engine": "^5.10.16", - "@mui/types": "^7.2.2", - "@mui/utils": "^5.10.16", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.11.9.tgz", + "integrity": "sha512-h6uarf+l3FO6l75Nf7yO+qDGrIoa1DM9nAMCUFZQsNCDKOInRzcptnm8M1w/Z3gVetfeeGoIGAYuYKbft6KZZA==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@mui/private-theming": "^5.11.9", + "@mui/styled-engine": "^5.11.9", + "@mui/types": "^7.2.3", + "@mui/utils": "^5.11.9", "clsx": "^1.2.1", "csstype": "^3.1.1", "prop-types": "^15.8.1" @@ -3732,9 +3766,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz", - "integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.3.tgz", + "integrity": "sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==", "peerDependencies": { "@types/react": "*" }, @@ -3745,11 +3779,11 @@ } }, "node_modules/@mui/utils": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz", - "integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.11.9.tgz", + "integrity": "sha512-eOJaqzcEs4qEwolcvFAmXGpln+uvouvOS9FUX6Wkrte+4I8rZbjODOBDVNlK+V6/ziTfD4iNKC0G+KfOTApbqg==", "dependencies": { - "@babel/runtime": "^7.20.1", + "@babel/runtime": "^7.20.13", "@types/prop-types": "^15.7.5", "@types/react-is": "^16.7.1 || ^17.0.0", "prop-types": "^15.8.1", @@ -3767,9 +3801,9 @@ } }, "node_modules/@mui/x-date-pickers": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.9.tgz", - "integrity": "sha512-PM3RU8MiwDVi+dSDGJ7ylI0hCe79wSCDfrjghS8ApGGFn/n87S8pUZxsZ5czw3mVRN6VfS2C19peo4nM1Tx+nA==", + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz", + "integrity": "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==", "dependencies": { "@babel/runtime": "^7.18.9", "@date-io/core": "^2.15.0", @@ -4201,9 +4235,9 @@ } }, "node_modules/@netlify/functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.3.0.tgz", - "integrity": "sha512-hN/Fgpz8XIOBfsBPLYUMxVKBlCopgeqGB0popayicnmkFLnvKByTTMYgF01wcF9DBtBQdV0H2h1kPFpMl34I8w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.4.0.tgz", + "integrity": "sha512-gy7ULTIRroc2/jyFVGx1djCmmBMVisIwrvkqggq5B6iDcInRSy2Tpkm+V5C63hKJVkNRskKWtLQKm9ecCaQTjA==", "dev": true, "dependencies": { "is-promise": "^4.0.0" @@ -4213,32 +4247,46 @@ } }, "node_modules/@netlify/ipx": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.3.1.tgz", - "integrity": "sha512-kjw26KYM1jLe+bGRnhqxWs0ACG8eg6kN6wV7uqUu1J8dE6QC73ksyVtCA6IAHl3/5qf5RyMUzquNCp0N0+lXEw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.3.3.tgz", + "integrity": "sha512-2rDdCGPDPW7cyJr57rwfvpouOJx34CLDgfa2yfqTKvPzqCMOqkCi1PN/rHGuvJ/k5trZ8rxmWnnZyEbeQaZcqA==", "dev": true, "dependencies": { - "@netlify/functions": "^1.3.0", + "@netlify/functions": "^1.4.0", "etag": "^1.8.1", - "fs-extra": "^10.0.0", + "fs-extra": "^11.0.0", "ipx": "^0.9.11", "micromatch": "^4.0.5", "mkdirp": "^1.0.4", "murmurhash": "^2.0.0", "node-fetch": "^2.0.0", - "ufo": "^0.8.0", - "unstorage": "^0.6.0" + "ufo": "^1.0.0", + "unstorage": "^1.0.0" + } + }, + "node_modules/@netlify/ipx/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, "node_modules/@netlify/plugin-nextjs": { - "version": "4.29.2", - "resolved": "https://registry.npmjs.org/@netlify/plugin-nextjs/-/plugin-nextjs-4.29.2.tgz", - "integrity": "sha512-Sxaf+eITuDEMUOQ5ySMMDibwi3KmLgbQ5gLVDFuOnm/YDe9l3cHTwJf0Sn4BkvDPTaz6p0kkxAHo2ANt91qwuA==", + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/@netlify/plugin-nextjs/-/plugin-nextjs-4.30.0.tgz", + "integrity": "sha512-+MyfV6biKGVs/jQQUKGi2vN5aFFyRUTeEAItDiSvNhAUi0mOXEkEmu5JN7ZAQtL2oRIKKnxflsZDmtP3DdAahg==", "dev": true, "dependencies": { "@netlify/esbuild": "0.14.39", - "@netlify/functions": "^1.3.0", - "@netlify/ipx": "^1.3.1", + "@netlify/functions": "^1.4.0", + "@netlify/ipx": "^1.3.3", "@vercel/node-bridge": "^2.1.0", "chalk": "^4.1.2", "destr": "^1.1.1", @@ -12876,6 +12924,14 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, + "node_modules/@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -15136,16 +15192,6 @@ "node": ">=8" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -15733,7 +15779,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } @@ -17713,8 +17758,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "optional": true, "engines": { "node": ">=0.10.0" } @@ -18012,9 +18055,9 @@ } }, "node_modules/destr": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/destr/-/destr-1.2.1.tgz", - "integrity": "sha512-ud8w0qMLlci6iFG7CNgeRr8OcbUWMsbfjtWft1eJ5Luqrz/M8Ebqk/KCzne8rKUlIQWWfLv0wD6QHrqOf4GshA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-1.2.2.tgz", + "integrity": "sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==", "dev": true }, "node_modules/destroy": { @@ -18337,6 +18380,11 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, + "node_modules/dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -18576,6 +18624,11 @@ "node": ">= 4" } }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -20117,13 +20170,6 @@ "url": "https://opencollective.com/ramda" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "node_modules/filing-cabinet": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/filing-cabinet/-/filing-cabinet-3.3.0.tgz", @@ -20715,19 +20761,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "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" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -20921,7 +20954,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -21262,15 +21294,15 @@ } }, "node_modules/h3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/h3/-/h3-0.8.6.tgz", - "integrity": "sha512-CSWNOKa3QGo67rFU2PhbFTp0uPJtilNji2Z0pMiSRQt3+OkIW0u3E1WMJqIycLqaTgb9JyFqH/S4mcTyyGtvyQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.0.2.tgz", + "integrity": "sha512-25QqjQMz8pX1NI2rZ/ziNT9B8Aog7jmu2a0o8Qm9kKoH3zOhE+2icVs069h6DEp0g1Dst1+zKfRdRYcK0MogJA==", "dev": true, "dependencies": { "cookie-es": "^0.5.0", - "destr": "^1.2.0", - "radix3": "^0.2.1", - "ufo": "^0.8.6" + "destr": "^1.2.2", + "radix3": "^1.0.0", + "ufo": "^1.0.1" } }, "node_modules/h3-js": { @@ -21686,10 +21718,7 @@ "node_modules/hat": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz", - "integrity": "sha512-zpImx2GoKXy42fVDSEad2BPKuSQdLcqsCYa48K3zHSzM/ugWuYjLDr8IXxpVuL7uCLHw56eaiLxCRthhOzf5ug==", - "engines": { - "node": "*" - } + "integrity": "sha512-zpImx2GoKXy42fVDSEad2BPKuSQdLcqsCYa48K3zHSzM/ugWuYjLDr8IXxpVuL7uCLHw56eaiLxCRthhOzf5ug==" }, "node_modules/he": { "version": "1.2.0", @@ -22190,9 +22219,9 @@ } }, "node_modules/ioredis": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.4.tgz", - "integrity": "sha512-qIpuAEt32lZJQ0XyrloCRdlEdUUNGG9i0UOk6zgzK6igyudNWqEBxfH6OlbnOOoBBvr1WB02mm8fR55CnikRng==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.5.tgz", + "integrity": "sha512-7HKo/ClM2DGLRXdFq8ruS3Uuadensz4A76wPOU0adqlOqd1qkhoLPDaBhmVhUhNGpB+J65/bhLmNB8DDY99HJQ==", "dev": true, "dependencies": { "@ioredis/commands": "^1.1.1", @@ -22267,6 +22296,12 @@ "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", "dev": true }, + "node_modules/ipx/node_modules/ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true + }, "node_modules/is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", @@ -23741,6 +23776,12 @@ "ufo": "^0.8.5" } }, + "node_modules/listhen/node_modules/ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true + }, "node_modules/listr2": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", @@ -24578,9 +24619,9 @@ } }, "node_modules/micro-memoize": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.11.tgz", - "integrity": "sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.14.tgz", + "integrity": "sha512-2tzWP1w2Hh+r7kCYa4f//jpBEA6dAueiuLco38NxfjF9Py3KCCI7wVOTdCvOhmTC043t+ulclVBdl3v+s+UJIQ==", "dev": true }, "node_modules/microevent.ts": { @@ -24896,9 +24937,9 @@ "dev": true }, "node_modules/moize": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.3.tgz", - "integrity": "sha512-Cn+1T5Ypieeo46fn8X98V2gHj2VSRohVPjvT8BRvNANJJC3UOeege/G84xA/3S9c5qA4p9jOdSB1jfhumwe8qw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.5.tgz", + "integrity": "sha512-Fu46qKV9F8DOi2vXimR3yRw/JAJfFRQEFZeclvOFnG92AEFERqwFtu4PIxETYFtCghHGlU1itKcvvNioKgWGIw==", "dev": true, "dependencies": { "fast-equals": "^3.0.1", @@ -24993,13 +25034,6 @@ "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -25253,9 +25287,9 @@ "dev": true }, "node_modules/node-abi": { - "version": "3.30.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.30.0.tgz", - "integrity": "sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==", + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.31.0.tgz", + "integrity": "sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -25265,9 +25299,9 @@ } }, "node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", "dev": true }, "node_modules/node-dir": { @@ -25816,6 +25850,23 @@ "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", "dev": true }, + "node_modules/ofetch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.0.0.tgz", + "integrity": "sha512-d40aof8czZFSQKJa4+F7Ch3UC5D631cK1TTUoK+iNEut9NoiCL+u0vykl/puYVUS2df4tIQl5upQcolIcEzQjQ==", + "dev": true, + "dependencies": { + "destr": "^1.2.1", + "node-fetch-native": "^1.0.1", + "ufo": "^1.0.0" + } + }, + "node_modules/ofetch/node_modules/node-fetch-native": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.0.1.tgz", + "integrity": "sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==", + "dev": true + }, "node_modules/ohmyfetch": { "version": "0.4.21", "resolved": "https://registry.npmjs.org/ohmyfetch/-/ohmyfetch-0.4.21.tgz", @@ -25828,6 +25879,12 @@ "undici": "^5.12.0" } }, + "node_modules/ohmyfetch/node_modules/ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -26140,7 +26197,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -26341,7 +26397,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -26506,6 +26561,14 @@ "node": ">=4" } }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -27224,6 +27287,132 @@ "node": ">=6" } }, + "node_modules/qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -27292,9 +27481,9 @@ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" }, "node_modules/radix3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-0.2.1.tgz", - "integrity": "sha512-FnhArTl5Tq7dodiLeSPKrDUyCQuJqEncP8cKdyy399g8F/cz7GH6FmzA3Rkosu2IZMkpswFFwXfb2ERSiL06pg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.0.0.tgz", + "integrity": "sha512-6n3AEXth91ASapMVKiEh2wrbFJmI+NBilrWE0AbiGgfm0xet0QXC8+a3K19r1UVYjUjctUgB053c3V/J6V0kCQ==", "dev": true }, "node_modules/raf": { @@ -27718,9 +27907,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-map-gl": { - "version": "5.3.19", - "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-5.3.19.tgz", - "integrity": "sha512-Ia8OlbFJIjC9x7XMaUCNtm179NKiD/bjQOt1R/SbBcaz35pSFPUyI0SwOnIUQ98/mR4xopL6phgIfs0B3yZhtQ==", + "version": "5.3.20", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-5.3.20.tgz", + "integrity": "sha512-2BoqOgXe2KIOXmcvz0hv0GuA0X6oGvjZ38Q8C5HE1xqQ6vTlIUkSYRPO3idZZxuiFkM1kZI5Z4NTq6tX4s35AQ==", "dependencies": { "@babel/runtime": "^7.0.0", "@types/geojson": "^7946.0.7", @@ -28463,11 +28652,15 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requirejs": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", @@ -29908,11 +30101,6 @@ "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" } @@ -31494,9 +31682,9 @@ } }, "node_modules/ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.0.1.tgz", + "integrity": "sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==", "dev": true }, "node_modules/uglify-js": { @@ -31528,9 +31716,9 @@ } }, "node_modules/undici": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.13.0.tgz", - "integrity": "sha512-UDZKtwb2k7KRsK4SdXWG7ErXiL7yTGgLWvk2AXO1JMjgjh404nFo6tWSCM2xMpJwMPx3J8i/vfqEh1zOqvj82Q==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.15.0.tgz", + "integrity": "sha512-wCAZJDyjw9Myv+Ay62LAoB+hZLPW9SmKbQkbHIhMw/acKSlpn7WohdMUc/Vd4j1iSMBO0hWwU8mjB7a5p5bl8g==", "dev": true, "dependencies": { "busboy": "^1.6.0" @@ -31844,38 +32032,38 @@ "dev": true }, "node_modules/unstorage": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-0.6.0.tgz", - "integrity": "sha512-X05PIq28pVNA1BypX6Y00YNqAsHM25MGemvpjHeYvwJ8/wg936GoO1YD+VdWlqm3LmVX4fNJ5tlC7uhXsMPgeg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.0.1.tgz", + "integrity": "sha512-J1c4b8K2KeihHrQtdgl/ybIapArUbPaPb+TyJy/nGSauDwDYqciZsEKdkee568P3c8SSH4TIgnGRHDWMPGw+Lg==", "dev": true, "dependencies": { "anymatch": "^3.1.2", "chokidar": "^3.5.3", - "destr": "^1.1.1", - "h3": "^0.8.1", - "ioredis": "^5.2.3", - "listhen": "^0.3.4", + "destr": "^1.2.1", + "h3": "^1.0.1", + "ioredis": "^5.2.4", + "listhen": "^1.0.0", "mkdir": "^0.0.2", "mri": "^1.2.0", - "ohmyfetch": "^0.4.19", - "ufo": "^0.8.6", - "ws": "^8.9.0" + "ofetch": "^1.0.0", + "ufo": "^1.0.0", + "ws": "^8.11.0" } }, "node_modules/unstorage/node_modules/listhen": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-0.3.5.tgz", - "integrity": "sha512-suyt79hNmCFeBIyftcLqLPfYiXeB795gSUWOJT7nspl2IvREY0Q9xvchLhekxvQ0KiOPvWoyALnc9Mxoelm0Pw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.0.1.tgz", + "integrity": "sha512-RBzBGHMCc5wP8J5Vf8WgF4CAJH8dWHi9LaKB7vfzZt54CiH/0dp01rudy2hFD9wCrTM+UfxFVnn5wTIiY+Qhiw==", "dev": true, "dependencies": { "clipboardy": "^3.0.0", "colorette": "^2.0.19", - "defu": "^6.1.0", + "defu": "^6.1.1", "get-port-please": "^2.6.1", "http-shutdown": "^1.2.2", "ip-regex": "^5.0.0", "node-forge": "^1.3.1", - "ufo": "^0.8.6" + "ufo": "^1.0.0" } }, "node_modules/untildify": { @@ -32463,25 +32651,6 @@ "node": ">=0.10.0" } }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "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.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, "node_modules/watchpack-chokidar2/node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -32932,6 +33101,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "node_modules/which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", @@ -34573,9 +34747,9 @@ } }, "@babel/runtime": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", - "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "requires": { "regenerator-runtime": "^0.13.11" } @@ -35755,9 +35929,9 @@ } }, "@mui/core-downloads-tracker": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.16.tgz", - "integrity": "sha512-eK9+olw2ZbXX+vGrtKnN01/vLP1aX0Lq0xok35bqWM1aB93Dcmky/xPNf8h31oJ/C+IzJBjZaZMEDzVZg4Qc0A==" + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.9.tgz", + "integrity": "sha512-YGEtucQ/Nl91VZkzYaLad47Cdui51n/hW+OQm4210g4N3/nZzBxmGeKfubEalf+ShKH4aYDS86XTO6q/TpZnjQ==" }, "@mui/lab": { "version": "5.0.0-alpha.110", @@ -35775,40 +35949,57 @@ } }, "@mui/material": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.16.tgz", - "integrity": "sha512-JSHcDQQ+k30NKkCM/0KX6jq4F5LOrbFKZpS+cEl7scZWOCJpUPH5ccAT5a7O8wzrgNZ8Y9PnwzNvWBrfShpJFw==", - "requires": { - "@babel/runtime": "^7.20.1", - "@mui/base": "5.0.0-alpha.108", - "@mui/core-downloads-tracker": "^5.10.16", - "@mui/system": "^5.10.16", - "@mui/types": "^7.2.2", - "@mui/utils": "^5.10.16", + "version": "5.11.10", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.11.10.tgz", + "integrity": "sha512-hs1WErbiedqlJIZsljgoil908x4NMp8Lfk8di+5c7o809roqKcFTg2+k3z5ucKvs29AXcsdXrDB/kn2K6dGYIw==", + "requires": { + "@babel/runtime": "^7.20.13", + "@mui/base": "5.0.0-alpha.118", + "@mui/core-downloads-tracker": "^5.11.9", + "@mui/system": "^5.11.9", + "@mui/types": "^7.2.3", + "@mui/utils": "^5.11.9", "@types/react-transition-group": "^4.4.5", "clsx": "^1.2.1", "csstype": "^3.1.1", "prop-types": "^15.8.1", "react-is": "^18.2.0", "react-transition-group": "^4.4.5" + }, + "dependencies": { + "@mui/base": { + "version": "5.0.0-alpha.118", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.118.tgz", + "integrity": "sha512-GAEpqhnuHjRaAZLdxFNuOf2GDTp9sUawM46oHZV4VnYPFjXJDkIYFWfIQLONb0nga92OiqS5DD/scGzVKCL0Mw==", + "requires": { + "@babel/runtime": "^7.20.13", + "@emotion/is-prop-valid": "^1.2.0", + "@mui/types": "^7.2.3", + "@mui/utils": "^5.11.9", + "@popperjs/core": "^2.11.6", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + } + } } }, "@mui/private-theming": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz", - "integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.11.9.tgz", + "integrity": "sha512-XMyVIFGomVCmCm92EvYlgq3zrC9K+J6r7IKl/rBJT2/xVYoRY6uM7jeB+Wxh7kXxnW9Dbqsr2yL3cx6wSD1sAg==", "requires": { - "@babel/runtime": "^7.20.1", - "@mui/utils": "^5.10.16", + "@babel/runtime": "^7.20.13", + "@mui/utils": "^5.11.9", "prop-types": "^15.8.1" } }, "@mui/styled-engine": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz", - "integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.9.tgz", + "integrity": "sha512-bkh2CjHKOMy98HyOc8wQXEZvhOmDa/bhxMUekFX5IG0/w4f5HJ8R6+K6nakUUYNEgjOWPYzNPrvGB8EcGbhahQ==", "requires": { - "@babel/runtime": "^7.20.1", + "@babel/runtime": "^7.20.13", "@emotion/cache": "^11.10.5", "csstype": "^3.1.1", "prop-types": "^15.8.1" @@ -35839,31 +36030,31 @@ } }, "@mui/system": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.16.tgz", - "integrity": "sha512-OqI9B1jZ9zQ/dmoqseku4CzdEs9DbLiiMOaWxC3WeAJxM1UavlCgXz0encqm93LIlmSL7TjuHN1/rW8BJCnU8A==", - "requires": { - "@babel/runtime": "^7.20.1", - "@mui/private-theming": "^5.10.16", - "@mui/styled-engine": "^5.10.16", - "@mui/types": "^7.2.2", - "@mui/utils": "^5.10.16", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.11.9.tgz", + "integrity": "sha512-h6uarf+l3FO6l75Nf7yO+qDGrIoa1DM9nAMCUFZQsNCDKOInRzcptnm8M1w/Z3gVetfeeGoIGAYuYKbft6KZZA==", + "requires": { + "@babel/runtime": "^7.20.13", + "@mui/private-theming": "^5.11.9", + "@mui/styled-engine": "^5.11.9", + "@mui/types": "^7.2.3", + "@mui/utils": "^5.11.9", "clsx": "^1.2.1", "csstype": "^3.1.1", "prop-types": "^15.8.1" } }, "@mui/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz", - "integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==" + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.3.tgz", + "integrity": "sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==" }, "@mui/utils": { - "version": "5.10.16", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz", - "integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==", + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.11.9.tgz", + "integrity": "sha512-eOJaqzcEs4qEwolcvFAmXGpln+uvouvOS9FUX6Wkrte+4I8rZbjODOBDVNlK+V6/ziTfD4iNKC0G+KfOTApbqg==", "requires": { - "@babel/runtime": "^7.20.1", + "@babel/runtime": "^7.20.13", "@types/prop-types": "^15.7.5", "@types/react-is": "^16.7.1 || ^17.0.0", "prop-types": "^15.8.1", @@ -35871,9 +36062,9 @@ } }, "@mui/x-date-pickers": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.9.tgz", - "integrity": "sha512-PM3RU8MiwDVi+dSDGJ7ylI0hCe79wSCDfrjghS8ApGGFn/n87S8pUZxsZ5czw3mVRN6VfS2C19peo4nM1Tx+nA==", + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz", + "integrity": "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==", "requires": { "@babel/runtime": "^7.18.9", "@date-io/core": "^2.15.0", @@ -36073,41 +36264,54 @@ "optional": true }, "@netlify/functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.3.0.tgz", - "integrity": "sha512-hN/Fgpz8XIOBfsBPLYUMxVKBlCopgeqGB0popayicnmkFLnvKByTTMYgF01wcF9DBtBQdV0H2h1kPFpMl34I8w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.4.0.tgz", + "integrity": "sha512-gy7ULTIRroc2/jyFVGx1djCmmBMVisIwrvkqggq5B6iDcInRSy2Tpkm+V5C63hKJVkNRskKWtLQKm9ecCaQTjA==", "dev": true, "requires": { "is-promise": "^4.0.0" } }, "@netlify/ipx": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.3.1.tgz", - "integrity": "sha512-kjw26KYM1jLe+bGRnhqxWs0ACG8eg6kN6wV7uqUu1J8dE6QC73ksyVtCA6IAHl3/5qf5RyMUzquNCp0N0+lXEw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@netlify/ipx/-/ipx-1.3.3.tgz", + "integrity": "sha512-2rDdCGPDPW7cyJr57rwfvpouOJx34CLDgfa2yfqTKvPzqCMOqkCi1PN/rHGuvJ/k5trZ8rxmWnnZyEbeQaZcqA==", "dev": true, "requires": { - "@netlify/functions": "^1.3.0", + "@netlify/functions": "^1.4.0", "etag": "^1.8.1", - "fs-extra": "^10.0.0", + "fs-extra": "^11.0.0", "ipx": "^0.9.11", "micromatch": "^4.0.5", "mkdirp": "^1.0.4", "murmurhash": "^2.0.0", "node-fetch": "^2.0.0", - "ufo": "^0.8.0", - "unstorage": "^0.6.0" + "ufo": "^1.0.0", + "unstorage": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } } }, "@netlify/plugin-nextjs": { - "version": "4.29.2", - "resolved": "https://registry.npmjs.org/@netlify/plugin-nextjs/-/plugin-nextjs-4.29.2.tgz", - "integrity": "sha512-Sxaf+eITuDEMUOQ5ySMMDibwi3KmLgbQ5gLVDFuOnm/YDe9l3cHTwJf0Sn4BkvDPTaz6p0kkxAHo2ANt91qwuA==", + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/@netlify/plugin-nextjs/-/plugin-nextjs-4.30.0.tgz", + "integrity": "sha512-+MyfV6biKGVs/jQQUKGi2vN5aFFyRUTeEAItDiSvNhAUi0mOXEkEmu5JN7ZAQtL2oRIKKnxflsZDmtP3DdAahg==", "dev": true, "requires": { "@netlify/esbuild": "0.14.39", - "@netlify/functions": "^1.3.0", - "@netlify/ipx": "^1.3.1", + "@netlify/functions": "^1.4.0", + "@netlify/ipx": "^1.3.3", "@vercel/node-bridge": "^2.1.0", "chalk": "^4.1.2", "destr": "^1.1.1", @@ -42952,6 +43156,14 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, + "@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "requires": { + "@types/node": "*" + } + }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -44791,16 +45003,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -45273,8 +45475,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-css": { "version": "2.0.1", @@ -46813,9 +47014,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "optional": true + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "deck.gl": { "version": "7.3.15", @@ -47044,9 +47243,9 @@ } }, "destr": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/destr/-/destr-1.2.1.tgz", - "integrity": "sha512-ud8w0qMLlci6iFG7CNgeRr8OcbUWMsbfjtWft1eJ5Luqrz/M8Ebqk/KCzne8rKUlIQWWfLv0wD6QHrqOf4GshA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-1.2.2.tgz", + "integrity": "sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==", "dev": true }, "destroy": { @@ -47278,6 +47477,11 @@ } } }, + "dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -47487,6 +47691,11 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -48706,13 +48915,6 @@ } } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "filing-cabinet": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/filing-cabinet/-/filing-cabinet-3.3.0.tgz", @@ -49179,12 +49381,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -49347,8 +49543,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-closest": { "version": "0.0.4", @@ -49607,15 +49802,15 @@ } }, "h3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/h3/-/h3-0.8.6.tgz", - "integrity": "sha512-CSWNOKa3QGo67rFU2PhbFTp0uPJtilNji2Z0pMiSRQt3+OkIW0u3E1WMJqIycLqaTgb9JyFqH/S4mcTyyGtvyQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.0.2.tgz", + "integrity": "sha512-25QqjQMz8pX1NI2rZ/ziNT9B8Aog7jmu2a0o8Qm9kKoH3zOhE+2icVs069h6DEp0g1Dst1+zKfRdRYcK0MogJA==", "dev": true, "requires": { "cookie-es": "^0.5.0", - "destr": "^1.2.0", - "radix3": "^0.2.1", - "ufo": "^0.8.6" + "destr": "^1.2.2", + "radix3": "^1.0.0", + "ufo": "^1.0.1" } }, "h3-js": { @@ -50292,9 +50487,9 @@ } }, "ioredis": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.4.tgz", - "integrity": "sha512-qIpuAEt32lZJQ0XyrloCRdlEdUUNGG9i0UOk6zgzK6igyudNWqEBxfH6OlbnOOoBBvr1WB02mm8fR55CnikRng==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.5.tgz", + "integrity": "sha512-7HKo/ClM2DGLRXdFq8ruS3Uuadensz4A76wPOU0adqlOqd1qkhoLPDaBhmVhUhNGpB+J65/bhLmNB8DDY99HJQ==", "dev": true, "requires": { "@ioredis/commands": "^1.1.1", @@ -50349,6 +50544,12 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", "dev": true + }, + "ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true } } }, @@ -51468,6 +51669,14 @@ "http-shutdown": "^1.2.2", "selfsigned": "^2.0.1", "ufo": "^0.8.5" + }, + "dependencies": { + "ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true + } } }, "listr2": { @@ -52148,9 +52357,9 @@ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "micro-memoize": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.11.tgz", - "integrity": "sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.14.tgz", + "integrity": "sha512-2tzWP1w2Hh+r7kCYa4f//jpBEA6dAueiuLco38NxfjF9Py3KCCI7wVOTdCvOhmTC043t+ulclVBdl3v+s+UJIQ==", "dev": true }, "microevent.ts": { @@ -52391,9 +52600,9 @@ } }, "moize": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.3.tgz", - "integrity": "sha512-Cn+1T5Ypieeo46fn8X98V2gHj2VSRohVPjvT8BRvNANJJC3UOeege/G84xA/3S9c5qA4p9jOdSB1jfhumwe8qw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.5.tgz", + "integrity": "sha512-Fu46qKV9F8DOi2vXimR3yRw/JAJfFRQEFZeclvOFnG92AEFERqwFtu4PIxETYFtCghHGlU1itKcvvNioKgWGIw==", "dev": true, "requires": { "fast-equals": "^3.0.1", @@ -52472,13 +52681,6 @@ "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -52644,18 +52846,18 @@ } }, "node-abi": { - "version": "3.30.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.30.0.tgz", - "integrity": "sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==", + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.31.0.tgz", + "integrity": "sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==", "dev": true, "requires": { "semver": "^7.3.5" } }, "node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", "dev": true }, "node-dir": { @@ -53085,6 +53287,25 @@ "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", "dev": true }, + "ofetch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.0.0.tgz", + "integrity": "sha512-d40aof8czZFSQKJa4+F7Ch3UC5D631cK1TTUoK+iNEut9NoiCL+u0vykl/puYVUS2df4tIQl5upQcolIcEzQjQ==", + "dev": true, + "requires": { + "destr": "^1.2.1", + "node-fetch-native": "^1.0.1", + "ufo": "^1.0.0" + }, + "dependencies": { + "node-fetch-native": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.0.1.tgz", + "integrity": "sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==", + "dev": true + } + } + }, "ohmyfetch": { "version": "0.4.21", "resolved": "https://registry.npmjs.org/ohmyfetch/-/ohmyfetch-0.4.21.tgz", @@ -53095,6 +53316,14 @@ "node-fetch-native": "^0.1.8", "ufo": "^0.8.6", "undici": "^5.12.0" + }, + "dependencies": { + "ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true + } } }, "on-finished": { @@ -53327,8 +53556,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pako": { "version": "1.0.11", @@ -53509,8 +53737,7 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -53633,6 +53860,11 @@ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -54178,6 +54410,104 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -54219,9 +54549,9 @@ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" }, "radix3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-0.2.1.tgz", - "integrity": "sha512-FnhArTl5Tq7dodiLeSPKrDUyCQuJqEncP8cKdyy399g8F/cz7GH6FmzA3Rkosu2IZMkpswFFwXfb2ERSiL06pg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.0.0.tgz", + "integrity": "sha512-6n3AEXth91ASapMVKiEh2wrbFJmI+NBilrWE0AbiGgfm0xet0QXC8+a3K19r1UVYjUjctUgB053c3V/J6V0kCQ==", "dev": true }, "raf": { @@ -54569,9 +54899,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-map-gl": { - "version": "5.3.19", - "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-5.3.19.tgz", - "integrity": "sha512-Ia8OlbFJIjC9x7XMaUCNtm179NKiD/bjQOt1R/SbBcaz35pSFPUyI0SwOnIUQ98/mR4xopL6phgIfs0B3yZhtQ==", + "version": "5.3.20", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-5.3.20.tgz", + "integrity": "sha512-2BoqOgXe2KIOXmcvz0hv0GuA0X6oGvjZ38Q8C5HE1xqQ6vTlIUkSYRPO3idZZxuiFkM1kZI5Z4NTq6tX4s35AQ==", "requires": { "@babel/runtime": "^7.0.0", "@types/geojson": "^7946.0.7", @@ -55156,8 +55486,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "requirejs": { "version": "2.3.6", @@ -57508,9 +57842,9 @@ "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==" }, "ufo": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", - "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.0.1.tgz", + "integrity": "sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==", "dev": true }, "uglify-js": { @@ -57533,9 +57867,9 @@ } }, "undici": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.13.0.tgz", - "integrity": "sha512-UDZKtwb2k7KRsK4SdXWG7ErXiL7yTGgLWvk2AXO1JMjgjh404nFo6tWSCM2xMpJwMPx3J8i/vfqEh1zOqvj82Q==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.15.0.tgz", + "integrity": "sha512-wCAZJDyjw9Myv+Ay62LAoB+hZLPW9SmKbQkbHIhMw/acKSlpn7WohdMUc/Vd4j1iSMBO0hWwU8mjB7a5p5bl8g==", "dev": true, "requires": { "busboy": "^1.6.0" @@ -57772,38 +58106,38 @@ } }, "unstorage": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-0.6.0.tgz", - "integrity": "sha512-X05PIq28pVNA1BypX6Y00YNqAsHM25MGemvpjHeYvwJ8/wg936GoO1YD+VdWlqm3LmVX4fNJ5tlC7uhXsMPgeg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.0.1.tgz", + "integrity": "sha512-J1c4b8K2KeihHrQtdgl/ybIapArUbPaPb+TyJy/nGSauDwDYqciZsEKdkee568P3c8SSH4TIgnGRHDWMPGw+Lg==", "dev": true, "requires": { "anymatch": "^3.1.2", "chokidar": "^3.5.3", - "destr": "^1.1.1", - "h3": "^0.8.1", - "ioredis": "^5.2.3", - "listhen": "^0.3.4", + "destr": "^1.2.1", + "h3": "^1.0.1", + "ioredis": "^5.2.4", + "listhen": "^1.0.0", "mkdir": "^0.0.2", "mri": "^1.2.0", - "ohmyfetch": "^0.4.19", - "ufo": "^0.8.6", - "ws": "^8.9.0" + "ofetch": "^1.0.0", + "ufo": "^1.0.0", + "ws": "^8.11.0" }, "dependencies": { "listhen": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-0.3.5.tgz", - "integrity": "sha512-suyt79hNmCFeBIyftcLqLPfYiXeB795gSUWOJT7nspl2IvREY0Q9xvchLhekxvQ0KiOPvWoyALnc9Mxoelm0Pw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.0.1.tgz", + "integrity": "sha512-RBzBGHMCc5wP8J5Vf8WgF4CAJH8dWHi9LaKB7vfzZt54CiH/0dp01rudy2hFD9wCrTM+UfxFVnn5wTIiY+Qhiw==", "dev": true, "requires": { "clipboardy": "^3.0.0", "colorette": "^2.0.19", - "defu": "^6.1.0", + "defu": "^6.1.1", "get-port-please": "^2.6.1", "http-shutdown": "^1.2.2", "ip-regex": "^5.0.0", "node-forge": "^1.3.1", - "ufo": "^0.8.6" + "ufo": "^1.0.0" } } } @@ -58292,17 +58626,6 @@ } } }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -58644,6 +58967,11 @@ "is-weakset": "^2.0.1" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", diff --git a/package.json b/package.json index 477e9ae750..4fc7da5bcf 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "errorMsg": "Invalid branch name. \n 1.Branch names can contain lowercase characters, numbers, hyphen and underscore. \n 2.Except for 'main' and 'develop', branch names must begin with 'feature/' or 'hotfix/' " }, "engines": { - "node": "14.x", + "node": "16.x", "npm": "8.x" }, "next-unused": { @@ -59,6 +59,7 @@ "@sentry/webpack-plugin": "^1.18.3", "@turf/turf": "^5.1.6", "@types/papaparse": "^5.3.2", + "@types/qrcode": "^1.5.0", "@types/react-gtm-module": "^2.0.1", "@types/react-lazyload": "^2.6.0", "d3-ease": "^2.0.0", @@ -81,6 +82,7 @@ "papaparse": "^5.3.1", "path-browserify": "^1.0.1", "prop-types": "^15.7.2", + "qrcode": "^1.5.1", "react": "^17.0.2", "react-content-loader": "^5.1.4", "react-dom": "^17.0.2", @@ -91,7 +93,7 @@ "react-insta-stories": "^2.2.5", "react-json-editor-ajrm": "^2.5.13", "react-lazyload": "^3.2.0", - "react-map-gl": "5.3.19", + "react-map-gl": "5.3.20", "react-mapbox-gl": "^5.1.0", "react-mapbox-gl-draw": "^2.0.4", "react-player": "^2.8.2", @@ -105,7 +107,7 @@ "devDependencies": { "@emotion/babel-plugin": "^11.9.2", "@emotion/eslint-plugin": "^11.7.0", - "@netlify/plugin-nextjs": "^4.28.6", + "@netlify/plugin-nextjs": "^4.30.0", "@storybook/addon-actions": "^6.5.14", "@storybook/addon-essentials": "^6.5.14", "@storybook/addon-interactions": "^6.5.14", diff --git a/pages/[p].tsx b/pages/[p].tsx index 5feb78e8f9..cde0ad3a33 100644 --- a/pages/[p].tsx +++ b/pages/[p].tsx @@ -64,19 +64,22 @@ export default function Donate({ setInternalCurrencyCode(currency); setInternalLanguage(i18n.language); setCurrencyCode(currency); - const project = await getRequest( - `/app/projects/${router.query.p}`, - handleError, - '/', - { - _scope: 'extended', - currency: currency, - locale: i18n.language, - } - ); - setProject(project); - setShowSingleProject(true); - setZoomLevel(2); + const _project = router.query.p?.toString(); + if (_project) { + const project = await getRequest( + `/app/projects/${_project}`, + handleError, + '/', + { + _scope: 'extended', + currency: currency, + locale: i18n.language, + } + ); + setProject(project); + setShowSingleProject(true); + setZoomLevel(2); + } } } if (router.query.p) { diff --git a/pages/profile/payouts/add-bank-details.tsx b/pages/profile/payouts/add-bank-details.tsx index 3e2917559a..f0062d7249 100644 --- a/pages/profile/payouts/add-bank-details.tsx +++ b/pages/profile/payouts/add-bank-details.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from 'react'; +import React, { ReactElement, useContext } from 'react'; import UserLayout from '../../../src/features/common/Layout/UserLayout/UserLayout'; import Head from 'next/head'; import ManagePayouts, { @@ -6,15 +6,22 @@ import ManagePayouts, { } from '../../../src/features/user/ManagePayouts'; import { useTranslation } from 'next-i18next'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { UserPropsContext } from '../../../src/features/common/Layout/UserPropsContext'; +import AccessDeniedLoader from '../../../src/features/common/ContentLoaders/Projects/AccessDeniedLoader'; export default function AddBankDetailsPage(): ReactElement { const { t, ready } = useTranslation('me'); + const { user } = useContext(UserPropsContext); return ( {ready ? t('managePayouts.titleAddBankDetails') : ''} - + {user.type === 'tpo' ? ( + + ) : ( + + )} ); } diff --git a/pages/profile/payouts/index.tsx b/pages/profile/payouts/index.tsx index c286ea27f1..472be496b5 100644 --- a/pages/profile/payouts/index.tsx +++ b/pages/profile/payouts/index.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement, useState } from 'react'; +import React, { ReactElement, useContext, useState } from 'react'; import TopProgressBar from '../../../src/features/common/ContentLoaders/TopProgressBar'; import UserLayout from '../../../src/features/common/Layout/UserLayout/UserLayout'; import Head from 'next/head'; @@ -7,10 +7,13 @@ import ManagePayouts, { } from '../../../src/features/user/ManagePayouts'; import { useTranslation } from 'next-i18next'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { UserPropsContext } from '../../../src/features/common/Layout/UserPropsContext'; +import AccessDeniedLoader from '../../../src/features/common/ContentLoaders/Projects/AccessDeniedLoader'; export default function OverviewPage(): ReactElement { const { t, ready } = useTranslation('me'); const [progress, setProgress] = useState(0); + const { user } = useContext(UserPropsContext); return ( <> @@ -23,10 +26,14 @@ export default function OverviewPage(): ReactElement { {ready ? t('managePayouts.titleOverview') : ''} - + {user?.type === 'tpo' ? ( + + ) : ( + + )} ); diff --git a/pages/profile/payouts/schedule.tsx b/pages/profile/payouts/schedule.tsx index 5e5a10335b..a7dee6a3c6 100644 --- a/pages/profile/payouts/schedule.tsx +++ b/pages/profile/payouts/schedule.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from 'react'; +import React, { ReactElement, useContext } from 'react'; import UserLayout from '../../../src/features/common/Layout/UserLayout/UserLayout'; import Head from 'next/head'; import ManagePayouts, { @@ -6,15 +6,21 @@ import ManagePayouts, { } from '../../../src/features/user/ManagePayouts'; import { useTranslation } from 'next-i18next'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; - +import { UserPropsContext } from '../../../src/features/common/Layout/UserPropsContext'; +import AccessDeniedLoader from '../../../src/features/common/ContentLoaders/Projects/AccessDeniedLoader'; export default function PayoutSchedulePage(): ReactElement { const { t, ready } = useTranslation('me'); + const { user } = useContext(UserPropsContext); return ( {ready ? t('managePayouts.titlePayoutSchedule') : ''} - + {user?.type === 'tpo' ? ( + + ) : ( + + )} ); } diff --git a/pages/profile/projects/index.tsx b/pages/profile/projects/index.tsx index d0006796c2..9ee7c904c5 100644 --- a/pages/profile/projects/index.tsx +++ b/pages/profile/projects/index.tsx @@ -1,20 +1,22 @@ -import React, { ReactElement } from 'react'; +import React, { ReactElement, useContext } from 'react'; import ProjectsContainer from '../../../src/features/user/ManageProjects/ProjectsContainer'; import UserLayout from '../../../src/features/common/Layout/UserLayout/UserLayout'; import Head from 'next/head'; import { useTranslation } from 'next-i18next'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; - +import { UserPropsContext } from '../../../src/features/common/Layout/UserPropsContext'; +import AccessDeniedLoader from '../../../src/features/common/ContentLoaders/Projects/AccessDeniedLoader'; interface Props {} export default function Register({}: Props): ReactElement { const { t } = useTranslation('me'); + const { user } = useContext(UserPropsContext); return ( {t('projects')} - + {user.type === 'tpo' ? : } ); } diff --git a/pages/profile/projects/new-project.tsx b/pages/profile/projects/new-project.tsx index 8e588f67d7..ed5c46b4a2 100644 --- a/pages/profile/projects/new-project.tsx +++ b/pages/profile/projects/new-project.tsx @@ -115,8 +115,11 @@ export default function AddProjectType(): ReactElement { ) : null} */} - - + {user.type === 'tpo' ? ( + + ) : ( + + )} ); diff --git a/pages/profile/treemapper/import.tsx b/pages/profile/treemapper/import.tsx index bff4320d2c..ae64d93e32 100644 --- a/pages/profile/treemapper/import.tsx +++ b/pages/profile/treemapper/import.tsx @@ -1,20 +1,22 @@ import Head from 'next/head'; -import React, { ReactElement } from 'react'; +import React, { ReactElement, useContext } from 'react'; import UserLayout from '../../../src/features/common/Layout/UserLayout/UserLayout'; import { useTranslation } from 'next-i18next'; import ImportData from '../../../src/features/user/TreeMapper/Import'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; - +import { UserPropsContext } from '../../../src/features/common/Layout/UserPropsContext'; +import AccessDeniedLoader from '../../../src/features/common/ContentLoaders/Projects/AccessDeniedLoader'; interface Props {} export default function Import({}: Props): ReactElement { const { t } = useTranslation('treemapper'); + const { user } = useContext(UserPropsContext); return ( {t('treemapper:importData')} - + {user.type === 'tpo' ? : } ); } diff --git a/pages/profile/treemapper/my-species.tsx b/pages/profile/treemapper/my-species.tsx index db7e0f5368..f004e9144f 100644 --- a/pages/profile/treemapper/my-species.tsx +++ b/pages/profile/treemapper/my-species.tsx @@ -1,20 +1,23 @@ import Head from 'next/head'; -import React, { ReactElement } from 'react'; +import React, { ReactElement, useContext } from 'react'; import UserLayout from '../../../src/features/common/Layout/UserLayout/UserLayout'; import MySpecies from '../../../src/features/user/TreeMapper/MySpecies'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; import { useTranslation } from 'next-i18next'; +import { UserPropsContext } from '../../../src/features/common/Layout/UserPropsContext'; +import AccessDeniedLoader from '../../../src/features/common/ContentLoaders/Projects/AccessDeniedLoader'; interface Props {} export default function MySpeciesPage({}: Props): ReactElement { const { t } = useTranslation('me'); + const { user } = useContext(UserPropsContext); return ( {t('mySpecies')} - + {user.type === 'tpo' ? : } ); } diff --git a/public/static/locales/de/bulkCodes.json b/public/static/locales/de/bulkCodes.json index c18a4d19b4..15d180c50b 100644 --- a/public/static/locales/de/bulkCodes.json +++ b/public/static/locales/de/bulkCodes.json @@ -1,5 +1,6 @@ { "bulkCodesTitle": "Bulk-Codes erzeugen", + "partnerSignupInfo": "Unsere Funktion Planet Cash / Bulk-Codes ist eine neue Funktion speziell für Partner von Plant-for-the-Planet. Melden Sie sich gerne bei Interesse bei <2>partner@plant-for-the-planet.org.", "bulkCodesDescription1": "Mit PlanetCash kannst du Tausende von Codes auf einmal erzeugen.", "bulkCodesDescription2": "Mit dieser Funktion kannst du Codes für benutzerdefinierte Zertifikate, Geschenkkarten, Spenden im Namen von Nutzern und einlösbare Codes erstellen, die du mit deinen Produkten verknüpfen kannst.", "tabCreationMethod": "Herstellungsmethode", @@ -10,20 +11,12 @@ "importMethodText": { "title": "Importieren", "subtitle": "Verwende diese Methode, wenn eines der folgenden Kriterien auf deinen Anwendungsfall zutrifft:", - "details": [ - "Ich möchte für jeden Code den Namen des Empfängers oder seine E-Mail-Adresse angeben.", - "Ich möchte, dass Plant-for-the-Planet nach der Erstellung automatisch eine E-Mail an die Empfänger sendet (optional).", - "Ich möchte Codes für verschiedene Zahlen von Bäumen vergeben." - ] + "details": ["Ich möchte für jeden Code den Namen des Empfängers oder seine E-Mail-Adresse angeben.", "Ich möchte, dass Plant-for-the-Planet nach der Erstellung automatisch eine E-Mail an die Empfänger sendet (optional).", "Ich möchte Codes für verschiedene Zahlen von Bäumen vergeben."] }, "genericMethodText": { "title": "Generische Codes erstellen", "subtitle": "Verwende diese Methode, wenn die folgenden Kriterien auf deinen Anwendungsfall zutreffen:", - "details": [ - "Alle Codes werden den gleichen Wert haben.", - "Ich möchte eine Reihe von Codes für beliebige Empfänger generieren.", - "Namen und E-Mail-Adressen können nicht mit dem Code verknüpft werden." - ] + "details": ["Alle Codes werden den gleichen Wert haben.", "Ich möchte eine Reihe von Codes für beliebige Empfänger generieren.", "Namen und E-Mail-Adressen können nicht mit dem Code verknüpft werden."] }, "projectName": "Projektname", "costPerUnit": "Kosten pro Einheit", @@ -39,7 +32,7 @@ "occasion": "Anlass", "total": "Insgesamt", "chargeConsentText": "Indem du auf Codes erzeugen klickst, erklärst du dich damit einverstanden, dass der oben genannte Betrag von deinem Konto abgebucht wird.", - "invalidEmailWarningText": "Stelle bitte sicher, dass die Empfänger-E-Mail eine gültige Adresse ist. Die Verwendung von Dummy- oder ungültigen E-Mail-Adressen führt gemäß der Nutzungsbedingungen der Plattform zur Sperrung des Kontos.", + "invalidEmailWarningText": "Bitte stelle sicher, dass recipient_email eine gültige E-Mail ist. Die Verwendung von Pseudo-E-Mails oder ungültigen E-Mails führt zur Sperrung des Kontos in Übereinstimmung mit den Geschäftsbedingungen der Plattform.", "projectRequired": "Es wurde kein Projekt ausgewählt.", "unitsPerCodeRequired": "Jeder Code sollte mindestens eine Einheit enthalten.", "codeQuantityRequired": "Du musst mindestens einen Code erstellen.", @@ -50,18 +43,18 @@ "insufficientPCashBalance": "Unzureichendes Guthaben", "addBalanceGeneric": "Bitte klicke hier, um Guthaben hinzuzufügen.", "instructionsUploadCSV": { - "empty": "Drag & Drop / klicken um eine .xslx / .csv Datei zum hochladen auszuwählen.", - "error": "Bitte kontrolliere die Probleme und ziehe die .xslx / .csv Datei hier her zum hochladen.", + "empty": "Drag & Drop / Klicke zur Auswahl einer .xslx/.csv-Datei zum Hochladen.", + "error": "Bitte prüfe etwaige Probleme und ziehe die .xslx/.csv-Datei zum Hochladen hierher.", "processing": "Bitte warte, während wir deine Datei analysieren...", - "success": "Fahre fort oder ziehe eine .xlsx oder .csv Datei hier her um die aktuelle zu ersetzen." + "success": "Weiter oder ziehe eine .xslx or .csv-Datei hierher, um die aktuelle Datei zu ersetzen." }, "statusUploadCSV": { "error": "Fehler", "success": "Dateianalyse abgeschlossen" }, "errorUploadCSV": { - "fileInvalidType": "Es sind nur .csv und .xslx Dateien erlaubt.", - "tooManyFiles": "Lade bitte nur eine einzige Datei hoch.", + "fileInvalidType": "Nur .csv or .xslx Dateien sind zulässig", + "tooManyFiles": "Bitte lade nur eine einzige Datei hoch.", "fileTooSmall": "Die hochgeladene Datei scheint leer zu sein", "fileTooLarge": "Die hochgeladene Datei darf höchstens 5 MB groß sein.", "missingColumns": "In der hochgeladenen Datei fehlen die folgenden Spalten: ", @@ -70,13 +63,13 @@ "unitsNotProvided": "Einheiten fehlen oder sind ungültig bei einigen Empfängern.", "notifyNotPossible": "E-Mail und Name fehlen bei einigen Empfängern, die benachrichtigt werden sollen.", "instructionRowError": "In der 1. Zeile ist ein Fehler aufgetreten. Bitte prüfe, ob du die Anweisungen gelöscht hast oder ob zusätzliche Daten vorhanden sind.", - "invalidEmails": "Die angegebenen E-Mails sind in den folgenden Zeilen ungültig:", + "invalidEmails": "recipient_email enthält falsche/ungültige E-Mails in den folgenden Zeilen: {{rowList}}. Bitte entferne ungültige Emails oder füge gültige Emails hinzu.", "generalError": "Es ist ein Fehler aufgetreten. Bitte versuche es nach einer Weile erneut." }, "successUploadCSV": { - "ignoredColumns": "Zusätzliche Spalten werden ignoriert." + "ignoredColumns": "Zusätzliche Spalten wurden ignoriert" }, - "importInstructions": "Bitte lese die <2>Dokumentation hier, und lade die hier die <5>Excel- oder <8>CSV-Vorlage herunter.", + "importInstructions": "Bitte lesen Sie die <2>Dokumentation hier, lade die <5>Excel-Vorlage hier und die <8>CSV-Vorlage hier herunter.", "donationSuccess": "Deine Spende war erfolgreich. Du wirst in Kürze zur Anzeige der Spendendetails weitergeleitet...", "donationError": { "planet_cash_insufficient_credit": "Verfügbares Guthaben = {{availableBalance}}. Bitte lade Guthaben auf dein PlanetCash-Konto auf, um diese Spende zu tätigen.", @@ -84,4 +77,4 @@ "planet_cash_payment_failure": "Die Transaktion ist fehlgeschlagen. {{reason}}", "planet_cash_invalid_project": "Du kannst für das ausgewählte Projekt nicht spenden." } -} +} \ No newline at end of file diff --git a/public/static/locales/de/donationLink.json b/public/static/locales/de/donationLink.json index 42cc243502..7147243c60 100644 --- a/public/static/locales/de/donationLink.json +++ b/public/static/locales/de/donationLink.json @@ -1,6 +1,7 @@ { "donationLinkTitle": "Erstelle deinen Spenden-Link", "donationLinkDescription": "Gestalte den Spenden-Link so, dass er deinen Bedürfnissen entspricht, damit deine Spender ein tolles Erlebnis haben. Verwende die Vorschau, um zu sehen, wie der Link am Ende aussehen wird.", + "qrCodeDiscription": "Anstelle des Links kann auch der QR-Code verwendet werden, um zum Projekt zu gelangen.", "labelCountry": "Land", "labelLanguages": "Sprache", "countryLanguageTitle": "Land und Sprache einstellen", @@ -8,13 +9,15 @@ "treeCounterTitle": "Unterstütze meinen TreeCounter", "testingTitle": "Testmodus", "urlTitle": "Deine Spenden-Link-URL", + "qrCodeTitle": "Spenden-Link QR-Code", "languages": "Sprachen", "preview": "Vorschau", "copy": "Kopieren", "treeCounterSubtitle": "Baumspenden über diesen Link unterstützen direkt mein Profil", "testingModeSubtitle1": "Verwende zum Testen den Link, der jetzt angezeigt wird. Dies dient nur zu Testzwecken. Damit der richtige Link freigegeben werden kann, musst du den Testmodus deaktivieren.", "testingModeSubtitle2": "Du kannst den Spendenvorgang mit Kartendaten testen unter", - "linkUpdatedMessage": "Der Link wurde aktualisiert", + "linkAndQRCodeUpdatedMessage": "Link und QR-Code wurden aktualisiert.", "treeCounterPrivateAccountSubtitle": "Um dein Profil zu unterstützen, musst du es in den Kontoeinstellungen auf öffentlich setzen.", - "automaticSelection": "Automatische Auswahl" + "automaticSelection": "Automatische Auswahl", + "qrCodeFileName": "Spenden-Link-QR-Code" } \ No newline at end of file diff --git a/public/static/locales/de/me.json b/public/static/locales/de/me.json index 53f67bdca6..5a351d57a2 100644 --- a/public/static/locales/de/me.json +++ b/public/static/locales/de/me.json @@ -247,5 +247,6 @@ "apiKeyMessage2": "Sobald du einen API-Schlüssel generiert hast, benötigen wir eine Zwei-Faktor-Authentifizierung für deine Anmeldung. Diese kannst du beim nächsten Mal einrichten, wenn du dich anmeldest.", "apiKeyMessage3": "Wenn du den API-Schlüssel neu generierst, wird dein bestehender API-Schlüssel sofort ungültig.", "regenerateKey": "Schlüssel neu generieren", - "giftFund": "GiftFund" + "giftFund": "GiftFund", + "donatedTrees": "Gespendete Bäume" } \ No newline at end of file diff --git a/public/static/locales/de/planetcash.json b/public/static/locales/de/planetcash.json index 3ef2910299..c31c3a50bb 100644 --- a/public/static/locales/de/planetcash.json +++ b/public/static/locales/de/planetcash.json @@ -1,5 +1,6 @@ { "title": "PlanetCash", + "partnerSignupInfo": "Unsere Funktion Planet Cash / Bulk-Codes ist eine neue Funktion speziell für Partner von Plant-for-the-Planet. Melden Sie sich gerne bei Interesse bei <2>partner@plant-for-the-planet.org.", "description": "PlanetCash ist ein entwicklerfreundliches Tool, das die Plant-for-the-Planet Plattform mit APIs und eingebauten Tools erweitert. Das PlanetCash-Guthaben ist ein Beitrag zu Plant-for-the-Planet, der vom Spender für verschiedene Projekte auf der Plattform verwendet werden kann.", "termsText": "Bedingungen & Konditionen anzeigen.", "learnMoreText": "Erfahre mehr über PlanetCash.", diff --git a/public/static/locales/de/treemapper.json b/public/static/locales/de/treemapper.json index 3c436c6bd0..9897604f00 100644 --- a/public/static/locales/de/treemapper.json +++ b/public/static/locales/de/treemapper.json @@ -60,5 +60,7 @@ "aliases": "Aliasnamen", "aliasesValidation": "Bitte gibt ein Alias ein", "speciesValidation": "Bitte gib eine Art ein", - "external": "Extern" + "external": "Extern", + "date": "Datum", + "measurements": "Messwerte" } \ No newline at end of file diff --git a/public/static/locales/en/bulkCodes.json b/public/static/locales/en/bulkCodes.json index 6ab217322b..9888adc36c 100644 --- a/public/static/locales/en/bulkCodes.json +++ b/public/static/locales/en/bulkCodes.json @@ -1,5 +1,6 @@ { "bulkCodesTitle": "Issue Bulk Codes", + "partnerSignupInfo": "Use of this feature by Companies is subject to partnership with Plant-for-the-Planet. Please contact <2>partner@plant-for-the-planet.org for details.", "bulkCodesDescription1": "Using PlanetCash you can generate thousands of codes in a single operation.", "bulkCodesDescription2": "You can use this feature to create codes for custom certificates, gift cards, donations on behalf of users and redeemable codes that you can associate with your products.", "tabCreationMethod": "Creation Method", @@ -10,20 +11,12 @@ "importMethodText": { "title": "Import File", "subtitle": "Use this method if one of the following criteria match your use case:", - "details": [ - "I want to provide the Recipient's name or Email for each code.", - "I want Plant-for-the-Planet to automatically email the recipients once it has been generated (optional).", - "I want to issue codes for different tree counts." - ] + "details": ["I want to provide the Recipient's name or Email for each code.", "I want Plant-for-the-Planet to automatically email the recipients once it has been generated (optional).", "I want to issue codes for different tree counts."] }, "genericMethodText": { "title": "Create Generic Codes", "subtitle": "Use this method if the following criteria matches your use case:", - "details": [ - "All codes will have the same value.", - "I want to generate a number of code for arbitrary recipients.", - "Names and Emails cannot be associated with the code." - ] + "details": ["All codes will have the same value.", "I want to generate a number of code for arbitrary recipients.", "Names and Emails cannot be associated with the code."] }, "projectName": "Project Name", "costPerUnit": "Cost per Unit", @@ -84,4 +77,4 @@ "planet_cash_payment_failure": "The transaction failed. {{reason}}", "planet_cash_invalid_project": "You cannot make a donation to the selected project." } -} +} \ No newline at end of file diff --git a/public/static/locales/en/donationLink.json b/public/static/locales/en/donationLink.json index 156b33c92e..c8d5706a6a 100644 --- a/public/static/locales/en/donationLink.json +++ b/public/static/locales/en/donationLink.json @@ -1,6 +1,7 @@ { "donationLinkTitle": "Create Your Donation Link", "donationLinkDescription": "Build the Donation Link to work according to your needs, to give your donors a smooth experience. Use Preview to see how the final result will work.", + "qrCodeDiscription": "Instead of the link, you can also provide the QR-Code to reach your intended project.", "labelCountry": "Country", "labelLanguages": "Language", "countryLanguageTitle": "Set the Country and Language", @@ -8,13 +9,15 @@ "treeCounterTitle": "Support my TreeCounter", "testingTitle": "Testing Mode", "urlTitle": "Your Donation Link URL", + "qrCodeTitle": "Your Donation Link QR-Code", "languages": "Languages", "preview": "Preview", "copy": "Copy", "treeCounterSubtitle": "Tree donations via this link support my profile directly", "testingModeSubtitle1": "To test, use the link that is now displayed. This is for testing only, for the correct link to share you need to turn off the Testing Mode.", "testingModeSubtitle2": "You can test donation flow using cards at", - "linkUpdatedMessage": "Link has been updated", + "linkAndQRCodeUpdatedMessage": "Link and QR-Code have been updated", "treeCounterPrivateAccountSubtitle": "To support your profile, you must set it to public within the account settings.", - "automaticSelection": "Automatic Selection" + "automaticSelection": "Automatic Selection", + "qrCodeFileName": "Donation-link-QR-Code" } \ No newline at end of file diff --git a/public/static/locales/en/giftfunds.json b/public/static/locales/en/giftfunds.json index df3779b7ef..88a1b8cfcd 100644 --- a/public/static/locales/en/giftfunds.json +++ b/public/static/locales/en/giftfunds.json @@ -1,6 +1,6 @@ { - "title": "Gift Fund", - "description1": "If you see this page, then you have balance in your Gift Fund for your active PlanetCash account left. Check the information below.", + "title": "GiftFund", + "description1": "If you see this page, then you have balance in your GiftFund for your active PlanetCash account left. Check the information below.", "description2": "In case of questions, please contact your Key Account Manager.", "project": "Project", "units": "Available Units" diff --git a/public/static/locales/en/me.json b/public/static/locales/en/me.json index 903ef856da..e51ef39411 100644 --- a/public/static/locales/en/me.json +++ b/public/static/locales/en/me.json @@ -247,5 +247,6 @@ "apiKeyMessage2": "Once you generate an API Key, we will require a two factor authentication for your login. This you’ll be able to setup next time you log in.", "apiKeyMessage3": "Regenerating an API Key will invalidate your existing API Key immediately.", "regenerateKey": "Regenerate Key", - "giftFund": "GiftFund" + "giftFund": "GiftFund", + "donatedTrees": "Donated Trees" } \ No newline at end of file diff --git a/public/static/locales/en/planetcash.json b/public/static/locales/en/planetcash.json index 0fae5a9f3c..6f28c2e511 100644 --- a/public/static/locales/en/planetcash.json +++ b/public/static/locales/en/planetcash.json @@ -1,5 +1,6 @@ { "title": "PlanetCash", + "partnerSignupInfo": "Use of this feature by Companies is subject to partnership with Plant-for-the-Planet. Please contact <2>partner@plant-for-the-planet.org for details.", "description": "PlanetCash is a developer friendly tool that extends the Plant-for-the-Planet Platform with APIs and built in tools. PlanetCash balance is a contribution to Plant-for-the-Planet that can be dedicated by the donor to different projects on the platform.", "termsText": "View Terms & Conditions.", "learnMoreText": "Learn more about PlanetCash.", diff --git a/public/static/locales/en/treemapper.json b/public/static/locales/en/treemapper.json index fc3f9f4c88..207f20d640 100644 --- a/public/static/locales/en/treemapper.json +++ b/public/static/locales/en/treemapper.json @@ -60,5 +60,7 @@ "aliases": "Aliases", "aliasesValidation": "Please enter aliases", "speciesValidation": "Please enter a species", - "external": "External" + "external": "External", + "date": "Date", + "measurements": "Measurements" } \ No newline at end of file diff --git a/src/features/common/Layout/SingleColumnView/index.tsx b/src/features/common/Layout/SingleColumnView/index.tsx index c81b6ac37e..af7a25a8c3 100644 --- a/src/features/common/Layout/SingleColumnView/index.tsx +++ b/src/features/common/Layout/SingleColumnView/index.tsx @@ -1,6 +1,5 @@ import { ReactElement } from 'react'; import { Grid } from '@mui/material'; -import CenteredContainer from '../CenteredContainer'; interface SingleColumnViewProps { children: React.ReactNode; } @@ -14,7 +13,7 @@ export default function SingleColumnView({ }: SingleColumnViewProps): ReactElement { return ( - + {children} diff --git a/src/features/common/types/user.d.ts b/src/features/common/types/user.d.ts index fcd2084616..cec6472b36 100644 --- a/src/features/common/types/user.d.ts +++ b/src/features/common/types/user.d.ts @@ -1,12 +1,19 @@ import { PaymentFrequencies } from '../../../utils/constants/payoutConstants'; // TO CHECK WITH JORGO - WHAT PARAMETERS ARE PRESENT, AND WHAT IS THEIR TYPE? + +export interface GiftFundsType { + maxUnits: number; + openUnits: number; + project: string; +} export interface PlanetCash { account: string; country: string; currency: string; balance: number; creditLimit: number; + giftFunds: GiftFunds[]; } export interface Score { diff --git a/src/features/user/BulkCodes/index.tsx b/src/features/user/BulkCodes/index.tsx index 9682c29fdb..93b9a242d6 100644 --- a/src/features/user/BulkCodes/index.tsx +++ b/src/features/user/BulkCodes/index.tsx @@ -1,4 +1,4 @@ -import { useTranslation } from 'next-i18next'; +import { useTranslation, Trans } from 'next-i18next'; import React, { ReactElement, useEffect, @@ -156,11 +156,26 @@ export default function BulkCodes({ - {t('bulkCodes:bulkCodesDescription1')} -
- {t('bulkCodes:bulkCodesDescription2')} -

+
+

+ + Use of this feature by Companies is subject to partnership with + Plant-for-the-Planet. Please contact{' '} + + partner@plant-for-the-planet.org + {' '} + for details. + +

+

+ {t('bulkCodes:bulkCodesDescription1')} +
+ {t('bulkCodes:bulkCodesDescription2')} +

+
} > diff --git a/src/features/user/GiftFunds/Details.tsx b/src/features/user/GiftFunds/Details.tsx deleted file mode 100644 index 1000d61c12..0000000000 --- a/src/features/user/GiftFunds/Details.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useContext, ReactElement } from 'react'; -import { UserPropsContext } from '../../common/Layout/UserPropsContext'; -import styles from './GiftFunds.module.scss'; -import { useTranslation } from 'next-i18next'; - -const Details = (): ReactElement | null => { - const { user } = useContext(UserPropsContext); - const { t, ready } = useTranslation('giftfunds'); - - if (ready && user.planetCash) { - return ( -
- {user.planetCash.giftFunds - .filter((gift) => gift.openUnits !== 0) - .map((gift, index) => ( - //Not displaying details for gift fund where open units = 0 -
-
- - {user.planetCash?.country}/{user.planetCash?.currency}{' '} - {t('title')} - -
-
-
-
- {t('project')} -

{gift.project}

-
- -
- {t('units')} -

{Number(gift.openUnits / 100).toFixed(2)}

-
-
-
- ))} -
- ); - } - - return null; -}; - -export default Details; diff --git a/src/features/user/GiftFunds/GiftFundDetails.tsx b/src/features/user/GiftFunds/GiftFundDetails.tsx new file mode 100644 index 0000000000..e052d74c7b --- /dev/null +++ b/src/features/user/GiftFunds/GiftFundDetails.tsx @@ -0,0 +1,73 @@ +import React, { useContext, ReactElement } from 'react'; +import { UserPropsContext } from '../../common/Layout/UserPropsContext'; +import { useTranslation } from 'next-i18next'; +import { Divider, Grid, styled } from '@mui/material'; +import { GiftFundsType } from '../../common/types/user'; + +interface Props { + giftFund: GiftFundsType; +} + +const GiftFundDetails = ({ giftFund }: Props): ReactElement | null => { + const { user } = useContext(UserPropsContext); + const { t, ready } = useTranslation('giftfunds'); + + const StyledContainer = styled('article')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + padding: 24, + borderRadius: 9, + boxShadow: theme.shadows[1], + marginBottom: 24, + fontSize: '0.875rem', + gap: 16, + '& .container_heading': { + fontWeight: theme.typography.fontWeightBold, + }, + '& .container_details': { + gap: 16, + }, + })); + + const SingleDetail = styled('div')(({ theme }) => ({ + flex: 1, + '& .detailTitle': { + fontWeight: theme.typography.fontWeightBold, + marginBottom: 9, + }, + })); + + if (ready && user.planetCash) { + return ( + <> + + + {user.planetCash?.country}/{user.planetCash?.currency} {t('title')} + + + + + {t('project')} +

{giftFund.project}

+
+ + + {t('units')} +

+ {Number(giftFund.openUnits / 100).toFixed(2)} +

+
+
+
+ + ); + } + + return null; +}; + +export default GiftFundDetails; diff --git a/src/features/user/GiftFunds/GiftFunds.module.scss b/src/features/user/GiftFunds/GiftFunds.module.scss deleted file mode 100644 index ae96bf48ad..0000000000 --- a/src/features/user/GiftFunds/GiftFunds.module.scss +++ /dev/null @@ -1,33 +0,0 @@ -@import '../../../theme/theme'; - -.allGiftFundscontainer { - display: flex; - flex-direction: column; - gap: 24px; -} -.container { - - background-color: $backgroundColor; - padding: 34px; - max-width: 700px; - border-radius: 9px; - box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), - 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%); - - .container_heading { - padding-bottom: 16px; - } - .container_details { - display: flex; - flex-direction: row; - margin-top: 24px; - flex-wrap: wrap; - gap: 15px; - div { - flex:1; - } - } - hr { - border: 1px solid #DDDBDA; - } -} diff --git a/src/features/user/GiftFunds/index.tsx b/src/features/user/GiftFunds/index.tsx index a7f2f4aae2..088b65c2c6 100644 --- a/src/features/user/GiftFunds/index.tsx +++ b/src/features/user/GiftFunds/index.tsx @@ -1,9 +1,11 @@ -import React, { useEffect, useContext } from 'react'; +import React, { useEffect, useContext, useState } from 'react'; import DashboardView from '../../common/Layout/DashboardView'; -import Details from './Details'; +import GiftFundDetails from './GiftFundDetails'; import { useTranslation } from 'next-i18next'; import { UserPropsContext } from '../../common/Layout/UserPropsContext'; import { useRouter } from 'next/router'; +import SingleColumnView from '../../common/Layout/SingleColumnView'; +import { GiftFundsType } from '../../common/types/user'; const GiftFunds = () => { const { t, ready } = useTranslation('giftfunds'); @@ -18,6 +20,21 @@ const GiftFunds = () => { ) router.push('/profile'); }, [user]); + + const [validGiftFunds, setValidGiftFunds] = useState( + null + ); + + React.useEffect(() => { + //Not displaying details for gift fund where open units = 0 + const nonZeroOpenUnitsGiftFunds = user.planetCash?.giftFunds.filter( + (gift) => gift.openUnits !== 0 + ); + setValidGiftFunds( + nonZeroOpenUnitsGiftFunds ? nonZeroOpenUnitsGiftFunds : null + ); + }, [user]); + return ( ready && ( {

} > -
+ + {validGiftFunds?.map((giftFund, index) => ( + + ))} + ) ); diff --git a/src/features/user/PlanetCash/index.tsx b/src/features/user/PlanetCash/index.tsx index 7dc1bb7cba..0ead98efd0 100644 --- a/src/features/user/PlanetCash/index.tsx +++ b/src/features/user/PlanetCash/index.tsx @@ -5,7 +5,7 @@ import { useContext, useCallback, } from 'react'; -import { useTranslation } from 'next-i18next'; +import { Trans, useTranslation } from 'next-i18next'; import DashboardView from '../../common/Layout/DashboardView'; import TabbedView from '../../common/Layout/TabbedView'; import { TabItem } from '../../common/Layout/TabbedView/TabbedViewTypes'; @@ -146,26 +146,41 @@ export default function PlanetCash({ - {t('description')}{' '} - - {t('learnMoreText')} - -
- - {t('termsText')} - -

+
+

+ + Use of this feature by Companies is subject to partnership with + Plant-for-the-Planet. Please contact{' '} + + partner@plant-for-the-planet.org + {' '} + for details. + +

+

+ {t('description')}{' '} + + {t('learnMoreText')} + +
+ + {t('termsText')} + +

+
} > diff --git a/src/features/user/Profile/components/MyTrees/MyTrees.tsx b/src/features/user/Profile/components/MyTrees/MyTrees.tsx index 2f72d3fd5f..e3f4368c00 100644 --- a/src/features/user/Profile/components/MyTrees/MyTrees.tsx +++ b/src/features/user/Profile/components/MyTrees/MyTrees.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from 'react'; +import React from 'react'; import styles from '../../styles/MyTrees.module.scss'; import dynamic from 'next/dynamic'; import { @@ -23,7 +23,7 @@ interface Props { } export default function MyTrees({ profile, authenticatedType, token }: Props) { - const { t, i18n, ready } = useTranslation(['country', 'me']); + const { t, ready } = useTranslation(['country', 'me']); const [contributions, setContributions] = React.useState(); const { handleError } = React.useContext(ErrorHandlingContext); @@ -85,6 +85,16 @@ export default function MyTrees({ profile, authenticatedType, token }: Props) { ? t('me:myForest') : t('me:nameForest', { name: profile.displayName })} +
+
+ +

{t('me:donatedTrees')}

+
+
+ +

{t('me:registeredTrees')}

+
+
{contributions.map((contribution: any, index: any) => { @@ -102,7 +112,7 @@ export default function MyTrees({ profile, authenticatedType, token }: Props) { function TreeList({ contribution }: any) { const date = formatDate(contribution.properties.plantDate); - const { t, i18n, ready } = useTranslation(['country', 'me']); + const { t, i18n } = useTranslation(['country', 'me']); return (
diff --git a/src/features/user/Profile/components/RedeemModal.tsx b/src/features/user/Profile/components/RedeemModal.tsx index 8a71024ff7..bcc2aeca6c 100644 --- a/src/features/user/Profile/components/RedeemModal.tsx +++ b/src/features/user/Profile/components/RedeemModal.tsx @@ -37,7 +37,7 @@ export default function RedeemModal({ const [validCodeData, setValidCodeData] = React.useState<{} | undefined>(); const [isCodeRedeemed, setIsCodeRedeemed] = React.useState(false); const [inputCode, setInputCode] = React.useState(''); - + const [disable, setDisable] = React.useState(false); const handleAnotherCode = () => { setErrorMessage(''); setInputCode(''); @@ -49,12 +49,14 @@ export default function RedeemModal({ }); async function redeemCode(data: FormData) { + setDisable(true); setIsUploadingData(true); const submitData = { code: data.code, }; if (contextLoaded && user) { postAuthenticatedRequest(`/app/redeem`, submitData, token).then((res) => { + setDisable(false); if (res.error_code === 'already_redeemed') { setErrorMessage(t('redeem:alreadyRedeemed')); setIsUploadingData(false); @@ -182,6 +184,7 @@ export default function RedeemModal({ id={'redeemCodeModal'} onClick={handleSubmit(redeemCode)} className={`primaryButton ${styles.redeemCode}`} + disabled={disable} > {isUploadingData ? (
diff --git a/src/features/user/Profile/styles/MyTrees.module.scss b/src/features/user/Profile/styles/MyTrees.module.scss index d737a914b7..72427dc71e 100644 --- a/src/features/user/Profile/styles/MyTrees.module.scss +++ b/src/features/user/Profile/styles/MyTrees.module.scss @@ -188,6 +188,27 @@ font-family: $primaryFontFamily; } + +.registeredTrees { + color: #3d67b1; +} + +.donatedTrees{ + color: #68b030; +} + +.MyTreesLegend { + display: flex; + gap: 14px; + padding-bottom: 10px; + div { + display: flex; + gap: 5px; + } +} + + + @include mdTabletView { .myTreesSection { height: 80vh; diff --git a/src/features/user/TreeMapper/TreeMapper.module.scss b/src/features/user/TreeMapper/TreeMapper.module.scss index 2f45620be2..84b2c5a29b 100644 --- a/src/features/user/TreeMapper/TreeMapper.module.scss +++ b/src/features/user/TreeMapper/TreeMapper.module.scss @@ -185,6 +185,19 @@ grid-template-columns: 1fr; } +.measurements { + grid-column-start: 1; + grid-column-end: 3; + display: grid; + grid-row-gap: 20px; + grid-template-columns: 2fr 1fr 1fr; +} + +.rowDetail { + grid-column-start: 1; + grid-column-end: 3; +} + .singleDetail { display: flex; flex-direction: column; diff --git a/src/features/user/TreeMapper/components/PlantLocationPage.tsx b/src/features/user/TreeMapper/components/PlantLocationPage.tsx index 0268811934..c4790bc567 100644 --- a/src/features/user/TreeMapper/components/PlantLocationPage.tsx +++ b/src/features/user/TreeMapper/components/PlantLocationPage.tsx @@ -106,37 +106,21 @@ export function LocationDetails({

{t('captureStatus')}

{t(location.captureStatus)}
- {location?.deviceLocation ? ( -
-

- {t('coordinates')} -

-
{text}
-
- ) : ( - [] - )} {/*

{t('guid')}

{location.id}
*/} - {location.measurements && ( - <> + {location?.deviceLocation ? ( +
-

{t('height')}

-
- {location.measurements?.height} - {t('m')} -
+

+ {t('coordinates')} +

+
{text.split(',').join(', ')}
-
-

{t('width')}

-
- {location.measurements?.width} - {t('cm')} -
-
- +
+ ) : ( + [] )}

{t('plantDate')}

@@ -148,6 +132,41 @@ export function LocationDetails({ {formatDate(location.registrationDate)}
+ {location.measurements && ( + <> +
+
+

{t('measurements')}

+
+
+
+
+

{t('date')}

+ {location.history?.map((h, index) => ( +
+ {formatDate(h?.created)} +
+ ))} +
+
+

{t('height')}

+ {location.history?.map((h, index) => ( +
+ {h?.measurements?.height} {t('m')} +
+ ))} +
+
+

{t('width')}

+ {location.history?.map((h, index) => ( +
+ {h?.measurements?.width} {t('cm')} +
+ ))} +
+
+ + )} {location.plantProject && (

{t('plantProject')}

diff --git a/src/features/user/Widget/DonationLink/DonationLinkForm.module.scss b/src/features/user/Widget/DonationLink/DonationLinkForm.module.scss index 79106bec69..e3ec3fc7f8 100644 --- a/src/features/user/Widget/DonationLink/DonationLinkForm.module.scss +++ b/src/features/user/Widget/DonationLink/DonationLinkForm.module.scss @@ -4,7 +4,7 @@ display: flex; flex-direction: column; gap: 12px; - } +} .formHeader { font-size: $fontMedium; color: $primaryFontColor; @@ -12,3 +12,9 @@ flex: 1; margin-right: auto; } + +.qrContainer { + display: block; + width: 150px; + height: 150px; +} diff --git a/src/features/user/Widget/DonationLink/DonationLinkForm.tsx b/src/features/user/Widget/DonationLink/DonationLinkForm.tsx index a1e3ae36d3..21f459bfb4 100644 --- a/src/features/user/Widget/DonationLink/DonationLinkForm.tsx +++ b/src/features/user/Widget/DonationLink/DonationLinkForm.tsx @@ -18,6 +18,7 @@ import { Project } from '../../../common/types/project'; import { allCountries } from '../../../../utils/constants/countries'; import CustomSnackbar from '../../../common/CustomSnackbar'; import StyledForm from '../../../common/Layout/StyledForm'; +import QRCode from 'qrcode'; interface DonationLinkFormProps { projectsList: Project[] | null; @@ -38,12 +39,24 @@ const DonationLinkForm = ({ languageName: 'Automatic Selection', }); const [donationUrl, setDonationUrl] = useState(''); - const { t, ready } = useTranslation(['donationLink', 'country']); + const { t, ready } = useTranslation(['donationLink', 'country', 'me']); const [localProject, setLocalProject] = useState(null); const [isSupport, setIsSupport] = useState(!user.isPrivate); const [isTesting, setIsTesting] = useState(false); const [isArrayUpdated, setIsArrayUpdated] = useState(false); const [isLinkUpdated, setIsLinkUpdated] = useState(false); + const [qrCode, setQrCode] = useState(null); + + const getDonationORCode = async () => { + const data = await QRCode.toDataURL(donationUrl); + setQrCode(data); + }; + + useEffect(() => { + if (donationUrl) { + getDonationORCode(); + } + }, [donationUrl]); const handleUrlChange = () => { const link = isTesting @@ -96,6 +109,16 @@ const DonationLinkForm = ({ setIsLinkUpdated(false); }; + const downloadBase64File = () => { + if (qrCode) { + const linkSource = qrCode; + const downloadLink = document.createElement('a'); + downloadLink.href = linkSource; + downloadLink.download = t('donationLink:qrCodeFileName'); + downloadLink.click(); + } + }; + if (isArrayUpdated && ready) { return ( @@ -227,24 +250,47 @@ const DonationLinkForm = ({ /> +
+ +
- {isLinkUpdated && ( - + {qrCode && ( +
+
+ {t('donationLink:qrCodeTitle')} +
+ +
+ +
+
)}
- + {isLinkUpdated && ( + + )} ); } diff --git a/src/features/user/Widget/DonationLink/index.tsx b/src/features/user/Widget/DonationLink/index.tsx index cef6827764..e8d270773d 100644 --- a/src/features/user/Widget/DonationLink/index.tsx +++ b/src/features/user/Widget/DonationLink/index.tsx @@ -8,6 +8,7 @@ import DonationLinkForm from './DonationLinkForm'; import SingleColumnView from '../../../common/Layout/SingleColumnView'; import { Project, MapSingleProject } from '../../../common/types/project'; import { TENANT_ID } from '../../../../utils/constants/environment'; +import CenteredContainer from '../../../common/Layout/CenteredContainer'; export default function DonationLink(): ReactElement | null { const { handleError } = useContext(ErrorHandlingContext); @@ -56,10 +57,17 @@ export default function DonationLink(): ReactElement | null { return ready ? ( {t('donationLink:donationLinkDescription')}

} + subtitle={ +
+

{t('donationLink:donationLinkDescription')}

+

{t('donationLink:qrCodeDiscription')}

+
+ } > - + + +
) : null; diff --git a/src/utils/apiRequests/api.ts b/src/utils/apiRequests/api.ts index 33c7c412f2..fb0dc7ed54 100644 --- a/src/utils/apiRequests/api.ts +++ b/src/utils/apiRequests/api.ts @@ -105,6 +105,7 @@ export async function getRequest( const fullUrl = isAbsoluteUrl(url) ? url : `${process.env.API_ENDPOINT}${url}${queryStringSuffix}`; + await fetch(fullUrl, { method: 'GET', headers: { @@ -148,6 +149,7 @@ export async function getAuthenticatedRequest( Authorization: `Bearer ${token}`, 'x-locale': `${lang}`, 'x-accept-versions': version ? version : '1.0.3', + ...(header ? header : {}), }, }) .then(async (res) => { @@ -337,9 +339,7 @@ export async function getRasterData( errorHandler?: Function ): Promise { let result; - const res = await fetch( - `${process.env.SITE_IMAGERY_API_URL}/api/v1/project/${id}` - ) + await fetch(`${process.env.SITE_IMAGERY_API_URL}/api/v1/project/${id}`) .then(async (res) => { result = res.status === 200 ? await res.json() : null; handleApiError(res.status, result, errorHandler);