diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c2533790..7b684dd5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,13 +19,12 @@ jobs: # Checks-out repository - name: Checkout uses: actions/checkout@v2 - - uses: pnpm/action-setup@v2.0.1 + - uses: pnpm/action-setup@v2.2.4 with: - version: 6.14.3 - - uses: actions/setup-node@v2 + version: latest + - uses: actions/setup-node@v3 with: - node-version: '16' - cache: 'pnpm' + node-version: latest - run: pnpm install - run: pnpm format - run: pnpm build @@ -33,10 +32,10 @@ jobs: # Upload Artifact - name: Upload Artifact - uses: 'marvinpinto/action-automatic-releases@latest' + uses: "marvinpinto/action-automatic-releases@latest" with: - repo_token: '${{ secrets.GITHUB_TOKEN }}' - automatic_release_tag: 'latest' + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" prerelease: false files: | ./dist/build.tar diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..689e576c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Ignore artifacts: +dist +pnpm-lock.yaml +stats.html \ No newline at end of file diff --git a/package.json b/package.json index 9816687d..7ff9b9db 100644 --- a/package.json +++ b/package.json @@ -9,41 +9,42 @@ "build": "tsc && vite build", "preview": "vite preview", "package": "gzipper c -i html,js,css,png,ico,svg,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ $(ls ./dist/output/)", - "format": "prettier --write 'src/**/*.{ts,tsx}' && eslint src/*.{ts,tsx}", + "format:check": "prettier --check . && eslint src/**/*.{ts,tsx}", + "format:fix": "prettier --write . && eslint --fix src/**/*.{ts,tsx}", "check:unimported": "unimported" }, "repository": { "type": "git", - "url": "git+https://github.com/meshtastic/meshtastic-web.git" + "url": "git+https://github.com/meshtastic/web.git" }, "bugs": { - "url": "https://github.com/meshtastic/meshtastic-web/issues" + "url": "https://github.com/meshtastic/web/issues" }, "homepage": "https://meshtastic.org", "dependencies": { "@emeraldpay/hashicon-react": "^0.5.2", - "@headlessui/react": "^1.7.3", - "@heroicons/react": "^2.0.12", + "@headlessui/react": "^1.7.4", + "@heroicons/react": "^2.0.13", + "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^2.9.10", - "@meshtastic/eslint-config": "^1.0.8", - "@meshtastic/meshtasticjs": "^0.6.112", + "@meshtastic/meshtasticjs": "^0.7.0", "@tailwindcss/line-clamp": "^0.4.2", - "@tailwindcss/typography": "^0.5.7", + "@tailwindcss/typography": "^0.5.8", "base64-js": "^1.5.1", - "chart.js": "^3.9.1", - "chartjs-adapter-date-fns": "^2.0.0", + "chart.js": "^4.0.1", + "chartjs-adapter-date-fns": "^2.0.1", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", "date-fns": "^2.29.3", "geodesy": "^2.4.0", "immer": "^9.0.16", "mapbox-gl": "npm:empty-npm-package@^1.0.0", - "maplibre-gl": "^2.4.0", + "maplibre-gl": "2.4.0", "pretty-ms": "^8.0.0", "react": "^18.2.0", - "react-chartjs-2": "^4.3.1", + "react-chartjs-2": "^5.0.1", "react-dom": "^18.2.0", - "react-hook-form": "^7.38.0", + "react-hook-form": "^7.39.6", "react-hot-toast": "^2.4.0", "react-icons": "^4.6.0", "react-json-pretty": "^2.2.0", @@ -51,30 +52,38 @@ "react-map-gl": "^7.0.19", "react-qrcode-logo": "^2.8.0", "rfc4648": "^1.5.2", - "zustand": "4.1.3" + "zustand": "4.1.4" }, "devDependencies": { "@tailwindcss/forms": "^0.5.3", - "@types/chrome": "^0.0.200", + "@types/chrome": "^0.0.203", "@types/geodesy": "^2.2.3", - "@types/node": "^18.11.7", - "@types/react": "^18.0.23", - "@types/react-dom": "^18.0.7", + "@types/node": "^18.11.9", + "@types/react": "^18.0.25", + "@types/react-dom": "^18.0.9", "@types/w3c-web-serial": "^1.0.3", "@types/web-bluetooth": "^0.0.16", + "@typescript-eslint/eslint-plugin": "^5.44.0", + "@typescript-eslint/parser": "^5.44.0", "@vitejs/plugin-react": "^2.2.0", - "autoprefixer": "^10.4.12", - "gzipper": "^7.1.0", - "postcss": "^8.4.18", - "prettier": "^2.7.1", - "prettier-plugin-tailwindcss": "^0.1.13", + "autoprefixer": "^10.4.13", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-react": "^7.31.11", + "eslint-plugin-react-hooks": "^4.6.0", + "gzipper": "^7.2.0", + "postcss": "^8.4.19", + "prettier": "^2.8.0", + "prettier-plugin-tailwindcss": "^0.2.0", "rollup-plugin-visualizer": "^5.8.3", - "tailwindcss": "^3.2.1", - "tar": "^6.1.11", - "tslib": "^2.4.0", - "typescript": "^4.8.4", - "unimported": "^1.22.0", - "vite": "^3.2.0", + "tailwindcss": "^3.2.4", + "tar": "^6.1.12", + "tslib": "^2.4.1", + "typescript": "^4.9.3", + "unimported": "^1.23.0", + "vite": "^3.2.4", "vite-plugin-environment": "^1.1.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fcc971bd..e18e95d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,42 +2,50 @@ lockfileVersion: 5.4 specifiers: '@emeraldpay/hashicon-react': ^0.5.2 - '@headlessui/react': ^1.7.3 - '@heroicons/react': ^2.0.12 + '@headlessui/react': ^1.7.4 + '@heroicons/react': ^2.0.13 + '@hookform/error-message': ^2.0.1 '@hookform/resolvers': ^2.9.10 - '@meshtastic/eslint-config': ^1.0.8 - '@meshtastic/meshtasticjs': ^0.6.112 + '@meshtastic/meshtasticjs': ^0.7.0 '@tailwindcss/forms': ^0.5.3 '@tailwindcss/line-clamp': ^0.4.2 - '@tailwindcss/typography': ^0.5.7 - '@types/chrome': ^0.0.200 + '@tailwindcss/typography': ^0.5.8 + '@types/chrome': ^0.0.203 '@types/geodesy': ^2.2.3 - '@types/node': ^18.11.7 - '@types/react': ^18.0.23 - '@types/react-dom': ^18.0.7 + '@types/node': ^18.11.9 + '@types/react': ^18.0.25 + '@types/react-dom': ^18.0.9 '@types/w3c-web-serial': ^1.0.3 '@types/web-bluetooth': ^0.0.16 + '@typescript-eslint/eslint-plugin': ^5.44.0 + '@typescript-eslint/parser': ^5.44.0 '@vitejs/plugin-react': ^2.2.0 - autoprefixer: ^10.4.12 + autoprefixer: ^10.4.13 base64-js: ^1.5.1 - chart.js: ^3.9.1 - chartjs-adapter-date-fns: ^2.0.0 + chart.js: ^4.0.1 + chartjs-adapter-date-fns: ^2.0.1 class-transformer: ^0.5.1 class-validator: ^0.13.2 date-fns: ^2.29.3 + eslint: ^8.28.0 + eslint-config-prettier: ^8.5.0 + eslint-import-resolver-typescript: ^3.5.2 + eslint-plugin-import: ^2.26.0 + eslint-plugin-react: ^7.31.11 + eslint-plugin-react-hooks: ^4.6.0 geodesy: ^2.4.0 - gzipper: ^7.1.0 + gzipper: ^7.2.0 immer: ^9.0.16 mapbox-gl: npm:empty-npm-package@^1.0.0 - maplibre-gl: ^2.4.0 - postcss: ^8.4.18 - prettier: ^2.7.1 - prettier-plugin-tailwindcss: ^0.1.13 + maplibre-gl: 2.4.0 + postcss: ^8.4.19 + prettier: ^2.8.0 + prettier-plugin-tailwindcss: ^0.2.0 pretty-ms: ^8.0.0 react: ^18.2.0 - react-chartjs-2: ^4.3.1 + react-chartjs-2: ^5.0.1 react-dom: ^18.2.0 - react-hook-form: ^7.38.0 + react-hook-form: ^7.39.6 react-hot-toast: ^2.4.0 react-icons: ^4.6.0 react-json-pretty: ^2.2.0 @@ -46,27 +54,27 @@ specifiers: react-qrcode-logo: ^2.8.0 rfc4648: ^1.5.2 rollup-plugin-visualizer: ^5.8.3 - tailwindcss: ^3.2.1 - tar: ^6.1.11 - tslib: ^2.4.0 - typescript: ^4.8.4 - unimported: ^1.22.0 - vite: ^3.2.0 + tailwindcss: ^3.2.4 + tar: ^6.1.12 + tslib: ^2.4.1 + typescript: ^4.9.3 + unimported: ^1.23.0 + vite: ^3.2.4 vite-plugin-environment: ^1.1.3 - zustand: 4.1.3 + zustand: 4.1.4 dependencies: '@emeraldpay/hashicon-react': 0.5.2 - '@headlessui/react': 1.7.3_biqbaboplfbrettd7655fr4n2y - '@heroicons/react': 2.0.12_react@18.2.0 - '@hookform/resolvers': 2.9.10_react-hook-form@7.38.0 - '@meshtastic/eslint-config': 1.0.8 - '@meshtastic/meshtasticjs': 0.6.112 - '@tailwindcss/line-clamp': 0.4.2_tailwindcss@3.2.1 - '@tailwindcss/typography': 0.5.7_tailwindcss@3.2.1 + '@headlessui/react': 1.7.4_biqbaboplfbrettd7655fr4n2y + '@heroicons/react': 2.0.13_react@18.2.0 + '@hookform/error-message': 2.0.1_fmbor74jztdxvyoczr45dg6z6u + '@hookform/resolvers': 2.9.10_react-hook-form@7.39.6 + '@meshtastic/meshtasticjs': 0.7.0 + '@tailwindcss/line-clamp': 0.4.2_tailwindcss@3.2.4 + '@tailwindcss/typography': 0.5.8_tailwindcss@3.2.4 base64-js: 1.5.1 - chart.js: 3.9.1 - chartjs-adapter-date-fns: 2.0.0_chart.js@3.9.1 + chart.js: 4.0.1 + chartjs-adapter-date-fns: 2.0.1_chart.js@4.0.1 class-transformer: 0.5.1 class-validator: 0.13.2 date-fns: 2.29.3 @@ -76,41 +84,49 @@ dependencies: maplibre-gl: 2.4.0 pretty-ms: 8.0.0 react: 18.2.0 - react-chartjs-2: 4.3.1_2unjvz6v6rskedwoxtmbfw2rje + react-chartjs-2: 5.0.1_mdhqntb7qznawtkbfweh7f2mzm react-dom: 18.2.0_react@18.2.0 - react-hook-form: 7.38.0_react@18.2.0 + react-hook-form: 7.39.6_react@18.2.0 react-hot-toast: 2.4.0_biqbaboplfbrettd7655fr4n2y react-icons: 4.6.0_react@18.2.0 react-json-pretty: 2.2.0_biqbaboplfbrettd7655fr4n2y - react-json-tree: 0.17.0_i2izv7j3km4zzxbpzq2d4xtojy + react-json-tree: 0.17.0_fan5qbzahqtxlm5dzefqlqx5ia react-map-gl: 7.0.19_6eczaga5xxiwzxtfiyk6fioasq react-qrcode-logo: 2.8.0_biqbaboplfbrettd7655fr4n2y rfc4648: 1.5.2 - zustand: 4.1.3_immer@9.0.16+react@18.2.0 + zustand: 4.1.4_immer@9.0.16+react@18.2.0 devDependencies: - '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.1 - '@types/chrome': 0.0.200 + '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.4 + '@types/chrome': 0.0.203 '@types/geodesy': 2.2.3 - '@types/node': 18.11.7 - '@types/react': 18.0.23 - '@types/react-dom': 18.0.7 + '@types/node': 18.11.9 + '@types/react': 18.0.25 + '@types/react-dom': 18.0.9 '@types/w3c-web-serial': 1.0.3 '@types/web-bluetooth': 0.0.16 - '@vitejs/plugin-react': 2.2.0_vite@3.2.0 - autoprefixer: 10.4.12_postcss@8.4.18 - gzipper: 7.1.0 - postcss: 8.4.18 - prettier: 2.7.1 - prettier-plugin-tailwindcss: 0.1.13_prettier@2.7.1 + '@typescript-eslint/eslint-plugin': 5.44.0_fnsv2sbzcckq65bwfk7a5xwslu + '@typescript-eslint/parser': 5.44.0_hsf322ms6xhhd4b5ne6lb74y4a + '@vitejs/plugin-react': 2.2.0_vite@3.2.4 + autoprefixer: 10.4.13_postcss@8.4.19 + eslint: 8.28.0 + eslint-config-prettier: 8.5.0_eslint@8.28.0 + eslint-import-resolver-typescript: 3.5.2_ktrec6dplf4now6nlbc6d67jee + eslint-plugin-import: 2.26.0_vc54pluhgv7booofyyjouvuf74 + eslint-plugin-react: 7.31.11_eslint@8.28.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.28.0 + gzipper: 7.2.0 + postcss: 8.4.19 + prettier: 2.8.0 + prettier-plugin-tailwindcss: 0.2.0_prettier@2.8.0 rollup-plugin-visualizer: 5.8.3 - tailwindcss: 3.2.1_postcss@8.4.18 - tar: 6.1.11 - tslib: 2.4.0 - typescript: 4.8.4 - unimported: 1.22.0 - vite: 3.2.0 - vite-plugin-environment: 1.1.3_vite@3.2.0 + tailwindcss: 3.2.4_postcss@8.4.19 + tar: 6.1.12 + tslib: 2.4.1 + typescript: 4.9.3 + unimported: 1.23.0 + vite: 3.2.4_@types+node@18.11.9 + vite-plugin-environment: 1.1.3_vite@3.2.4 packages: @@ -135,25 +151,25 @@ packages: '@babel/highlight': 7.18.6 dev: true - /@babel/compat-data/7.19.4: - resolution: {integrity: sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==} + /@babel/compat-data/7.20.1: + resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.19.6: - resolution: {integrity: sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==} + /@babel/core/7.20.2: + resolution: {integrity: sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.6 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.6 - '@babel/helper-module-transforms': 7.19.6 - '@babel/helpers': 7.19.4 - '@babel/parser': 7.19.6 + '@babel/generator': 7.20.4 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.2 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helpers': 7.20.1 + '@babel/parser': 7.20.3 '@babel/template': 7.18.10 - '@babel/traverse': 7.19.6 - '@babel/types': 7.19.4 + '@babel/traverse': 7.20.1 + '@babel/types': 7.20.2 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -163,11 +179,11 @@ packages: - supports-color dev: true - /@babel/generator/7.19.6: - resolution: {integrity: sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==} + /@babel/generator/7.20.4: + resolution: {integrity: sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 dev: true @@ -176,17 +192,17 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 dev: true - /@babel/helper-compilation-targets/7.19.3_@babel+core@7.19.6: - resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} + /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.2: + resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.19.4 - '@babel/core': 7.19.6 + '@babel/compat-data': 7.20.1 + '@babel/core': 7.20.2 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 @@ -202,56 +218,56 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 dev: true /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 dev: true - /@babel/helper-module-transforms/7.19.6: - resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==} + /@babel/helper-module-transforms/7.20.2: + resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.19.4 + '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.18.10 - '@babel/traverse': 7.19.6 - '@babel/types': 7.19.4 + '@babel/traverse': 7.20.1 + '@babel/types': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-plugin-utils/7.19.0: - resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.19.4: - resolution: {integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==} + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 dev: true /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 dev: true /@babel/helper-string-parser/7.19.4: @@ -269,13 +285,13 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.19.4: - resolution: {integrity: sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==} + /@babel/helpers/7.20.1: + resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/traverse': 7.19.6 - '@babel/types': 7.19.4 + '@babel/traverse': 7.20.1 + '@babel/types': 7.20.2 transitivePeerDependencies: - supports-color dev: true @@ -289,73 +305,73 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.19.6: - resolution: {integrity: sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==} + /@babel/parser/7.20.3: + resolution: {integrity: sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.6: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.2: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.2: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.6 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6 + '@babel/core': 7.20.2 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.2 dev: true - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.2: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.2: resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.20.2: resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.20.2 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 - '@babel/types': 7.19.4 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.2 + '@babel/types': 7.20.2 dev: true - /@babel/runtime/7.19.4: - resolution: {integrity: sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==} + /@babel/runtime/7.20.1: + resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.10 + regenerator-runtime: 0.13.11 dev: false /@babel/template/7.18.10: @@ -363,30 +379,30 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.6 - '@babel/types': 7.19.4 + '@babel/parser': 7.20.3 + '@babel/types': 7.20.2 dev: true - /@babel/traverse/7.19.6: - resolution: {integrity: sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==} + /@babel/traverse/7.20.1: + resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.6 + '@babel/generator': 7.20.4 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.19.6 - '@babel/types': 7.19.4 + '@babel/parser': 7.20.3 + '@babel/types': 7.20.2 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.19.4: - resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==} + /@babel/types/7.20.2: + resolution: {integrity: sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.19.4 @@ -410,8 +426,8 @@ packages: js-sha3: 0.8.0 dev: false - /@esbuild/android-arm/0.15.12: - resolution: {integrity: sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==} + /@esbuild/android-arm/0.15.15: + resolution: {integrity: sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -419,8 +435,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.15.12: - resolution: {integrity: sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==} + /@esbuild/linux-loong64/0.15.15: + resolution: {integrity: sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -435,7 +451,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 7.3.1 - globals: 13.17.0 + globals: 13.18.0 ignore: 4.0.6 import-fresh: 3.3.0 js-yaml: 3.14.1 @@ -451,8 +467,8 @@ packages: dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.0 - globals: 13.17.0 + espree: 9.4.1 + globals: 13.18.0 ignore: 5.2.0 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -460,7 +476,7 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: false + dev: true /@gfx/zopfli/1.0.15: resolution: {integrity: sha512-7mBgpi7UD82fsff5ThQKet0uBTl4BYerQuc+/qA1ELTwWEiIedRTcD3JgiUu9wwZ2kytW8JOb165rSdAt8PfcQ==} @@ -469,35 +485,48 @@ packages: base64-js: 1.5.1 dev: true - /@headlessui/react/1.7.3_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-LGp06SrGv7BMaIQlTs8s2G06moqkI0cb0b8stgq7KZ3xcHdH3qMP+cRyV7qe5x4XEW/IGY48BW4fLesD6NQLng==} + /@headlessui/react/1.7.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-D8n5yGCF3WIkPsjEYeM8knn9jQ70bigGGb5aUvN6y4BGxcT3OcOQOKcM3zRGllRCZCFxCZyQvYJF6ZE7bQUOyQ==} engines: {node: '>=10'} peerDependencies: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 dependencies: + client-only: 0.0.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false - /@heroicons/react/2.0.12_react@18.2.0: - resolution: {integrity: sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==} + /@heroicons/react/2.0.13_react@18.2.0: + resolution: {integrity: sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==} peerDependencies: react: '>= 16' dependencies: react: 18.2.0 dev: false - /@hookform/resolvers/2.9.10_react-hook-form@7.38.0: + /@hookform/error-message/2.0.1_fmbor74jztdxvyoczr45dg6z6u: + resolution: {integrity: sha512-U410sAr92xgxT1idlu9WWOVjndxLdgPUHEB8Schr27C9eh7/xUnITWpCMF93s+lGiG++D4JnbSnrb5A21AdSNg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + react-hook-form: ^7.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-hook-form: 7.39.6_react@18.2.0 + dev: false + + /@hookform/resolvers/2.9.10_react-hook-form@7.39.6: resolution: {integrity: sha512-JIL1DgJIlH9yuxcNGtyhsWX/PgNltz+5Gr6+8SX9fhXc/hPbEIk6wPI82nhgvp3uUb6ZfAM5mqg/x7KR7NAb+A==} peerDependencies: react-hook-form: ^7.0.0 dependencies: - react-hook-form: 7.38.0_react@18.2.0 + react-hook-form: 7.39.6_react@18.2.0 dev: false - /@humanwhocodes/config-array/0.11.6: - resolution: {integrity: sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==} + /@humanwhocodes/config-array/0.11.7: + resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -505,7 +534,7 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: false + dev: true /@humanwhocodes/config-array/0.5.0: resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} @@ -521,10 +550,11 @@ packages: /@humanwhocodes/module-importer/1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: false + dev: true /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} @@ -616,35 +646,13 @@ packages: engines: {node: '>=6.0.0'} dev: false - /@meshtastic/eslint-config/1.0.8: - resolution: {integrity: sha512-Jzwaf3TyYFGeFuxLRQA5Yj5Rmz097VleFQUkswXH9nvLO81JjJbHgJWbHQ6RpxC31q/2hWV03QdaH98swpYcQA==} + /@meshtastic/meshtasticjs/0.7.0: + resolution: {integrity: sha512-ZL4hetF/94qTG6JdhitT8pKqDqrXp3PJld6cLeU0X+fFUDhJxGZMDu82CPhDU7S3L3diATsb61v+GrOTJXVxIw==} dependencies: - '@typescript-eslint/eslint-plugin': 5.41.0_huremdigmcnkianavgfk3x6iou - '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m - eslint: 8.26.0 - eslint-config-prettier: 8.5.0_eslint@8.26.0 - eslint-import-resolver-typescript: 2.7.1_mynvxvmq5qtyojffiqgev4x7mm - eslint-plugin-eslint-comments: 3.2.0_eslint@8.26.0 - eslint-plugin-import: 2.26.0_sgtvadj53qann2ab365fx33s3a - eslint-plugin-react: 7.31.10_eslint@8.26.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.26.0 - prettier: 2.7.1 - prettier-plugin-tailwindcss: 0.1.13_prettier@2.7.1 - typescript: 4.8.4 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - dev: false - - /@meshtastic/meshtasticjs/0.6.112: - resolution: {integrity: sha512-GV/uygQUKwLnvaKiAvM4DZlTmGRf4f2blWZwYZNHYfp1zL81ak7KZeoPiFJi7qwr13XN5I4fSASLaUzbwWHXnQ==} - dependencies: - '@protobuf-ts/runtime': 2.8.1 - '@serialport/stream': 10.3.0 - serialport: 10.4.0 + '@protobuf-ts/runtime': 2.8.2 + glob: 8.0.3 sub-events: 1.9.0 - transitivePeerDependencies: - - supports-color + tslog: 4.4.2 dev: false /@nodelib/fs.scandir/2.1.5: @@ -665,104 +673,20 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@protobuf-ts/runtime/2.8.1: - resolution: {integrity: sha512-D9M5hSumYCovIfNllt7N6ODh4q+LrjiMWtNETvooaf+a2XheZJ7kgjFlsFghti0CFWwtA//of4JXQfw9hU+cCw==} - dev: false - - /@serialport/binding-mock/10.2.2: - resolution: {integrity: sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==} - engines: {node: '>=12.0.0'} + /@pkgr/utils/2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: - '@serialport/bindings-interface': 1.2.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.4.1 + dev: true - /@serialport/bindings-cpp/10.7.0: - resolution: {integrity: sha512-Xx1wA2UCG2loS32hxNvWJI4smCzGKhWqE85//fLRzHoGgE1lSLe3Nk7W40/ebrlGFHWRbQZmeaIF4chb2XLliA==} - engines: {node: '>=12.17.0 <13.0 || >=14.0.0'} - requiresBuild: true - dependencies: - '@serialport/bindings-interface': 1.2.1 - '@serialport/parser-readline': 10.3.0 - debug: 4.3.4 - node-addon-api: 4.3.0 - node-gyp-build: 4.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@serialport/bindings-interface/1.2.1: - resolution: {integrity: sha512-63Dyqz2gtryRDDckFusOYqLYhR3Hq/M4sEdbF9i/VsvDb6T+tNVgoAKUZ+FMrXXKnCSu+hYbk+MTc0XQANszxw==} - engines: {node: ^12.22 || ^14.13 || >=16} - dev: false - - /@serialport/bindings-interface/1.2.2: - resolution: {integrity: sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==} - engines: {node: ^12.22 || ^14.13 || >=16} - dev: false - - /@serialport/parser-byte-length/10.3.0: - resolution: {integrity: sha512-pJ/VoFemzKRRNDHLhFfPThwP40QrGaEnm9TtwL7o2GihEPwzBg3T0bN13ew5TpbbUYZdMpUtpm3CGfl6av9rUQ==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/parser-cctalk/10.3.0: - resolution: {integrity: sha512-8ujmk8EvVbDPrNF4mM33bWvUYJOZ0wXbY3WCRazHRWvyCdL0VO0DQvW81ZqgoTpiDQZm5r8wQu9rmuemahF6vQ==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/parser-delimiter/10.3.0: - resolution: {integrity: sha512-9E4Vj6s0UbbcCCTclwegHGPYjJhdm9qLCS0lowXQDEQC5naZnbsELemMHs93nD9jHPcyx1B4oXkMnVZLxX5TYw==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/parser-inter-byte-timeout/10.3.0: - resolution: {integrity: sha512-wKP0QK85NHgvT6BBB1qBfKBBU4pf8kespNXAZBUYmFT+P4n8r8IZE2mqigCD+AiZcfWNQoAizwOsT/Jx/qeVig==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/parser-packet-length/10.3.0: - resolution: {integrity: sha512-bj0cWzt8YSQj/E5fRQVYdi4TsfTlZQrXlXrUwjyTsCONv8IPOHzsz+yY0fw5SEMiJtaLyqvPkCHLsttOd/zFsg==} - engines: {node: '>=8.6.0'} - dev: false - - /@serialport/parser-readline/10.3.0: - resolution: {integrity: sha512-ki3ATZ3/RAqnqGROBKE7k+OeZ0DZXZ53GTca4q71OU5RazbbNhTOBQLKLXD3v9QZXCMJdg4hGW/2Y0DuMUqMQg==} - engines: {node: '>=12.0.0'} - dependencies: - '@serialport/parser-delimiter': 10.3.0 - dev: false - - /@serialport/parser-ready/10.3.0: - resolution: {integrity: sha512-1owywJ4p592dJyVrEJZPIh6pUZ3/y/LN6kGTDH2wxdewRUITo/sGvDy0er5i2+dJD3yuowiAz0dOHSdz8tevJA==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/parser-regex/10.3.0: - resolution: {integrity: sha512-tIogTs7CvTH+UUFnsvE7i33MSISyTPTGPWlglWYH2/5coipXY503jlaYS1YGe818wWNcSx6YAjMZRdhTWwM39w==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/parser-slip-encoder/10.3.0: - resolution: {integrity: sha512-JI0ILF5sylWn8f0MuMzHFBix/iMUTa79/Z95KaPZYnVaEdA7h7hh/o21Jmon/26P3RJwL1SNJCjZ81zfan+LtQ==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/parser-spacepacket/10.3.0: - resolution: {integrity: sha512-PDF73ClEPsClD1FEJZHNuBevDKsJCkqy/XD5+S5eA6+tY5D4HLrVgSWsg+3qqB6+dlpwf2CzHe+uO8D3teuKHA==} - engines: {node: '>=12.0.0'} - dev: false - - /@serialport/stream/10.3.0: - resolution: {integrity: sha512-7sooi5fHogYNVEJwxVdg872xO6TuMgQd2E9iRmv+o8pk/1dbBnPkmH6Ka3st1mVE+0KnIJqVlgei+ncSsqXIGw==} - engines: {node: '>=12.0.0'} - dependencies: - '@serialport/bindings-interface': 1.2.1 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + /@protobuf-ts/runtime/2.8.2: + resolution: {integrity: sha512-PVxsH81y9kEbHldxxG/8Y3z2mTXWQytRl8zNS0mTPUjkEC+8GUX6gj6LsA8EFp25fAs9V0ruh+aNWmPccEI9MA==} dev: false /@stablelib/binary/1.0.1: @@ -791,25 +715,25 @@ packages: resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} dev: false - /@tailwindcss/forms/0.5.3_tailwindcss@3.2.1: + /@tailwindcss/forms/0.5.3_tailwindcss@3.2.4: resolution: {integrity: sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==} peerDependencies: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.2.1_postcss@8.4.18 + tailwindcss: 3.2.4_postcss@8.4.19 dev: true - /@tailwindcss/line-clamp/0.4.2_tailwindcss@3.2.1: + /@tailwindcss/line-clamp/0.4.2_tailwindcss@3.2.4: resolution: {integrity: sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==} peerDependencies: tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' dependencies: - tailwindcss: 3.2.1_postcss@8.4.18 + tailwindcss: 3.2.4_postcss@8.4.19 dev: false - /@tailwindcss/typography/0.5.7_tailwindcss@3.2.1: - resolution: {integrity: sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==} + /@tailwindcss/typography/0.5.8_tailwindcss@3.2.4: + resolution: {integrity: sha512-xGQEp8KXN8Sd8m6R4xYmwxghmswrd0cPnNI2Lc6fmrC3OojysTBJJGSIVwPV56q4t6THFUK3HJ0EaWwpglSxWw==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' dependencies: @@ -817,15 +741,15 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.2.1_postcss@8.4.18 + tailwindcss: 3.2.4_postcss@8.4.19 dev: false /@types/base16/1.0.2: resolution: {integrity: sha512-oYO/U4VD1DavwrKuCSQWdLG+5K22SLPem2OQaHmFcQuwHoVeGC+JGVRji2MUqZUAIQZHEonOeVfAX09hYiLsdg==} dev: false - /@types/chrome/0.0.200: - resolution: {integrity: sha512-oNT2/KHgZECTzj4oavLc20r3D2yFufLwGNaLFAN8YxYyNVJGenX3l3oGBynhoT/Azm3eAfyDynrdca6jB7CNzw==} + /@types/chrome/0.0.203: + resolution: {integrity: sha512-JlQNebwpBETVc8U1Rr2inDFuOTtn0lahRAhnddx1dd0S5RrLAFJEEsyIu7AXI14mkCgSunksnuLGioH8kvBqRA==} dependencies: '@types/filesystem': 0.0.32 '@types/har-format': 1.2.9 @@ -855,18 +779,18 @@ packages: /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: false + dev: true /@types/json5/0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/lodash/4.14.190: + resolution: {integrity: sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==} dev: false - /@types/lodash/4.14.186: - resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==} - dev: false - - /@types/mapbox-gl/2.7.6: - resolution: {integrity: sha512-EPIfNO7WApXaFM7DuJBj+kpXmqffqJHMJ3Q9gbV/nNL23XHR0PC5CCDYbAFa4tKErm0xJd9C5kPLF6KvA/cRcA==} + /@types/mapbox-gl/2.7.8: + resolution: {integrity: sha512-dqjHeYcUquenNOUMjhlZtbxrPJAE0+UwFq/KhAG5VWO2tX0ZxagSOmMPTruySf3sn7RFHMDd2kQKYmJlPC33xA==} dependencies: '@types/geojson': 7946.0.10 dev: false @@ -883,8 +807,8 @@ packages: '@types/pbf': 3.0.2 dev: false - /@types/node/18.11.7: - resolution: {integrity: sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==} + /@types/node/18.11.9: + resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} dev: true /@types/normalize-package-data/2.4.1: @@ -898,14 +822,14 @@ packages: /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom/18.0.7: - resolution: {integrity: sha512-HaXc+BbqAZE1RdsK3tC8SbkFy6UL2xF76lT9rQs5JkPrJg3rWA3Ou/Lhw3YJQzEDkBpmJ79nBsfnd05WrBd2QQ==} + /@types/react-dom/18.0.9: + resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} dependencies: - '@types/react': 18.0.23 + '@types/react': 18.0.25 dev: true - /@types/react/18.0.23: - resolution: {integrity: sha512-R1wTULtCiJkudAN2DJGoYYySbGtOdzZyUWAACYinKdiQC8auxso4kLDUhQ7AJ2kh3F6A6z4v69U6tNY39hihVQ==} + /@types/react/18.0.25: + resolution: {integrity: sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -916,7 +840,7 @@ packages: /@types/semver/7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - dev: false + dev: true /@types/w3c-web-serial/1.0.3: resolution: {integrity: sha512-R4J/OjqKAUFQoXVIkaUTfzb/sl6hLh/ZhDTfowJTRMa7LhgEmI/jXV4zsL1u8HpNa853BxwNmDIr0pauizzwSQ==} @@ -926,8 +850,8 @@ packages: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} dev: true - /@typescript-eslint/eslint-plugin/5.41.0_huremdigmcnkianavgfk3x6iou: - resolution: {integrity: sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==} + /@typescript-eslint/eslint-plugin/5.44.0_fnsv2sbzcckq65bwfk7a5xwslu: + resolution: {integrity: sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -937,43 +861,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m - '@typescript-eslint/scope-manager': 5.41.0 - '@typescript-eslint/type-utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m - '@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m + '@typescript-eslint/parser': 5.44.0_hsf322ms6xhhd4b5ne6lb74y4a + '@typescript-eslint/scope-manager': 5.44.0 + '@typescript-eslint/type-utils': 5.44.0_hsf322ms6xhhd4b5ne6lb74y4a + '@typescript-eslint/utils': 5.44.0_hsf322ms6xhhd4b5ne6lb74y4a debug: 4.3.4 - eslint: 8.26.0 + eslint: 8.28.0 ignore: 5.2.0 + natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/parser/5.41.0_3rubbgt5ekhqrcgx4uwls3neim: - resolution: {integrity: sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.41.0 - '@typescript-eslint/types': 5.41.0 - '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 - debug: 4.3.4 - eslint: 7.32.0 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.3 + typescript: 4.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.41.0_wyqvi574yv7oiwfeinomdzmc3m: - resolution: {integrity: sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==} + /@typescript-eslint/parser/5.44.0_77fvizpdb3y4icyeo2mf4eo7em: + resolution: {integrity: sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -982,25 +887,46 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.41.0 - '@typescript-eslint/types': 5.41.0 - '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 + '@typescript-eslint/scope-manager': 5.44.0 + '@typescript-eslint/types': 5.44.0 + '@typescript-eslint/typescript-estree': 5.44.0_typescript@4.9.3 debug: 4.3.4 - eslint: 8.26.0 - typescript: 4.8.4 + eslint: 7.32.0 + typescript: 4.9.3 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/scope-manager/5.41.0: - resolution: {integrity: sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==} + /@typescript-eslint/parser/5.44.0_hsf322ms6xhhd4b5ne6lb74y4a: + resolution: {integrity: sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.44.0 + '@typescript-eslint/types': 5.44.0 + '@typescript-eslint/typescript-estree': 5.44.0_typescript@4.9.3 + debug: 4.3.4 + eslint: 8.28.0 + typescript: 4.9.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.44.0: + resolution: {integrity: sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.41.0 - '@typescript-eslint/visitor-keys': 5.41.0 + '@typescript-eslint/types': 5.44.0 + '@typescript-eslint/visitor-keys': 5.44.0 + dev: true - /@typescript-eslint/type-utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m: - resolution: {integrity: sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==} + /@typescript-eslint/type-utils/5.44.0_hsf322ms6xhhd4b5ne6lb74y4a: + resolution: {integrity: sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1009,22 +935,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 - '@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m + '@typescript-eslint/typescript-estree': 5.44.0_typescript@4.9.3 + '@typescript-eslint/utils': 5.44.0_hsf322ms6xhhd4b5ne6lb74y4a debug: 4.3.4 - eslint: 8.26.0 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + eslint: 8.28.0 + tsutils: 3.21.0_typescript@4.9.3 + typescript: 4.9.3 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/types/5.41.0: - resolution: {integrity: sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==} + /@typescript-eslint/types/5.44.0: + resolution: {integrity: sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - /@typescript-eslint/typescript-estree/5.41.0_typescript@4.8.4: - resolution: {integrity: sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==} + /@typescript-eslint/typescript-estree/5.44.0_typescript@4.9.3: + resolution: {integrity: sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1032,58 +959,60 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.41.0 - '@typescript-eslint/visitor-keys': 5.41.0 + '@typescript-eslint/types': 5.44.0 + '@typescript-eslint/visitor-keys': 5.44.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.3 + typescript: 4.9.3 transitivePeerDependencies: - supports-color + dev: true - /@typescript-eslint/utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m: - resolution: {integrity: sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==} + /@typescript-eslint/utils/5.44.0_hsf322ms6xhhd4b5ne6lb74y4a: + resolution: {integrity: sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.41.0 - '@typescript-eslint/types': 5.41.0 - '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 - eslint: 8.26.0 + '@typescript-eslint/scope-manager': 5.44.0 + '@typescript-eslint/types': 5.44.0 + '@typescript-eslint/typescript-estree': 5.44.0_typescript@4.9.3 + eslint: 8.28.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.26.0 + eslint-utils: 3.0.0_eslint@8.28.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript - dev: false + dev: true - /@typescript-eslint/visitor-keys/5.41.0: - resolution: {integrity: sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==} + /@typescript-eslint/visitor-keys/5.44.0: + resolution: {integrity: sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.41.0 + '@typescript-eslint/types': 5.44.0 eslint-visitor-keys: 3.3.0 + dev: true - /@vitejs/plugin-react/2.2.0_vite@3.2.0: + /@vitejs/plugin-react/2.2.0_vite@3.2.4: resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 dependencies: - '@babel/core': 7.19.6 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.19.6 + '@babel/core': 7.20.2 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.2 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.2 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.2 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.2 magic-string: 0.26.7 react-refresh: 0.14.0 - vite: 3.2.0 + vite: 3.2.4_@types+node@18.11.9 transitivePeerDependencies: - supports-color dev: true @@ -1102,7 +1031,7 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.1 - dev: false + dev: true /acorn-node/1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} @@ -1124,7 +1053,7 @@ packages: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true - dev: false + dev: true /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -1133,9 +1062,10 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + dev: true - /ajv/8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + /ajv/8.11.2: + resolution: {integrity: sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -1151,6 +1081,7 @@ packages: /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + dev: true /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -1164,9 +1095,10 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: true - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 @@ -1183,10 +1115,10 @@ packages: /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false + dev: true - /array-includes/3.1.5: - resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} + /array-includes/3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -1194,50 +1126,61 @@ packages: es-abstract: 1.20.4 get-intrinsic: 1.1.3 is-string: 1.0.7 - dev: false + dev: true /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + dev: true - /array.prototype.flat/1.3.0: - resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} + /array.prototype.flat/1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 es-shim-unscopables: 1.0.0 - dev: false + dev: true - /array.prototype.flatmap/1.3.0: - resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==} + /array.prototype.flatmap/1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 es-shim-unscopables: 1.0.0 - dev: false + dev: true + + /array.prototype.tosorted/1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.1.3 + dev: true /astral-regex/2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true - /autoprefixer/10.4.12_postcss@8.4.18: - resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} + /autoprefixer/10.4.13_postcss@8.4.19: + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001426 + caniuse-lite: 1.0.30001434 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.18 + postcss: 8.4.19 postcss-value-parser: 4.2.0 dev: true @@ -1273,6 +1216,13 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -1285,7 +1235,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001426 + caniuse-lite: 1.0.30001434 electron-to-chromium: 1.4.284 node-releases: 2.0.6 update-browserslist-db: 1.0.10_browserslist@4.21.4 @@ -1307,17 +1257,19 @@ packages: dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 + dev: true /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + dev: true /camelcase-css/2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - /caniuse-lite/1.0.30001426: - resolution: {integrity: sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==} + /caniuse-lite/1.0.30001434: + resolution: {integrity: sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==} dev: true /chalk/2.4.2: @@ -1335,24 +1287,26 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - /chart.js/3.9.1: - resolution: {integrity: sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==} + /chart.js/4.0.1: + resolution: {integrity: sha512-5/8/9eBivwBZK81mKvmIwTb2Pmw4D/5h1RK9fBWZLLZ8mCJ+kfYNmV9rMrGoa5Hgy2/wVDBMLSUDudul2/9ihA==} + engines: {pnpm: ^7.0.0} dev: false - /chartjs-adapter-date-fns/2.0.0_chart.js@3.9.1: - resolution: {integrity: sha512-rmZINGLe+9IiiEB0kb57vH3UugAtYw33anRiw5kS2Tu87agpetDDoouquycWc9pRsKtQo5j+vLsYHyr8etAvFw==} + /chartjs-adapter-date-fns/2.0.1_chart.js@4.0.1: + resolution: {integrity: sha512-v3WV9rdnQ05ce3A0ZCjzUekJCAbfm6+3HqSoeY2BIkdMYZoYr/4T+ril1tZyDl869lz6xdNVMXejUFT9YKpw4A==} peerDependencies: - chart.js: ^3.0.0 + chart.js: '>=2.8.0' dependencies: - chart.js: 3.9.1 + chart.js: 4.0.1 dev: false /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: - anymatch: 3.1.2 + anymatch: 3.1.3 braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 @@ -1390,6 +1344,10 @@ packages: engines: {node: '>=6'} dev: true + /client-only/0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -1422,6 +1380,7 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} @@ -1450,6 +1409,7 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + dev: true /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -1466,6 +1426,7 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true /csscolorparser/1.0.3: resolution: {integrity: sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==} @@ -1493,7 +1454,7 @@ packages: optional: true dependencies: ms: 2.0.0 - dev: false + dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -1504,7 +1465,7 @@ packages: optional: true dependencies: ms: 2.1.3 - dev: false + dev: true /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -1516,9 +1477,10 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true - /deep-equal/2.0.5: - resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==} + /deep-equal/2.1.0: + resolution: {integrity: sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==} dependencies: call-bind: 1.0.2 es-get-iterator: 1.1.2 @@ -1534,11 +1496,12 @@ packages: side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.8 + which-typed-array: 1.1.9 dev: true /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true /defaults/1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -1557,6 +1520,7 @@ packages: dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 + dev: true /defined/1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} @@ -1578,6 +1542,7 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: true /dlv/1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -1587,13 +1552,14 @@ packages: engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 - dev: false + dev: true /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true /duplex-maker/1.0.0: resolution: {integrity: sha512-KoHuzggxg7f+vvjqOHfXxaQYI1POzBm+ah0eec7YDssZmbt6QFBI8d1nl5GQwAgR2f+VQCPvyvZtmWWqWuFtlA==} @@ -1630,6 +1596,14 @@ packages: once: 1.4.0 dev: true + /enhanced-resolve/5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + /enquirer/2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -1668,9 +1642,10 @@ packages: object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 safe-regex-test: 1.0.0 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 unbox-primitive: 1.0.2 + dev: true /es-get-iterator/1.1.2: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} @@ -1689,7 +1664,7 @@ packages: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 - dev: false + dev: true /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} @@ -1698,9 +1673,10 @@ packages: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + dev: true - /esbuild-android-64/0.15.12: - resolution: {integrity: sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==} + /esbuild-android-64/0.15.15: + resolution: {integrity: sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1708,8 +1684,8 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.15.12: - resolution: {integrity: sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==} + /esbuild-android-arm64/0.15.15: + resolution: {integrity: sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1717,8 +1693,8 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.15.12: - resolution: {integrity: sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==} + /esbuild-darwin-64/0.15.15: + resolution: {integrity: sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1726,8 +1702,8 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.15.12: - resolution: {integrity: sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==} + /esbuild-darwin-arm64/0.15.15: + resolution: {integrity: sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1735,8 +1711,8 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.15.12: - resolution: {integrity: sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==} + /esbuild-freebsd-64/0.15.15: + resolution: {integrity: sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1744,8 +1720,8 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.15.12: - resolution: {integrity: sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==} + /esbuild-freebsd-arm64/0.15.15: + resolution: {integrity: sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1753,8 +1729,8 @@ packages: dev: true optional: true - /esbuild-linux-32/0.15.12: - resolution: {integrity: sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==} + /esbuild-linux-32/0.15.15: + resolution: {integrity: sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1762,8 +1738,8 @@ packages: dev: true optional: true - /esbuild-linux-64/0.15.12: - resolution: {integrity: sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==} + /esbuild-linux-64/0.15.15: + resolution: {integrity: sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1771,8 +1747,8 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.15.12: - resolution: {integrity: sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==} + /esbuild-linux-arm/0.15.15: + resolution: {integrity: sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1780,8 +1756,8 @@ packages: dev: true optional: true - /esbuild-linux-arm64/0.15.12: - resolution: {integrity: sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==} + /esbuild-linux-arm64/0.15.15: + resolution: {integrity: sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1789,8 +1765,8 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.15.12: - resolution: {integrity: sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==} + /esbuild-linux-mips64le/0.15.15: + resolution: {integrity: sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1798,8 +1774,8 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.15.12: - resolution: {integrity: sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==} + /esbuild-linux-ppc64le/0.15.15: + resolution: {integrity: sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1807,8 +1783,8 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.15.12: - resolution: {integrity: sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==} + /esbuild-linux-riscv64/0.15.15: + resolution: {integrity: sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1816,8 +1792,8 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.15.12: - resolution: {integrity: sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==} + /esbuild-linux-s390x/0.15.15: + resolution: {integrity: sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1825,8 +1801,8 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.15.12: - resolution: {integrity: sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==} + /esbuild-netbsd-64/0.15.15: + resolution: {integrity: sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1834,8 +1810,8 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.15.12: - resolution: {integrity: sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==} + /esbuild-openbsd-64/0.15.15: + resolution: {integrity: sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1843,8 +1819,8 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.15.12: - resolution: {integrity: sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==} + /esbuild-sunos-64/0.15.15: + resolution: {integrity: sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1852,8 +1828,8 @@ packages: dev: true optional: true - /esbuild-windows-32/0.15.12: - resolution: {integrity: sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==} + /esbuild-windows-32/0.15.15: + resolution: {integrity: sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1861,8 +1837,8 @@ packages: dev: true optional: true - /esbuild-windows-64/0.15.12: - resolution: {integrity: sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==} + /esbuild-windows-64/0.15.15: + resolution: {integrity: sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1870,8 +1846,8 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.15.12: - resolution: {integrity: sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==} + /esbuild-windows-arm64/0.15.15: + resolution: {integrity: sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1879,34 +1855,34 @@ packages: dev: true optional: true - /esbuild/0.15.12: - resolution: {integrity: sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==} + /esbuild/0.15.15: + resolution: {integrity: sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.15.12 - '@esbuild/linux-loong64': 0.15.12 - esbuild-android-64: 0.15.12 - esbuild-android-arm64: 0.15.12 - esbuild-darwin-64: 0.15.12 - esbuild-darwin-arm64: 0.15.12 - esbuild-freebsd-64: 0.15.12 - esbuild-freebsd-arm64: 0.15.12 - esbuild-linux-32: 0.15.12 - esbuild-linux-64: 0.15.12 - esbuild-linux-arm: 0.15.12 - esbuild-linux-arm64: 0.15.12 - esbuild-linux-mips64le: 0.15.12 - esbuild-linux-ppc64le: 0.15.12 - esbuild-linux-riscv64: 0.15.12 - esbuild-linux-s390x: 0.15.12 - esbuild-netbsd-64: 0.15.12 - esbuild-openbsd-64: 0.15.12 - esbuild-sunos-64: 0.15.12 - esbuild-windows-32: 0.15.12 - esbuild-windows-64: 0.15.12 - esbuild-windows-arm64: 0.15.12 + '@esbuild/android-arm': 0.15.15 + '@esbuild/linux-loong64': 0.15.15 + esbuild-android-64: 0.15.15 + esbuild-android-arm64: 0.15.15 + esbuild-darwin-64: 0.15.15 + esbuild-darwin-arm64: 0.15.15 + esbuild-freebsd-64: 0.15.15 + esbuild-freebsd-arm64: 0.15.15 + esbuild-linux-32: 0.15.15 + esbuild-linux-64: 0.15.15 + esbuild-linux-arm: 0.15.15 + esbuild-linux-arm64: 0.15.15 + esbuild-linux-mips64le: 0.15.15 + esbuild-linux-ppc64le: 0.15.15 + esbuild-linux-riscv64: 0.15.15 + esbuild-linux-s390x: 0.15.15 + esbuild-netbsd-64: 0.15.15 + esbuild-openbsd-64: 0.15.15 + esbuild-sunos-64: 0.15.15 + esbuild-windows-32: 0.15.15 + esbuild-windows-64: 0.15.15 + esbuild-windows-arm64: 0.15.15 dev: true /escalade/3.1.1: @@ -1917,19 +1893,21 @@ packages: /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + dev: true - /eslint-config-prettier/8.5.0_eslint@8.26.0: + /eslint-config-prettier/8.5.0_eslint@8.28.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.26.0 - dev: false + eslint: 8.28.0 + dev: true /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} @@ -1938,27 +1916,29 @@ packages: resolve: 1.22.1 transitivePeerDependencies: - supports-color - dev: false + dev: true - /eslint-import-resolver-typescript/2.7.1_mynvxvmq5qtyojffiqgev4x7mm: - resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} - engines: {node: '>=4'} + /eslint-import-resolver-typescript/3.5.2_ktrec6dplf4now6nlbc6d67jee: + resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: debug: 4.3.4 - eslint: 8.26.0 - eslint-plugin-import: 2.26.0_sgtvadj53qann2ab365fx33s3a - glob: 7.2.3 + enhanced-resolve: 5.12.0 + eslint: 8.28.0 + eslint-plugin-import: 2.26.0_vc54pluhgv7booofyyjouvuf74 + get-tsconfig: 4.2.0 + globby: 13.1.2 + is-core-module: 2.11.0 is-glob: 4.0.3 - resolve: 1.22.1 - tsconfig-paths: 3.14.1 + synckit: 0.8.4 transitivePeerDependencies: - supports-color - dev: false + dev: true - /eslint-module-utils/2.7.4_tvinv4sbpgfss2gbjcxyrnrkuq: + /eslint-module-utils/2.7.4_d2eo2jksnn7c2x6eoou4blnbne: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -1979,27 +1959,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m + '@typescript-eslint/parser': 5.44.0_hsf322ms6xhhd4b5ne6lb74y4a debug: 3.2.7 - eslint: 8.26.0 + eslint: 8.28.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.7.1_mynvxvmq5qtyojffiqgev4x7mm + eslint-import-resolver-typescript: 3.5.2_ktrec6dplf4now6nlbc6d67jee transitivePeerDependencies: - supports-color - dev: false + dev: true - /eslint-plugin-eslint-comments/3.2.0_eslint@8.26.0: - resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} - engines: {node: '>=6.5.0'} - peerDependencies: - eslint: '>=4.19.1' - dependencies: - escape-string-regexp: 1.0.5 - eslint: 8.26.0 - ignore: 5.2.0 - dev: false - - /eslint-plugin-import/2.26.0_sgtvadj53qann2ab365fx33s3a: + /eslint-plugin-import/2.26.0_vc54pluhgv7booofyyjouvuf74: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -2009,58 +1978,59 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m - array-includes: 3.1.5 - array.prototype.flat: 1.3.0 + '@typescript-eslint/parser': 5.44.0_hsf322ms6xhhd4b5ne6lb74y4a + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.26.0 + eslint: 8.28.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4_tvinv4sbpgfss2gbjcxyrnrkuq + eslint-module-utils: 2.7.4_d2eo2jksnn7c2x6eoou4blnbne has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.values: 1.1.5 + object.values: 1.1.6 resolve: 1.22.1 tsconfig-paths: 3.14.1 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false + dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.26.0: + /eslint-plugin-react-hooks/4.6.0_eslint@8.28.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.26.0 - dev: false + eslint: 8.28.0 + dev: true - /eslint-plugin-react/7.31.10_eslint@8.26.0: - resolution: {integrity: sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==} + /eslint-plugin-react/7.31.11_eslint@8.28.0: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.5 - array.prototype.flatmap: 1.3.0 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.26.0 + eslint: 8.28.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.1 - object.values: 1.1.5 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.0 - string.prototype.matchall: 4.0.7 - dev: false + string.prototype.matchall: 4.0.8 + dev: true /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} @@ -2068,6 +2038,7 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true /eslint-scope/7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} @@ -2075,7 +2046,7 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: false + dev: true /eslint-utils/2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} @@ -2084,15 +2055,15 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.26.0: + /eslint-utils/3.0.0_eslint@8.28.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.26.0 + eslint: 8.28.0 eslint-visitor-keys: 2.1.0 - dev: false + dev: true /eslint-visitor-keys/1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} @@ -2102,10 +2073,12 @@ packages: /eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} + dev: true /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true /eslint/7.32.0: resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} @@ -2132,7 +2105,7 @@ packages: file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 glob-parent: 5.1.2 - globals: 13.17.0 + globals: 13.18.0 ignore: 4.0.6 import-fresh: 3.3.0 imurmurhash: 0.1.4 @@ -2149,20 +2122,20 @@ packages: semver: 7.3.8 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 - table: 6.8.0 + table: 6.8.1 text-table: 0.2.0 v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color dev: true - /eslint/8.26.0: - resolution: {integrity: sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==} + /eslint/8.28.0: + resolution: {integrity: sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint/eslintrc': 1.3.3 - '@humanwhocodes/config-array': 0.11.6 + '@humanwhocodes/config-array': 0.11.7 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -2172,23 +2145,23 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.26.0 + eslint-utils: 3.0.0_eslint@8.28.0 eslint-visitor-keys: 3.3.0 - espree: 9.4.0 + espree: 9.4.1 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.17.0 + globals: 13.18.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.1.5 + js-sdsl: 4.2.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -2202,7 +2175,7 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /espree/7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} @@ -2213,14 +2186,14 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /espree/9.4.0: - resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.1 acorn-jsx: 5.3.2_acorn@8.8.1 eslint-visitor-keys: 3.3.0 - dev: false + dev: true /esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -2233,27 +2206,33 @@ packages: engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true /estraverse/4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} + dev: true /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + dev: true /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + dev: true /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -2267,9 +2246,11 @@ packages: /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} @@ -2281,6 +2262,7 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 + dev: true /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -2302,7 +2284,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: false + dev: true /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} @@ -2310,9 +2292,11 @@ packages: dependencies: flatted: 3.2.7 rimraf: 3.0.2 + dev: true /flatted/3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true /flow-parser/0.156.0: resolution: {integrity: sha512-OCE3oIixhOttaV4ahIGtxf9XfaDdxujiTnXuHu+0dvDVVDiSDJlQpgCWdDKqP0OHfFnxQKrjMamArDAXtrBtZw==} @@ -2343,7 +2327,7 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: true /fs.realpath/1.0.0: @@ -2367,6 +2351,7 @@ packages: define-properties: 1.1.4 es-abstract: 1.20.4 functions-have-names: 1.2.3 + dev: true /functional-red-black-tree/1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} @@ -2374,6 +2359,7 @@ packages: /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -2400,6 +2386,7 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 + dev: true /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} @@ -2412,6 +2399,11 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 + dev: true + + /get-tsconfig/4.2.0: + resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + dev: true /gl-matrix/3.4.3: resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} @@ -2438,6 +2430,18 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true + + /glob/8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.0 + once: 1.4.0 + dev: false /global-prefix/3.0.0: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} @@ -2453,11 +2457,16 @@ packages: engines: {node: '>=4'} dev: true - /globals/13.17.0: - resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} + /globals/13.18.0: + resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true + + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -2469,6 +2478,22 @@ packages: ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 + dev: true + + /globby/13.1.2: + resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true /goober/2.1.11: resolution: {integrity: sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A==} @@ -2476,24 +2501,35 @@ packages: csstype: ^3.0.10 dev: false + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: false + dev: true - /gzipper/7.1.0: - resolution: {integrity: sha512-IhxdCXaOxsW/t8PiTUwg0YfXFI5O17SK80Snci0KJwMSOiqWZ/e00RZr2yhp2Zhnn6hJ0oYC/AJ6u6GQFu5l6w==} + /gzipper/7.2.0: + resolution: {integrity: sha512-qwYQr7GWBXIm9Cdzud+tyM/s9N+QFzGDZoF9YR8RYJbDKOYowzjMDPEinFtm78EQeeYMC/FJW2FXY0bHkyUgsA==} engines: {node: '>=14'} hasBin: true dependencies: '@gfx/zopfli': 1.0.15 commander: 7.2.0 - deep-equal: 2.0.5 + deep-equal: 2.1.0 simple-zstd: 1.4.2 uuid: 8.3.2 dev: true /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -2503,21 +2539,25 @@ packages: /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 + dev: true /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + dev: true /has-tostringtag/1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -2540,6 +2580,7 @@ packages: /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} + dev: true /immer/9.0.16: resolution: {integrity: sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==} @@ -2551,10 +2592,12 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + dev: true /inflight/1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -2576,6 +2619,7 @@ packages: get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 + dev: true /is-arguments/1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -2597,6 +2641,7 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: true /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -2610,10 +2655,12 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: true /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + dev: true /is-core-module/2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} @@ -2625,6 +2672,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} @@ -2659,12 +2707,14 @@ packages: /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} + dev: true /is-number-object/1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -2673,7 +2723,7 @@ packages: /is-path-inside/3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - dev: false + dev: true /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -2681,6 +2731,7 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: true /is-set/2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -2690,27 +2741,30 @@ packages: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 + dev: true /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - /is-typed-array/1.1.9: - resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.20.4 for-each: 0.3.3 + gopd: 1.0.1 has-tostringtag: 1.0.0 dev: true @@ -2727,6 +2781,7 @@ packages: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 + dev: true /is-weakset/2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} @@ -2757,9 +2812,9 @@ packages: /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /js-sdsl/4.1.5: - resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} - dev: false + /js-sdsl/4.2.0: + resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} + dev: true /js-sha3/0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -2781,7 +2836,7 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: false + dev: true /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -2795,6 +2850,7 @@ packages: /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -2802,13 +2858,14 @@ packages: /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: minimist: 1.2.7 - dev: false + dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -2820,9 +2877,9 @@ packages: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.5 + array-includes: 3.1.6 object.assign: 4.1.4 - dev: false + dev: true /kdbush/3.0.0: resolution: {integrity: sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==} @@ -2839,6 +2896,7 @@ packages: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true /libphonenumber-js/1.10.14: resolution: {integrity: sha512-McGS7GV/WjJ2KjfOGhJU1oJn29RYeo7Q+RpANRbUNMQ9gj5XArpbjurSuyYPTejFwbaUojstQ4XyWCrAzGOUXw==} @@ -2864,7 +2922,7 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: false + dev: true /lodash.castarray/4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} @@ -2902,13 +2960,13 @@ packages: hasBin: true dependencies: js-tokens: 4.0.0 - dev: false /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: true /magic-string/0.26.7: resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} @@ -2972,12 +3030,20 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true + + /minimatch/5.1.0: + resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - /minipass/3.3.4: - resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} + /minipass/3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 @@ -2987,7 +3053,7 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 yallist: 4.0.0 dev: true @@ -2999,14 +3065,15 @@ packages: /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false + dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false + dev: true /murmurhash-js/1.0.0: resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} @@ -3017,17 +3084,13 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - /node-addon-api/4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - dev: false - - /node-gyp-build/4.5.0: - resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} - hasBin: true - dev: false + dev: true /node-modules-regexp/1.0.0: resolution: {integrity: sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ==} @@ -3059,7 +3122,6 @@ packages: /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: false /object-hash/3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} @@ -3067,6 +3129,7 @@ packages: /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: true /object-is/1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} @@ -3079,6 +3142,7 @@ packages: /object-keys/1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + dev: true /object.assign/4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} @@ -3088,40 +3152,41 @@ packages: define-properties: 1.1.4 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: true - /object.entries/1.1.5: - resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} + /object.entries/1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 - dev: false + dev: true - /object.fromentries/2.0.5: - resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} + /object.fromentries/2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 - dev: false + dev: true - /object.hasown/1.1.1: - resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==} + /object.hasown/1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.1.4 es-abstract: 1.20.4 - dev: false + dev: true - /object.values/1.1.5: - resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} + /object.values/1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 - dev: false + dev: true /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3154,6 +3219,7 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 + dev: true /ora/5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} @@ -3187,7 +3253,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: false + dev: true /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} @@ -3201,7 +3267,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: false + dev: true /p-try/2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} @@ -3213,6 +3279,7 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -3232,14 +3299,17 @@ packages: /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -3247,6 +3317,7 @@ packages: /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + dev: true /pbf/3.2.1: resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} @@ -3282,27 +3353,27 @@ packages: node-modules-regexp: 1.0.0 dev: true - /postcss-import/14.1.0_postcss@8.4.18: + /postcss-import/14.1.0_postcss@8.4.19: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.18 + postcss: 8.4.19 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 - /postcss-js/4.0.0_postcss@8.4.18: + /postcss-js/4.0.0_postcss@8.4.19: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.3.3 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.18 + postcss: 8.4.19 - /postcss-load-config/3.1.4_postcss@8.4.18: + /postcss-load-config/3.1.4_postcss@8.4.19: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -3315,17 +3386,17 @@ packages: optional: true dependencies: lilconfig: 2.0.6 - postcss: 8.4.18 + postcss: 8.4.19 yaml: 1.10.2 - /postcss-nested/6.0.0_postcss@8.4.18: + /postcss-nested/6.0.0_postcss@8.4.19: resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.18 - postcss-selector-parser: 6.0.10 + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 /postcss-selector-parser/6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -3333,12 +3404,20 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: false + + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss/8.4.18: - resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} + /postcss/8.4.19: + resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -3352,19 +3431,22 @@ packages: /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + dev: true - /prettier-plugin-tailwindcss/0.1.13_prettier@2.7.1: - resolution: {integrity: sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==} + /prettier-plugin-tailwindcss/0.2.0_prettier@2.8.0: + resolution: {integrity: sha512-Ruqig/mdWCSpqdq9WK44nrmqM4BFWTzBPhPGwC5NK3coV9eZntEQPB84MGZbjAg0XQU02jVRHXNRPREBzxvM+A==} engines: {node: '>=12.17.0'} peerDependencies: prettier: '>=2.2.0' dependencies: - prettier: 2.7.1 + prettier: 2.8.0 + dev: true - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + /prettier/2.8.0: + resolution: {integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==} engines: {node: '>=10.13.0'} hasBin: true + dev: true /pretty-ms/8.0.0: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} @@ -3396,7 +3478,6 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: false /protocol-buffers-schema/3.6.0: resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} @@ -3405,6 +3486,7 @@ packages: /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} + dev: true /qrcode-generator/1.4.4: resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} @@ -3428,22 +3510,22 @@ packages: /react-base16-styling/0.9.1: resolution: {integrity: sha512-1s0CY1zRBOQ5M3T61wetEpvQmsYSNtWEcdYzyZNxKa8t7oDvaOn9d21xrGezGAHFWLM7SHcktPuPTrvoqxSfKw==} dependencies: - '@babel/runtime': 7.19.4 + '@babel/runtime': 7.20.1 '@types/base16': 1.0.2 - '@types/lodash': 4.14.186 + '@types/lodash': 4.14.190 base16: 1.0.0 color: 3.2.1 csstype: 3.1.1 lodash.curry: 4.1.1 dev: false - /react-chartjs-2/4.3.1_2unjvz6v6rskedwoxtmbfw2rje: - resolution: {integrity: sha512-5i3mjP6tU7QSn0jvb8I4hudTzHJqS8l00ORJnVwI2sYu0ihpj83Lv2YzfxunfxTZkscKvZu2F2w9LkwNBhj6xA==} + /react-chartjs-2/5.0.1_mdhqntb7qznawtkbfweh7f2mzm: + resolution: {integrity: sha512-u38C9OxynlNCBp+79grgXRs7DSJ9w8FuQ5/HO5FbYBbri8HSZW+9SWgjVshLkbXBfXnMGWakbHEtvN0nL2UG7Q==} peerDependencies: - chart.js: ^3.5.0 + chart.js: ^4.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - chart.js: 3.9.1 + chart.js: 4.0.1 react: 18.2.0 dev: false @@ -3457,8 +3539,8 @@ packages: scheduler: 0.23.0 dev: false - /react-hook-form/7.38.0_react@18.2.0: - resolution: {integrity: sha512-gxWW1kMeru9xR1GoR+Iw4hA+JBOM3SHfr4DWCUKY0xc7Vv1MLsF109oHtBeWl9shcyPFx67KHru44DheN0XY5A==} + /react-hook-form/7.39.6_react@18.2.0: + resolution: {integrity: sha512-f6bghLpUm1nfUtuJ09Zsaz2AkuHAGghngYAsKFGarFpi/NQl6JcGQ/ETc34tvLtjVo6hSLYw+/4dgBt0X54Jvw==} engines: {node: '>=12.22.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 @@ -3490,7 +3572,6 @@ packages: /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: false /react-json-pretty/2.2.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-3UMzlAXkJ4R8S4vmkRKtvJHTewG4/rn1Q18n0zqdu/ipZbUPLVZD+QwC7uVcD/IAY3s8iNVHlgR2dMzIUS0n1A==} @@ -3503,16 +3584,16 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /react-json-tree/0.17.0_i2izv7j3km4zzxbpzq2d4xtojy: + /react-json-tree/0.17.0_fan5qbzahqtxlm5dzefqlqx5ia: resolution: {integrity: sha512-hcWjibI/fAvsKnfYk+lka5OrE1Lvb1jH5pSnFhIU5T8cCCxB85r6h/NOzDPggSSgErjmx4rl3+2EkeclIKBOhg==} peerDependencies: '@types/react': ^16.3.0 || ^17.0.0 || ^18.0.0 react: ^16.3.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.19.4 - '@types/lodash': 4.14.186 + '@babel/runtime': 7.20.1 + '@types/lodash': 4.14.190 '@types/prop-types': 15.7.5 - '@types/react': 18.0.23 + '@types/react': 18.0.25 prop-types: 15.8.1 react: 18.2.0 react-base16-styling: 0.9.1 @@ -3524,7 +3605,7 @@ packages: mapbox-gl: '*' react: '>=16.3.0' dependencies: - '@types/mapbox-gl': 2.7.6 + '@types/mapbox-gl': 2.7.8 mapbox-gl: /empty-npm-package/1.0.0 react: 18.2.0 dev: false @@ -3613,8 +3694,8 @@ packages: dependencies: picomatch: 2.3.1 - /regenerator-runtime/0.13.10: - resolution: {integrity: sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==} + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: false /regexp.prototype.flags/1.4.3: @@ -3624,10 +3705,12 @@ packages: call-bind: 1.0.2 define-properties: 1.1.4 functions-have-names: 1.2.3 + dev: true /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} + dev: true /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -3642,6 +3725,7 @@ packages: /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + dev: true /resolve-protobuf-schema/2.1.0: resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} @@ -3664,7 +3748,7 @@ packages: is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: false + dev: true /restore-cursor/3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} @@ -3687,6 +3771,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 + dev: true /rollup-plugin-visualizer/5.8.3: resolution: {integrity: sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q==} @@ -3700,7 +3785,7 @@ packages: dependencies: open: 8.4.0 source-map: 0.7.4 - yargs: 17.6.0 + yargs: 17.6.2 dev: true /rollup/2.79.1: @@ -3730,6 +3815,7 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.3 is-regex: 1.1.4 + dev: true /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -3745,6 +3831,7 @@ packages: /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + dev: true /semver/7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} @@ -3752,38 +3839,19 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - - /serialport/10.4.0: - resolution: {integrity: sha512-PszPM5SnFMgSXom60PkKS2A9nMlNbHkuoyRBlzdSWw9rmgOn258+V0dYbWMrETJMM+TJV32vqBzjg5MmmUMwMw==} - engines: {node: '>=12.0.0'} - dependencies: - '@serialport/binding-mock': 10.2.2 - '@serialport/bindings-cpp': 10.7.0 - '@serialport/parser-byte-length': 10.3.0 - '@serialport/parser-cctalk': 10.3.0 - '@serialport/parser-delimiter': 10.3.0 - '@serialport/parser-inter-byte-timeout': 10.3.0 - '@serialport/parser-packet-length': 10.3.0 - '@serialport/parser-readline': 10.3.0 - '@serialport/parser-ready': 10.3.0 - '@serialport/parser-regex': 10.3.0 - '@serialport/parser-slip-encoder': 10.3.0 - '@serialport/parser-spacepacket': 10.3.0 - '@serialport/stream': 10.3.0 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false + dev: true /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -3791,13 +3859,14 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.3 object-inspect: 1.12.2 + dev: true /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /simple-git/3.14.1: - resolution: {integrity: sha512-1ThF4PamK9wBORVGMK9HK5si4zoGS2GpRO7tkAFObA4FZv6dKaCVHLQT+8zlgiBm6K2h+wEU9yOaFCu/SR3OyA==} + /simple-git/3.15.0: + resolution: {integrity: sha512-FiWoMPlcYHQ+ApRihUsGjC/ZmIlWj62S6MBCwOunczvXcLQt+9ZdrysDrR6QVepkRQfEAaBXrN2QtJKrN6zbtg==} dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 @@ -3824,6 +3893,12 @@ packages: /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + dev: true + + /slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true /slice-ansi/4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} @@ -3886,8 +3961,8 @@ packages: strip-ansi: 6.0.1 dev: true - /string.prototype.matchall/4.0.7: - resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} + /string.prototype.matchall/4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 @@ -3897,21 +3972,23 @@ packages: internal-slot: 1.0.3 regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 - dev: false + dev: true - /string.prototype.trimend/1.0.5: - resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 + dev: true - /string.prototype.trimstart/1.0.5: - resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 + dev: true /string_decoder/1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -3930,15 +4007,17 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: true /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - dev: false + dev: true /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + dev: true /sub-events/1.9.0: resolution: {integrity: sha512-dnFBayilG9Ku0k/lNs1Y7WV4kv91+ovCoeBV3uIYrY49DylvBb6z9d9ED2ctcrvX2YlReFalpCgJNtSgmrOaJg==} @@ -3963,24 +4042,33 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /table/6.8.0: - resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} + /synckit/0.8.4: + resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.4.1 + dev: true + + /table/6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.11.0 + ajv: 8.11.2 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 dev: true - /tailwindcss/3.2.1_postcss@8.4.18: - resolution: {integrity: sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==} + /tailwindcss/3.2.4_postcss@8.4.19: + resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} engines: {node: '>=12.13.0'} hasBin: true peerDependencies: @@ -4000,25 +4088,30 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.18 - postcss-import: 14.1.0_postcss@8.4.18 - postcss-js: 4.0.0_postcss@8.4.18 - postcss-load-config: 3.1.4_postcss@8.4.18 - postcss-nested: 6.0.0_postcss@8.4.18 - postcss-selector-parser: 6.0.10 + postcss: 8.4.19 + postcss-import: 14.1.0_postcss@8.4.19 + postcss-js: 4.0.0_postcss@8.4.19 + postcss-load-config: 3.1.4_postcss@8.4.19 + postcss-nested: 6.0.0_postcss@8.4.19 + postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 resolve: 1.22.1 transitivePeerDependencies: - ts-node - /tar/6.1.11: - resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} - engines: {node: '>= 10'} + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /tar/6.1.12: + resolution: {integrity: sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==} + engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 3.3.4 + minipass: 3.3.6 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 @@ -4039,6 +4132,7 @@ packages: /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true /through2/2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -4053,6 +4147,13 @@ packages: readable-stream: 3.6.0 dev: true + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + /tinyqueue/2.0.3: resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} dev: false @@ -4075,33 +4176,42 @@ packages: json5: 1.0.1 minimist: 1.2.7 strip-bom: 3.0.0 - dev: false + dev: true /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tsutils/3.21.0_typescript@4.8.4: + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true + + /tslog/4.4.2: + resolution: {integrity: sha512-rrdGRBdb0FgByvJdaO7gM0KUomZBqiek9UgfU66xZ8qkiNRh6xb+AC059UUU7EDImHFOXAx0L5IhrFt0AJd/6A==} + engines: {node: '>=16'} + dev: false + + /tsutils/3.21.0_typescript@4.9.3: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.8.4 + typescript: 4.9.3 + dev: true /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + dev: true /type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} @@ -4113,10 +4223,11 @@ packages: engines: {node: '>=8'} dev: true - /typescript/4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} + /typescript/4.9.3: + resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} engines: {node: '>=4.2.0'} hasBin: true + dev: true /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -4125,14 +4236,15 @@ packages: has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + dev: true - /unimported/1.22.0: - resolution: {integrity: sha512-sKtA/KKmpItJ7KpmRBXMK2j8eMLIGzg6aO/zvhNoaS8dzfUzJyWsm6aROFy7wdFeTbTr/zI/dueiNSvouMEKww==} + /unimported/1.23.0: + resolution: {integrity: sha512-+Z4uvmDt0AOrBXK9HyPP7YuxTZhQbVEvad/EoaYG4QD2uTjD0Zl6TrSheuZXpFAl9N4DEumxJrTSKpC4IqYjkQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: - '@typescript-eslint/parser': 5.41.0_3rubbgt5ekhqrcgx4uwls3neim - '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 + '@typescript-eslint/parser': 5.44.0_77fvizpdb3y4icyeo2mf4eo7em + '@typescript-eslint/typescript-estree': 5.44.0_typescript@4.9.3 chalk: 4.1.2 debug: 4.3.4 eslint: 7.32.0 @@ -4143,9 +4255,9 @@ packages: ora: 5.4.1 read-pkg-up: 7.0.1 resolve: 1.22.1 - simple-git: 3.14.1 + simple-git: 3.15.0 term-size: 2.2.1 - typescript: 4.8.4 + typescript: 4.9.3 yargs: 16.2.0 transitivePeerDependencies: - supports-color @@ -4166,6 +4278,7 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 + dev: true /use-sync-external-store/1.2.0_react@18.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} @@ -4204,25 +4317,28 @@ packages: engines: {node: '>= 0.10'} dev: false - /vite-plugin-environment/1.1.3_vite@3.2.0: + /vite-plugin-environment/1.1.3_vite@3.2.4: resolution: {integrity: sha512-9LBhB0lx+2lXVBEWxFZC+WO7PKEyE/ykJ7EPWCq95NEcCpblxamTbs5Dm3DLBGzwODpJMEnzQywJU8fw6XGGGA==} peerDependencies: vite: '>= 2.7' dependencies: - vite: 3.2.0 + vite: 3.2.4_@types+node@18.11.9 dev: true - /vite/3.2.0: - resolution: {integrity: sha512-Ovj7+cqIdM1I0LPCk2CWxzgADXMix3NLXpUT6g7P7zg/a9grk/TaC3qn9YMg7w7M0POIVCBOp1aBANJW+RH7oA==} + /vite/3.2.4_@types+node@18.11.9: + resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: + '@types/node': '>= 14' less: '*' sass: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 peerDependenciesMeta: + '@types/node': + optional: true less: optional: true sass: @@ -4234,8 +4350,9 @@ packages: terser: optional: true dependencies: - esbuild: 0.15.12 - postcss: 8.4.18 + '@types/node': 18.11.9 + esbuild: 0.15.15 + postcss: 8.4.19 resolve: 1.22.1 rollup: 2.79.1 optionalDependencies: @@ -4268,6 +4385,7 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true /which-collection/1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} @@ -4278,16 +4396,16 @@ packages: is-weakset: 2.0.2 dev: true - /which-typed-array/1.1.8: - resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.20.4 for-each: 0.3.3 + gopd: 1.0.1 has-tostringtag: 1.0.0 - is-typed-array: 1.1.9 + is-typed-array: 1.1.10 dev: true /which/1.3.1: @@ -4303,10 +4421,12 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} + dev: true /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -4331,6 +4451,7 @@ packages: /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} @@ -4359,8 +4480,8 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.6.0: - resolution: {integrity: sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==} + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 @@ -4375,10 +4496,10 @@ packages: /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: false + dev: true - /zustand/4.1.3_immer@9.0.16+react@18.2.0: - resolution: {integrity: sha512-AdFyr6+4sVD6xlyc/ArQaOrleqzxJEBbAXglufZ5lgvisoz8GUN3icOrKOnX1uRSxmpmdVUQPen9hhymWIzhBg==} + /zustand/4.1.4_immer@9.0.16+react@18.2.0: + resolution: {integrity: sha512-k2jVOlWo8p4R83mQ+/uyB8ILPO2PCJOf+QVjcL+1PbMCk1w5OoPYpAIxy9zd93FSfmJqoH6lGdwzzjwqJIRU5A==} engines: {node: '>=12.7.0'} peerDependencies: immer: '>=9.0' diff --git a/postcss.config.cjs b/postcss.config.cjs index 33ad091d..5cbc2c7d 100644 --- a/postcss.config.cjs +++ b/postcss.config.cjs @@ -1,6 +1,6 @@ module.exports = { plugins: { tailwindcss: {}, - autoprefixer: {}, - }, -} + autoprefixer: {} + } +}; diff --git a/prettier.config.cjs b/prettier.config.cjs index d83c9951..4abc5392 100644 --- a/prettier.config.cjs +++ b/prettier.config.cjs @@ -1,3 +1,4 @@ module.exports = { - plugins: [require('prettier-plugin-tailwindcss')], -} \ No newline at end of file + trailingComma: "none", + plugins: [require("prettier-plugin-tailwindcss")] +}; diff --git a/src/App.tsx b/src/App.tsx index b3e79c30..f01d80b1 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -10,6 +10,7 @@ import { useDeviceStore } from "@core/stores/deviceStore.js"; import { CommandPalette } from "./components/CommandPalette/Index.js"; import { DeviceSelector } from "./components/DeviceSelector.js"; import { DialogManager } from "./components/Dialog/DialogManager.js"; +import { Drawer } from "./components/Drawer.js"; import { NewDevice } from "./components/NewDevice.js"; import { PageNav } from "./components/PageNav.js"; import { Sidebar } from "./components/Sidebar.js"; @@ -30,14 +31,17 @@ export const App = (): JSX.Element => { - +
+ + +
)} diff --git a/src/DeviceWrapper.tsx b/src/DeviceWrapper.tsx index 95c56ee4..9ea7eba0 100644 --- a/src/DeviceWrapper.tsx +++ b/src/DeviceWrapper.tsx @@ -3,15 +3,15 @@ import type React from "react"; import { DeviceContext } from "@core/providers/useDevice.js"; import type { Device } from "@core/stores/deviceStore.js"; -export interface DeviceProps { +export interface DeviceWrapperProps { children: React.ReactNode; device: Device; } export const DeviceWrapper = ({ children, - device, -}: DeviceProps): JSX.Element => { + device +}: DeviceWrapperProps): JSX.Element => { return ( {children} ); diff --git a/src/PageRouter.tsx b/src/PageRouter.tsx index 40076ea9..6a2d4570 100644 --- a/src/PageRouter.tsx +++ b/src/PageRouter.tsx @@ -14,7 +14,7 @@ import { PeersPage } from "./pages/Peers.js"; export const PageRouter = (): JSX.Element => { const { activePage } = useDevice(); return ( - <> +
{activePage === "messages" && } {activePage === "map" && } {activePage === "extensions" && } @@ -23,6 +23,6 @@ export const PageRouter = (): JSX.Element => { {activePage === "peers" && } {activePage === "info" && } {activePage === "logs" && } - +
); }; diff --git a/src/components/Button.tsx b/src/components/Button.tsx index bdbd780d..16b822ff 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -22,14 +22,18 @@ export const Button = ({ className={`flex w-full rounded-md border border-transparent px-3 focus:outline-none focus:ring-2 focus:ring-orange-500 ${ variant === "primary" ? "bg-orange-600 text-white shadow-sm hover:bg-orange-700" - : "bg-orange-100 text-orange-700 hover:bg-orange-200" + : "bg-orange-200 text-orange-700 hover:bg-orange-200" } ${ size === "sm" ? "h-8 text-sm" : size === "md" ? "h-10 text-sm" : "h-10 text-base" - } ${disabled ? "cursor-not-allowed bg-red-400 focus:ring-red-500" : ""}`} + } ${ + disabled + ? "cursor-not-allowed bg-gray-400 hover:bg-gray-400 focus:ring-gray-500" + : "" + }`} disabled={disabled} {...rest} > diff --git a/src/components/CommandPalette/Index.tsx b/src/components/CommandPalette/Index.tsx index a11b8ea4..a765ec23 100644 --- a/src/components/CommandPalette/Index.tsx +++ b/src/components/CommandPalette/Index.tsx @@ -40,7 +40,7 @@ import { TrashIcon, UsersIcon, WindowIcon, - XCircleIcon, + XCircleIcon } from "@heroicons/react/24/outline"; import { GroupView } from "./GroupView.js"; @@ -77,58 +77,58 @@ export const CommandPalette = (): JSX.Element => { icon: InboxIcon, action() { setActivePage("messages"); - }, + } }, { name: "Map", icon: MapIcon, action() { setActivePage("map"); - }, + } }, { name: "Extensions", icon: BeakerIcon, action() { setActivePage("extensions"); - }, + } }, { name: "Config", icon: Cog8ToothIcon, action() { setActivePage("config"); - }, + } }, { name: "Channels", icon: Square3Stack3DIcon, action() { setActivePage("channels"); - }, + } }, { name: "Peers", icon: UsersIcon, action() { setActivePage("peers"); - }, + } }, { name: "Info", icon: IdentificationIcon, action() { setActivePage("info"); - }, + } }, { name: "Logs", icon: DocumentTextIcon, action() { setActivePage("logs"); - }, - }, - ], + } + } + ] }, { name: "Manage", @@ -138,17 +138,17 @@ export const CommandPalette = (): JSX.Element => { name: "[WIP] Switch Node", icon: ArrowsRightLeftIcon, action() { - alert('This feature is not implemented'); - }, + alert("This feature is not implemented"); + } }, { name: "Connect New Node", icon: PlusIcon, action() { setSelectedDevice(0); - }, - }, - ], + } + } + ] }, { name: "Contextual", @@ -159,20 +159,20 @@ export const CommandPalette = (): JSX.Element => { icon: QrCodeIcon, action() { setQRDialogOpen(true); - }, + } }, { name: "Reset Peers", icon: TrashIcon, action() { if (connection) { - void toast.promise(connection.resetPeers(), { + void toast.promise(connection.resetPeers({}), { loading: "Resetting...", success: "Succesfully reset peers", - error: "No response received", + error: "No response received" }); } - }, + } }, { name: "Disconnect", @@ -181,9 +181,9 @@ export const CommandPalette = (): JSX.Element => { void connection?.disconnect(); setSelectedDevice(0); removeDevice(selectedDevice ?? 0); - }, - }, - ], + } + } + ] }, { name: "Debug", @@ -194,16 +194,16 @@ export const CommandPalette = (): JSX.Element => { icon: ArrowPathIcon, action() { void connection?.configure(); - }, + } }, { name: "[WIP] Clear Messages", icon: ArchiveBoxXMarkIcon, action() { - alert('This feature is not implemented'); - }, - }, - ], + alert("This feature is not implemented"); + } + } + ] }, { name: "Application", @@ -213,11 +213,11 @@ export const CommandPalette = (): JSX.Element => { name: "[WIP] Toggle Dark Mode", icon: MoonIcon, action() { - alert('This feature is not implemented'); - }, - }, - ], - }, + alert("This feature is not implemented"); + } + } + ] + } ]; const handleKeydown = (e: KeyboardEvent) => { @@ -243,7 +243,7 @@ export const CommandPalette = (): JSX.Element => { return `${group.name} ${command.name}` .toLowerCase() .includes(query.toLowerCase()); - }), + }) }; }) .filter((group) => group.commands.length); diff --git a/src/components/CommandPalette/PaletteTransition.tsx b/src/components/CommandPalette/PaletteTransition.tsx index a8e9e627..825913c4 100644 --- a/src/components/CommandPalette/PaletteTransition.tsx +++ b/src/components/CommandPalette/PaletteTransition.tsx @@ -8,7 +8,7 @@ export interface PaletteTransitionProps { } export const PaletteTransition = ({ - children, + children }: PaletteTransitionProps): JSX.Element => { return ( <> diff --git a/src/components/Dialog/ImportDialog.tsx b/src/components/Dialog/ImportDialog.tsx new file mode 100644 index 00000000..d19278e8 --- /dev/null +++ b/src/components/Dialog/ImportDialog.tsx @@ -0,0 +1,126 @@ +import type React from "react"; +import { useEffect, useState } from "react"; + +import { fromByteArray } from "base64-js"; +import { toast } from "react-hot-toast"; +import { QRCode } from "react-qrcode-logo"; + +import { Dialog } from "@headlessui/react"; +import { ClipboardIcon, XMarkIcon } from "@heroicons/react/24/outline"; +import { Protobuf } from "@meshtastic/meshtasticjs"; + +import { Checkbox } from "../form/Checkbox.js"; +import { Input } from "../form/Input.js"; +import { IconButton } from "../IconButton.js"; + +export interface ImportDialogProps { + isOpen: boolean; + close: () => void; + loraConfig?: Protobuf.Config_LoRaConfig; + channels: Protobuf.Channel[]; +} + +export const ImportDialog = ({ + isOpen, + close, + loraConfig, + channels +}: ImportDialogProps): JSX.Element => { + const [selectedChannels, setSelectedChannels] = useState([0]); + const [QRCodeURL, setQRCodeURL] = useState(""); + + useEffect(() => { + const channelsToEncode = channels + .filter((channel) => selectedChannels.includes(channel.index)) + .map((channel) => channel.settings) + .filter((ch): ch is Protobuf.ChannelSettings => !!ch); + const encoded = Protobuf.ChannelSet.toBinary({ + loraConfig, + settings: channelsToEncode + }); + const base64 = fromByteArray(encoded) + .replace(/=/g, "") + .replace(/\+/g, "-") + .replace(/\//g, "_"); + + setQRCodeURL(`https://meshtastic.org/e/#${base64}`); + }, [channels, selectedChannels, loraConfig]); + + return ( + + + ); +}; diff --git a/src/components/Dialog/QRDialog.tsx b/src/components/Dialog/QRDialog.tsx index 431626a4..4d5aaa16 100644 --- a/src/components/Dialog/QRDialog.tsx +++ b/src/components/Dialog/QRDialog.tsx @@ -24,7 +24,7 @@ export const QRDialog = ({ isOpen, close, loraConfig, - channels, + channels }: QRDialogProps): JSX.Element => { const [selectedChannels, setSelectedChannels] = useState([0]); const [QRCodeURL, setQRCodeURL] = useState(""); @@ -37,7 +37,7 @@ export const QRDialog = ({ const encoded = Protobuf.ChannelSet.toBinary( Protobuf.ChannelSet.create({ loraConfig, - settings: channelsToEncode, + settings: channelsToEncode }) ); const base64 = fromByteArray(encoded) @@ -94,7 +94,7 @@ export const QRDialog = ({ } else { setSelectedChannels([ ...selectedChannels, - channel.index, + channel.index ]); } }} @@ -114,7 +114,7 @@ export const QRDialog = ({ action() { void navigator.clipboard.writeText(QRCodeURL); toast.success("Copied URL to Clipboard"); - }, + } }} /> diff --git a/src/components/Drawer.tsx b/src/components/Drawer.tsx new file mode 100644 index 00000000..4b1356e3 --- /dev/null +++ b/src/components/Drawer.tsx @@ -0,0 +1,50 @@ +import type React from "react"; +import { useState } from "react"; + +import { useDevice } from "@app/core/providers/useDevice.js"; +import { ChevronDownIcon, ChevronUpIcon } from "@heroicons/react/24/outline"; + +export const Drawer = (): JSX.Element => { + const [drawerOpen, setDrawerOpen] = useState(false); + + const tabs = [{ title: "Notifications" }, { title: "Debug" }]; + + const { config, moduleConfig, hardware, nodes, waypoints, connection } = + useDevice(); + + const [serialLogs, setSerialLogs] = useState(""); + + connection?.onDeviceDebugLog.subscribe((packet) => { + setSerialLogs(serialLogs + new TextDecoder().decode(packet)); + }); + + return ( +
+
+
{ + setDrawerOpen(!drawerOpen); + }} + className="ml-auto flex px-2 hover:cursor-pointer hover:bg-slate-100" + > +
+ {drawerOpen ? ( + + ) : ( + + )} +
+
+
+
+
+ {serialLogs.split("\n").map((line, index) => ( +
+ {line} +
+ ))} +
+
+
+ ); +}; diff --git a/src/components/Dropdown.tsx b/src/components/Dropdown.tsx index 33831952..71ab6a01 100644 --- a/src/components/Dropdown.tsx +++ b/src/components/Dropdown.tsx @@ -18,7 +18,7 @@ export const Dropdown = ({ stat, icon, defaultOpen, - children, + children }: DropdownProps): JSX.Element => { return ( diff --git a/src/components/NewDevice.tsx b/src/components/NewDevice.tsx index ae15f589..192f8369 100644 --- a/src/components/NewDevice.tsx +++ b/src/components/NewDevice.tsx @@ -15,13 +15,13 @@ export const NewDevice = () => { element: BLE, disabled: !navigator.bluetooth, disabledMessage: - "WebBluetooth is currently only supported by Chromium based browsers: https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API#browser_compatibility", + "WebBluetooth is currently only supported by Chromium based browsers: https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API#browser_compatibility" }, { name: "HTTP", icon: , element: HTTP, - disabled: false, + disabled: false }, { name: "Serial", @@ -29,8 +29,8 @@ export const NewDevice = () => { element: Serial, disabled: !navigator.serial, disabledMessage: - "WebSerial is currently only supported by Chromium based browsers: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility", - }, + "WebSerial is currently only supported by Chromium based browsers: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility" + } ]); return ( diff --git a/src/components/PageComponents/AppConfig/Map.tsx b/src/components/PageComponents/AppConfig/Map.tsx new file mode 100644 index 00000000..9daa1d5d --- /dev/null +++ b/src/components/PageComponents/AppConfig/Map.tsx @@ -0,0 +1,132 @@ +import type React from "react"; + +import { Controller, useFieldArray, useForm } from "react-hook-form"; + +import { Button } from "@app/components/Button.js"; +import { InfoWrapper } from "@app/components/form/InfoWrapper.js"; +import { Input } from "@app/components/form/Input.js"; +import { Toggle } from "@app/components/form/Toggle.js"; +import { IconButton } from "@app/components/IconButton.js"; +import { useAppStore } from "@app/core/stores/appStore.js"; +import { MapValidation } from "@app/validation/appConfig/map.js"; +import { Form } from "@components/form/Form"; +import { TrashIcon } from "@heroicons/react/24/outline"; +import { classValidatorResolver } from "@hookform/resolvers/class-validator"; + +export const Map = (): JSX.Element => { + const { rasterSources, setRasterSources } = useAppStore(); + + const { + register, + handleSubmit, + formState: { errors, isDirty }, + control, + reset + } = useForm({ + defaultValues: { + // wmsSources: wmsSources ?? [ + // { + // url: "", + // tileSize: 512, + // type: "raster" + // } + // ] + }, + resolver: classValidatorResolver(MapValidation) + }); + + const { fields, append, remove, insert } = useFieldArray({ + control, + name: "rasterSources" + }); + + const onSubmit = handleSubmit((data) => { + setRasterSources(data.rasterSources); + }); + + // useEffect(() => { + // reset(rasterSources); + // }, [reset, rasterSources]); + + return ( +
+ reset({ + rasterSources + }) + } + dirty={isDirty} + onSubmit={onSubmit} + > + +
+ {fields.map((field, index) => ( +
+ ( + + )} + /> + + + + } + onClick={() => { + remove(index); + }} + /> +
+ ))} + +
+
+
+ ); +}; diff --git a/src/components/PageComponents/Channel.tsx b/src/components/PageComponents/Channel.tsx index ac4fd092..83cf45e3 100644 --- a/src/components/PageComponents/Channel.tsx +++ b/src/components/PageComponents/Channel.tsx @@ -14,7 +14,7 @@ import { useDevice } from "@core/providers/useDevice.js"; import { ArrowPathIcon, EyeIcon, - EyeSlashIcon, + EyeSlashIcon } from "@heroicons/react/24/outline"; import { classValidatorResolver } from "@hookform/resolvers/class-validator"; import { Protobuf } from "@meshtastic/meshtasticjs"; @@ -34,39 +34,39 @@ export const Channel = ({ channel }: SettingsPanelProps): JSX.Element => { formState: { errors, isDirty }, reset, control, - setValue, + setValue } = useForm({ defaultValues: { enabled: [ Protobuf.Channel_Role.SECONDARY, - Protobuf.Channel_Role.PRIMARY, + Protobuf.Channel_Role.PRIMARY ].find((role) => role === channel?.role) ? true : false, ...channel?.settings, - psk: fromByteArray(channel?.settings?.psk ?? new Uint8Array(0)), + psk: fromByteArray(channel?.settings?.psk ?? new Uint8Array(0)) }, - resolver: classValidatorResolver(ChannelSettingsValidation), + resolver: classValidatorResolver(ChannelSettingsValidation) }); useEffect(() => { reset({ enabled: [ Protobuf.Channel_Role.SECONDARY, - Protobuf.Channel_Role.PRIMARY, + Protobuf.Channel_Role.PRIMARY ].find((role) => role === channel?.role) ? true : false, ...channel?.settings, - psk: fromByteArray(channel?.settings?.psk ?? new Uint8Array(0)), + psk: fromByteArray(channel?.settings?.psk ?? new Uint8Array(0)) }); }, [channel, reset]); const onSubmit = handleSubmit((data) => { if (connection) { void toast.promise( - connection.setChannel( - { + connection.setChannel({ + channel: { role: channel?.role === Protobuf.Channel_Role.PRIMARY ? Protobuf.Channel_Role.PRIMARY @@ -76,18 +76,18 @@ export const Channel = ({ channel }: SettingsPanelProps): JSX.Element => { index: channel?.index, settings: { ...data, - psk: toByteArray(data.psk ?? ""), - }, + psk: toByteArray(data.psk ?? "") + } }, - (): Promise => { + callback: (): Promise => { reset({ ...data }); return Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved Channel", - error: "No response received", + error: "No response received" } ); } @@ -102,18 +102,18 @@ export const Channel = ({ channel }: SettingsPanelProps): JSX.Element => { ? channel.settings.name : channel.role === Protobuf.Channel_Role.PRIMARY ? "Primary" - : `Channel: ${channel.index}`, + : `Channel: ${channel.index}` ]} reset={() => reset({ enabled: [ Protobuf.Channel_Role.SECONDARY, - Protobuf.Channel_Role.PRIMARY, + Protobuf.Channel_Role.PRIMARY ].find((role) => role === channel?.role) ? true : false, ...channel?.settings, - psk: fromByteArray(channel?.settings?.psk ?? new Uint8Array(0)), + psk: fromByteArray(channel?.settings?.psk ?? new Uint8Array(0)) }) } dirty={isDirty} @@ -153,8 +153,10 @@ export const Channel = ({ channel }: SettingsPanelProps): JSX.Element => { action: () => { const key = new Uint8Array(keySize / 8); crypto.getRandomValues(key); - setValue("psk", fromByteArray(key)); - }, + setValue("psk", fromByteArray(key), { + shouldDirty: true + }); + } }} > @@ -173,7 +175,7 @@ export const Channel = ({ channel }: SettingsPanelProps): JSX.Element => { ), action: () => { setPskHidden(!pskHidden); - }, + } }} error={errors.psk?.message} {...register("psk")} diff --git a/src/components/PageComponents/Config/Bluetooth.tsx b/src/components/PageComponents/Config/Bluetooth.tsx index 233bdd5d..7250fc41 100644 --- a/src/components/PageComponents/Config/Bluetooth.tsx +++ b/src/components/PageComponents/Config/Bluetooth.tsx @@ -22,10 +22,10 @@ export const Bluetooth = (): JSX.Element => { handleSubmit, formState: { errors, isDirty }, control, - reset, + reset } = useForm({ defaultValues: config.bluetooth, - resolver: classValidatorResolver(BluetoothValidation), + resolver: classValidatorResolver(BluetoothValidation) }); useEffect(() => { @@ -35,22 +35,22 @@ export const Bluetooth = (): JSX.Element => { const onSubmit = handleSubmit((data) => { if (connection) { void toast.promise( - connection.setConfig( - { + connection.setConfig({ + config: { payloadVariant: { oneofKind: "bluetooth", - bluetooth: data, - }, + bluetooth: data + } }, - async () => { + callback: async () => { reset({ ...data }); await Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved Bluetooth Config, Restarting Node", - error: "No response received", + error: "No response received" } ); } @@ -59,7 +59,7 @@ export const Bluetooth = (): JSX.Element => { const pairingMode = useWatch({ control, name: "mode", - defaultValue: Protobuf.Config_BluetoothConfig_PairingMode.RANDOM_PIN, + defaultValue: Protobuf.Config_BluetoothConfig_PairingMode.RANDOM_PIN }); return ( @@ -98,7 +98,7 @@ export const Bluetooth = (): JSX.Element => { description="Pin to use when pairing" type="number" {...register("fixedPin", { - valueAsNumber: true, + valueAsNumber: true })} /> diff --git a/src/components/PageComponents/Config/Device.tsx b/src/components/PageComponents/Config/Device.tsx index a8fc4bb8..7ad664a3 100644 --- a/src/components/PageComponents/Config/Device.tsx +++ b/src/components/PageComponents/Config/Device.tsx @@ -4,6 +4,7 @@ import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; import { toast } from "react-hot-toast"; +import { Input } from "@app/components/form/Input.js"; import { Select } from "@app/components/form/Select.js"; import { Toggle } from "@app/components/form/Toggle.js"; import { DeviceValidation } from "@app/validation/config/device.js"; @@ -20,10 +21,10 @@ export const Device = (): JSX.Element => { handleSubmit, formState: { errors, isDirty }, control, - reset, + reset } = useForm({ defaultValues: config.device, - resolver: classValidatorResolver(DeviceValidation), + resolver: classValidatorResolver(DeviceValidation) }); useEffect(() => { @@ -33,22 +34,22 @@ export const Device = (): JSX.Element => { const onSubmit = handleSubmit((data) => { if (connection) { void toast.promise( - connection.setConfig( - { + connection.setConfig({ + config: { payloadVariant: { oneofKind: "device", - device: data, - }, + device: data + } }, - async () => { + callback: async () => { reset({ ...data }); await Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved Device Config, Restarting Node", - error: "No response received", + error: "No response received" } ); } @@ -93,6 +94,20 @@ export const Device = (): JSX.Element => { /> )} /> + + ); }; diff --git a/src/components/PageComponents/Config/Display.tsx b/src/components/PageComponents/Config/Display.tsx index e6a88bf8..97a81a9c 100644 --- a/src/components/PageComponents/Config/Display.tsx +++ b/src/components/PageComponents/Config/Display.tsx @@ -21,10 +21,10 @@ export const Display = (): JSX.Element => { handleSubmit, formState: { errors, isDirty }, reset, - control, + control } = useForm({ defaultValues: config.display, - resolver: classValidatorResolver(DisplayValidation), + resolver: classValidatorResolver(DisplayValidation) }); useEffect(() => { @@ -34,22 +34,22 @@ export const Display = (): JSX.Element => { const onSubmit = handleSubmit((data) => { if (connection) { void toast.promise( - connection.setConfig( - { + connection.setConfig({ + config: { payloadVariant: { oneofKind: "display", - display: data, - }, + display: data + } }, - async () => { + callback: async () => { reset({ ...data }); await Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved Display Config, Restarting Node", - error: "No response received", + error: "No response received" } ); } @@ -115,6 +115,13 @@ export const Display = (): JSX.Element => { > {renderOptions(Protobuf.Config_DisplayConfig_DisplayUnits)} + ); }; diff --git a/src/components/PageComponents/Config/LoRa.tsx b/src/components/PageComponents/Config/LoRa.tsx index f1578e70..c0694a8a 100644 --- a/src/components/PageComponents/Config/LoRa.tsx +++ b/src/components/PageComponents/Config/LoRa.tsx @@ -23,16 +23,16 @@ export const LoRa = (): JSX.Element => { handleSubmit, formState: { errors, isDirty }, control, - reset, + reset } = useForm({ defaultValues: config.lora, - resolver: classValidatorResolver(LoRaValidation), + resolver: classValidatorResolver(LoRaValidation) }); const usePreset = useWatch({ control, name: "usePreset", - defaultValue: true, + defaultValue: true }); useEffect(() => { @@ -42,22 +42,22 @@ export const LoRa = (): JSX.Element => { const onSubmit = handleSubmit((data) => { if (connection) { void toast.promise( - connection.setConfig( - { + connection.setConfig({ + config: { payloadVariant: { oneofKind: "lora", - lora: data, - }, + lora: data + } }, - async () => { + callback: async () => { reset({ ...data }); await Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved LoRa Config, Restarting Node", - error: "No response received", + error: "No response received" } ); } @@ -99,7 +99,7 @@ export const LoRa = (): JSX.Element => { suffix="MHz" error={errors.bandwidth?.message} {...register("bandwidth", { - valueAsNumber: true, + valueAsNumber: true })} disabled={usePreset} /> @@ -110,7 +110,7 @@ export const LoRa = (): JSX.Element => { suffix="CPS" error={errors.spreadFactor?.message} {...register("spreadFactor", { - valueAsNumber: true, + valueAsNumber: true })} disabled={usePreset} /> @@ -120,7 +120,7 @@ export const LoRa = (): JSX.Element => { type="number" error={errors.codingRate?.message} {...register("codingRate", { - valueAsNumber: true, + valueAsNumber: true })} disabled={usePreset} /> diff --git a/src/components/PageComponents/Config/Network.tsx b/src/components/PageComponents/Config/Network.tsx index 2fd9000d..ab41a82b 100644 --- a/src/components/PageComponents/Config/Network.tsx +++ b/src/components/PageComponents/Config/Network.tsx @@ -6,12 +6,14 @@ import { toast } from "react-hot-toast"; import { FormSection } from "@app/components/form/FormSection.js"; import { Input } from "@app/components/form/Input.js"; +import { IPAddress } from "@app/components/form/IPAddress.js"; import { Select } from "@app/components/form/Select.js"; import { Toggle } from "@app/components/form/Toggle.js"; import { renderOptions } from "@app/core/utils/selectEnumOptions.js"; import { NetworkValidation } from "@app/validation/config/network.js"; import { Form } from "@components/form/Form"; import { useDevice } from "@core/providers/useDevice.js"; +import { ErrorMessage } from "@hookform/error-message"; import { classValidatorResolver } from "@hookform/resolvers/class-validator"; import { Protobuf } from "@meshtastic/meshtasticjs"; @@ -22,22 +24,22 @@ export const Network = (): JSX.Element => { handleSubmit, formState: { errors, isDirty }, control, - reset, + reset } = useForm({ defaultValues: config.network, - resolver: classValidatorResolver(NetworkValidation), + resolver: classValidatorResolver(NetworkValidation) }); const wifiEnabled = useWatch({ control, name: "wifiEnabled", - defaultValue: false, + defaultValue: false }); const ethEnabled = useWatch({ control, name: "ethEnabled", - defaultValue: false, + defaultValue: false }); useEffect(() => { @@ -45,24 +47,32 @@ export const Network = (): JSX.Element => { }, [reset, config.network]); const onSubmit = handleSubmit((data) => { + console.log(data); + if (connection) { + const tmp = Protobuf.Config_NetworkConfig.create({ + ethEnabled: true, + ethMode: Protobuf.Config_NetworkConfig_EthMode.DHCP + }); void toast.promise( - connection.setConfig( - { - payloadVariant: { - oneofKind: "network", - network: data, + connection + .setConfig({ + config: { + payloadVariant: { + oneofKind: "network", + network: tmp + } }, - }, - async () => { - reset({ ...data }); - await Promise.resolve(); - } - ), + callback: async () => { + reset({ ...data }); + await Promise.resolve(); + } + }) + .catch((e) => console.log(e)), { loading: "Saving...", success: "Saved Network Config, Restarting Node", - error: "No response received", + error: "No response received" } ); } @@ -76,6 +86,19 @@ export const Network = (): JSX.Element => { dirty={isDirty} onSubmit={onSubmit} > + + + + + + + + + + + + + { render={({ field: { value, ...rest } }) => ( )} /> - { description="Network password" error={errors.wifiPsk?.message} disabled={!wifiEnabled} - {...register("wifiPsk")} + {...register("wifiPsk", { disabled: !wifiEnabled })} /> @@ -130,35 +145,43 @@ export const Network = (): JSX.Element => { label="Ethernet Mode" description="Address assignment selection" disabled={!ethEnabled} - {...register("ethMode", { valueAsNumber: true })} + {...register("ethMode", { + valueAsNumber: true, + disabled: !ethEnabled + })} > {renderOptions(Protobuf.Config_NetworkConfig_EthMode)} + { handleSubmit, formState: { errors, isDirty }, reset, - control, + control } = useForm({ defaultValues: { fixedAlt: myNode?.data.position?.altitude, fixedLat: (myNode?.data.position?.latitudeI ?? 0) / 1e7, fixedLng: (myNode?.data.position?.longitudeI ?? 0) / 1e7, - ...config.position, + ...config.position }, - resolver: classValidatorResolver(PositionValidation), + resolver: classValidatorResolver(PositionValidation) }); const fixedPositionEnabled = useWatch({ control, name: "fixedPosition", - defaultValue: false, + defaultValue: false }); useEffect(() => { @@ -45,7 +46,7 @@ export const Position = (): JSX.Element => { fixedAlt: myNode?.data.position?.altitude, fixedLat: (myNode?.data.position?.latitudeI ?? 0) / 1e7, fixedLng: (myNode?.data.position?.longitudeI ?? 0) / 1e7, - ...config.position, + ...config.position }); }, [reset, config.position, myNode?.data.position]); @@ -59,49 +60,41 @@ export const Position = (): JSX.Element => { if (connection) { void toast.promise( - connection.sendPacket( - Protobuf.Position.toBinary( - Protobuf.Position.create({ - altitude: fixedAlt, - latitudeI: fixedLat * 1e7, - longitudeI: fixedLng * 1e7, - }) - ), - Protobuf.PortNum.POSITION_APP, - undefined, - true, - undefined, - true, - false, - async () => { + connection.setPosition({ + position: Protobuf.Position.create({ + altitude: fixedAlt, + latitudeI: fixedLat * 1e7, + longitudeI: fixedLng * 1e7 + }), + callback: async () => { reset({ ...data }); await Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved Channel", - error: "No response received", + error: "No response received" } ); if (configHasChanged) { void toast.promise( - connection.setConfig( - { + connection.setConfig({ + config: { payloadVariant: { oneofKind: "position", - position: rest, - }, + position: rest + } }, - async () => { + callback: async () => { reset({ ...data }); await Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved Position Config, Restarting Node", - error: "No response received", + error: "No response received" } ); } @@ -201,94 +194,65 @@ export const Position = (): JSX.Element => { error={errors.gpsAttemptTime?.message} {...register("gpsAttemptTime", { valueAsNumber: true })} /> - {/* { const { value, onChange, ...rest } = field; const { error } = fieldState; - const options = Object.entries( - Protobuf.Config_PositionConfig_PositionFlags - ) - .filter((value) => typeof value[1] !== "number") - .filter( - (value) => - parseInt(value[0]) !== - Protobuf.Config_PositionConfig_PositionFlags.UNSET - ) - .map((value) => { - return { - value: parseInt(value[0]), - label: value[1].toString().replace("POS_", "").toLowerCase(), - }; - }); + // const options = Object.entries( + // Protobuf.Config_PositionConfig_PositionFlags + // ) + // .filter((value) => typeof value[1] !== "number") + // .filter( + // (value) => + // parseInt(value[0]) !== + // Protobuf.Config_PositionConfig_PositionFlags.UNSET + // ) + // .map((value) => { + // return { + // value: parseInt(value[0]), + // label: value[1].toString().replace("POS_", "").toLowerCase(), + // }; + // }); - const selected = bitwiseDecode( - value, - Protobuf.Config_PositionConfig_PositionFlags - ).map((flag) => - Protobuf.Config_PositionConfig_PositionFlags[flag] - .replace("POS_", "") - .toLowerCase() - ); + // const selected = bitwiseDecode( + // value, + // Protobuf.Config_PositionConfig_PositionFlags + // ).map((flag) => + // Protobuf.Config_PositionConfig_PositionFlags[flag] + // .replace("POS_", "") + // .toLowerCase() + // ); // onChange={(e: { value: number; label: string }[]): void => // onChange(bitwiseEncode(e.map((v) => v.value))) // } return ( - - { - // const selected = [...selectedItemsState, item.value] - // const selectedItems = selected - // const selectedItemsLength = selectedItems.length - // let selectedNames = '' - // if (selectedItemsLength === 0) { - // selectedNames = '' - // } else if (selectedItemsLength === 1) { - // selectedNames = selectedItems.toString() - // } else if (selectedItemsLength > 1) { - // selectedNames = selectedItemsLength.toString() + ' selected...' - // } - // setSelectedItems(selectedItems) - // setSelectedItemNames(selectedNames) - // }} - // onDeselect={(item) => { - // const deselectedItemIndex = selectedItemsState.indexOf(item.value) - // const selectedItems = selectedItemsState.filter((_item, i) => i !== deselectedItemIndex) - // const selectedItemsLength = selectedItems.length - // let selectedNames = '' - // if (selectedItemsLength === 0) { - // selectedNames = '' - // } else if (selectedItemsLength === 1) { - // selectedNames = selectedItems.toString() - // } else if (selectedItemsLength > 1) { - // selectedNames = selectedItemsLength.toString() + ' selected...' - // } - - // setSelectedItems(selectedItems) - // setSelectedItemNames(selectedNames) - // }} - > - - - + error={error?.message} + selected={value} + decodeEnun={Protobuf.Config_PositionConfig_PositionFlags} + onChange={onChange} + /> ); }} - /> */} + /> + + ); }; diff --git a/src/components/PageComponents/Config/Power.tsx b/src/components/PageComponents/Config/Power.tsx index b68129e1..8a859b67 100644 --- a/src/components/PageComponents/Config/Power.tsx +++ b/src/components/PageComponents/Config/Power.tsx @@ -19,10 +19,10 @@ export const Power = (): JSX.Element => { handleSubmit, formState: { errors, isDirty }, reset, - control, + control } = useForm({ defaultValues: config.power, - resolver: classValidatorResolver(PowerValidation), + resolver: classValidatorResolver(PowerValidation) }); useEffect(() => { @@ -32,22 +32,22 @@ export const Power = (): JSX.Element => { const onSubmit = handleSubmit((data) => { if (connection) { void toast.promise( - connection.setConfig( - { + connection.setConfig({ + config: { payloadVariant: { oneofKind: "power", - power: data, - }, + power: data + } }, - async () => { + callback: async () => { reset({ ...data }); await Promise.resolve(); } - ), + }), { loading: "Saving...", success: "Saved Power Config, Restarting Node", - error: "No response received", + error: "No response received" } ); } diff --git a/src/components/PageComponents/Config/User.tsx b/src/components/PageComponents/Config/User.tsx index 0394ace7..452adf7f 100644 --- a/src/components/PageComponents/Config/User.tsx +++ b/src/components/PageComponents/Config/User.tsx @@ -25,31 +25,34 @@ export const User = (): JSX.Element => { handleSubmit, formState: { errors, isDirty }, reset, - control, + control } = useForm({ defaultValues: myNode?.data.user, - resolver: classValidatorResolver(UserValidation), + resolver: classValidatorResolver(UserValidation) }); useEffect(() => { reset({ longName: myNode?.data.user?.longName, shortName: myNode?.data.user?.shortName, - isLicensed: myNode?.data.user?.isLicensed, + isLicensed: myNode?.data.user?.isLicensed }); }, [reset, myNode]); const onSubmit = handleSubmit((data) => { if (connection && myNode?.data.user) { void toast.promise( - connection.setOwner({ ...myNode.data.user, ...data }, async () => { - reset({ ...data }); - await Promise.resolve(); + connection.setOwner({ + owner: { ...myNode.data.user, ...data }, + callback: async () => { + reset({ ...data }); + await Promise.resolve(); + } }), { loading: "Saving...", success: "Saved User, Restarting Node", - error: "No response received", + error: "No response received" } ); } @@ -63,7 +66,7 @@ export const User = (): JSX.Element => { reset({ longName: myNode?.data.user?.longName, shortName: myNode?.data.user?.shortName, - isLicensed: myNode?.data.user?.isLicensed, + isLicensed: myNode?.data.user?.isLicensed }); }} dirty={isDirty} diff --git a/src/components/PageComponents/Connect/BLE.tsx b/src/components/PageComponents/Connect/BLE.tsx index d6ef386d..ef3c7f77 100644 --- a/src/components/PageComponents/Connect/BLE.tsx +++ b/src/components/PageComponents/Connect/BLE.tsx @@ -29,7 +29,7 @@ export const BLE = (): JSX.Element => { setSelectedDevice(id); const connection = new IBLEConnection(id); await connection.connect({ - device: BLEDevice, + device: BLEDevice }); device.addConnection(connection); subscribeAll(device, connection); @@ -58,7 +58,7 @@ export const BLE = (): JSX.Element => { onClick={() => { void navigator.bluetooth .requestDevice({ - filters: [{ services: [Constants.serviceUUID] }], + filters: [{ services: [Constants.serviceUUID] }] }) .then((device) => { const exists = bleDevices.findIndex((d) => d.id === device.id); diff --git a/src/components/PageComponents/Connect/HTTP.tsx b/src/components/PageComponents/Connect/HTTP.tsx index 6f35ebca..223a4de2 100644 --- a/src/components/PageComponents/Connect/HTTP.tsx +++ b/src/components/PageComponents/Connect/HTTP.tsx @@ -21,14 +21,14 @@ export const HTTP = (): JSX.Element => { }>({ defaultValues: { ip: "meshtastic.local", - tls: location.protocol === "https:", - }, + tls: location.protocol === "https:" + } }); const TLSEnabled = useWatch({ control, name: "tls", - defaultValue: location.protocol === "https:", + defaultValue: location.protocol === "https:" }); const onSubmit = handleSubmit((data) => { @@ -40,7 +40,7 @@ export const HTTP = (): JSX.Element => { void connection.connect({ address: data.ip, fetchInterval: 2000, - tls: data.tls, + tls: data.tls }); device.addConnection(connection); subscribeAll(device, connection); diff --git a/src/components/PageComponents/Connect/Serial.tsx b/src/components/PageComponents/Connect/Serial.tsx index 9f9c4c6b..7fbc7d34 100644 --- a/src/components/PageComponents/Connect/Serial.tsx +++ b/src/components/PageComponents/Connect/Serial.tsx @@ -38,7 +38,7 @@ export const Serial = (): JSX.Element => { .connect({ port, baudRate: undefined, - concurrentLogOutput: true, + concurrentLogOutput: true }) .catch((e: Error) => console.log(`Unable to Connect: ${e.message}`)); device.addConnection(connection); diff --git a/src/components/PageComponents/Messages/Message.tsx b/src/components/PageComponents/Messages/Message.tsx index 46c40164..4938f17d 100644 --- a/src/components/PageComponents/Messages/Message.tsx +++ b/src/components/PageComponents/Messages/Message.tsx @@ -6,7 +6,7 @@ import type { AllMessageTypes } from "@core/stores/deviceStore.js"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { CheckCircleIcon, - EllipsisHorizontalCircleIcon, + EllipsisHorizontalCircleIcon } from "@heroicons/react/24/outline"; import type { Protobuf } from "@meshtastic/meshtasticjs"; @@ -19,7 +19,7 @@ export interface MessageProps { export const Message = ({ lastMsgSameUser, message, - sender, + sender }: MessageProps): JSX.Element => { const { setPeerInfoOpen, setActivePeer, connection } = useDevice(); @@ -62,7 +62,7 @@ export const Message = ({ {new Date(message.packet.rxTime).toLocaleTimeString(undefined, { hour: "2-digit", - minute: "2-digit", + minute: "2-digit" })} diff --git a/src/components/PageComponents/Messages/MessageInput.tsx b/src/components/PageComponents/Messages/MessageInput.tsx index d3fb8e38..8afa74a3 100644 --- a/src/components/PageComponents/Messages/MessageInput.tsx +++ b/src/components/PageComponents/Messages/MessageInput.tsx @@ -20,21 +20,20 @@ export const MessageInput = ({ channel }: MessageInputProps): JSX.Element => { message: string; }>({ defaultValues: { - message: "", - }, + message: "" + } }); const onSubmit = handleSubmit((data) => { - void connection?.sendText( - data.message, - undefined, - true, - channel.config.index as Types.ChannelNumber, - (id) => { + void connection?.sendText({ + text: data.message, + wantAck: true, + channel: channel.config.index as Types.ChannelNumber, + callback: (id) => { ackMessage(channel.config.index, id); return Promise.resolve(); } - ); + }); }); return ( diff --git a/src/components/PageComponents/Messages/NewLocationMessage.tsx b/src/components/PageComponents/Messages/NewLocationMessage.tsx index 8dd0877d..eb92ce16 100644 --- a/src/components/PageComponents/Messages/NewLocationMessage.tsx +++ b/src/components/PageComponents/Messages/NewLocationMessage.tsx @@ -10,7 +10,7 @@ import { Protobuf } from "@meshtastic/meshtasticjs"; enum LocationType { MGRS, LatLng, - DecimalDegrees, + DecimalDegrees } export const NewLocationMessage = (): JSX.Element => { @@ -31,14 +31,15 @@ export const NewLocationMessage = (): JSX.Element => { + )} + {error && ( +
+ +
+ )} + + {description && ( +

{description}

+ )} + {error &&

{error}

} + + ); +}; diff --git a/src/components/form/InfoWrapper.tsx b/src/components/form/InfoWrapper.tsx new file mode 100644 index 00000000..8abf6445 --- /dev/null +++ b/src/components/form/InfoWrapper.tsx @@ -0,0 +1,39 @@ +import type React from "react"; + +import { ExclamationCircleIcon } from "@heroicons/react/24/outline"; + +export interface InfoWrapperProps { + label?: string; + description?: string; + error?: string; + children: React.ReactNode; +} + +export const InfoWrapper = ({ + label, + description, + error, + children +}: InfoWrapperProps): JSX.Element => { + return ( +
+ {/* Label */} + {label && ( + + )} + {/* */} + {children} + {error && ( +
+ +
+ )} + {description && ( +

{description}

+ )} + {error &&

{error}

} +
+ ); +}; diff --git a/src/components/form/Input.tsx b/src/components/form/Input.tsx index baeaed6b..b8bde809 100644 --- a/src/components/form/Input.tsx +++ b/src/components/form/Input.tsx @@ -3,16 +3,17 @@ import { forwardRef, InputHTMLAttributes } from "react"; import { ExclamationCircleIcon } from "@heroicons/react/24/outline"; -export interface InputProps extends InputHTMLAttributes { - label: string; - description?: string; +import { InfoWrapper, InfoWrapperProps } from "./InfoWrapper.js"; + +export interface InputProps + extends InputHTMLAttributes, + Omit { prefix?: string; suffix?: string; action?: { icon: JSX.Element; action: () => void; }; - error?: string; } export const Input = forwardRef(function Input( @@ -29,10 +30,7 @@ export const Input = forwardRef(function Input( ref ) { return ( -
- {/* Label */} - - {/* */} +
{prefix && ( @@ -70,10 +68,6 @@ export const Input = forwardRef(function Input(
)}
- {description && ( -

{description}

- )} - {error &&

{error}

} - + ); }); diff --git a/src/components/form/Select.tsx b/src/components/form/Select.tsx index 859d8ebc..1ec51d0f 100644 --- a/src/components/form/Select.tsx +++ b/src/components/form/Select.tsx @@ -1,17 +1,16 @@ import type React from "react"; import { forwardRef, SelectHTMLAttributes } from "react"; -export interface SelectProps extends SelectHTMLAttributes { - label: string; - description?: string; +import { InfoWrapper, InfoWrapperProps } from "./InfoWrapper.js"; + +export interface SelectProps + extends SelectHTMLAttributes, + Omit { options?: string[]; - prefix?: string; - suffix?: string; action?: { icon: JSX.Element; action: () => void; }; - error?: string; } export const Select = forwardRef(function Input( @@ -19,30 +18,22 @@ export const Select = forwardRef(function Input( label, description, options, - prefix, - suffix, action, - error, disabled, + error, children, ...rest }: SelectProps, ref ) { return ( -
- +