34 changed files with 903 additions and 803 deletions
@ -2,7 +2,7 @@ lockfileVersion: 5.3 |
|||||
|
|
||||
specifiers: |
specifiers: |
||||
'@headlessui/react': ^1.4.2 |
'@headlessui/react': ^1.4.2 |
||||
'@meshtastic/meshtasticjs': ^0.6.28 |
'@meshtastic/meshtasticjs': ^0.6.29 |
||||
'@reduxjs/toolkit': ^1.6.2 |
'@reduxjs/toolkit': ^1.6.2 |
||||
'@types/react': ^17.0.35 |
'@types/react': ^17.0.35 |
||||
'@types/react-dom': ^17.0.11 |
'@types/react-dom': ^17.0.11 |
||||
@ -18,20 +18,21 @@ specifiers: |
|||||
boring-avatars: ^1.5.8 |
boring-avatars: ^1.5.8 |
||||
eslint: 8.2.0 |
eslint: 8.2.0 |
||||
eslint-config-prettier: ^8.3.0 |
eslint-config-prettier: ^8.3.0 |
||||
|
eslint-import-resolver-alias: ^1.1.2 |
||||
eslint-import-resolver-babel-module: ^5.3.1 |
eslint-import-resolver-babel-module: ^5.3.1 |
||||
eslint-import-resolver-typescript: ^2.5.0 |
eslint-import-resolver-typescript: ^2.5.0 |
||||
eslint-plugin-import: ^2.25.3 |
eslint-plugin-import: ^2.25.3 |
||||
eslint-plugin-react: ^7.27.0 |
eslint-plugin-react: ^7.27.1 |
||||
eslint-plugin-react-hooks: ^4.3.0 |
eslint-plugin-react-hooks: ^4.3.0 |
||||
gzipper: ^6.0.0 |
gzipper: ^6.0.0 |
||||
i18next: ^21.5.1 |
i18next: ^21.5.2 |
||||
i18next-browser-languagedetector: ^6.1.2 |
i18next-browser-languagedetector: ^6.1.2 |
||||
postcss: ^8.3.11 |
postcss: ^8.3.11 |
||||
prettier: ^2.4.1 |
prettier: ^2.4.1 |
||||
react: ^17.0.2 |
react: ^17.0.2 |
||||
react-dom: ^17.0.2 |
react-dom: ^17.0.2 |
||||
react-file-icon: ^1.1.0 |
react-file-icon: ^1.1.0 |
||||
react-hook-form: ^7.19.5 |
react-hook-form: ^7.20.2 |
||||
react-i18next: ^11.14.2 |
react-i18next: ^11.14.2 |
||||
react-icons: ^4.3.1 |
react-icons: ^4.3.1 |
||||
react-json-pretty: ^2.2.0 |
react-json-pretty: ^2.2.0 |
||||
@ -42,24 +43,24 @@ specifiers: |
|||||
tar: ^6.1.11 |
tar: ^6.1.11 |
||||
timeago-react: ^3.0.4 |
timeago-react: ^3.0.4 |
||||
type-route: ^0.6.0 |
type-route: ^0.6.0 |
||||
typescript: ^4.4.4 |
typescript: ^4.5.2 |
||||
use-breakpoint: ^2.0.2 |
use-breakpoint: ^2.0.2 |
||||
vite: ^2.6.14 |
vite: ^2.6.14 |
||||
vite-plugin-pwa: ^0.11.5 |
vite-plugin-pwa: ^0.11.6 |
||||
workbox-window: ^6.4.1 |
workbox-window: ^6.4.1 |
||||
|
|
||||
dependencies: |
dependencies: |
||||
'@headlessui/react': 1.4[email protected][email protected] |
'@headlessui/react': 1.4[email protected][email protected] |
||||
'@meshtastic/meshtasticjs': 0.6.28 |
'@meshtastic/meshtasticjs': 0.6.29 |
||||
'@reduxjs/toolkit': 1.6[email protected][email protected] |
'@reduxjs/toolkit': 1.6[email protected][email protected] |
||||
boring-avatars: 1.5.8 |
boring-avatars: 1.5.8 |
||||
i18next: 21.5.1 |
i18next: 21.5.2 |
||||
i18next-browser-languagedetector: 6.1.2 |
i18next-browser-languagedetector: 6.1.2 |
||||
react: 17.0.2 |
react: 17.0.2 |
||||
react-dom: 17.0[email protected] |
react-dom: 17.0[email protected] |
||||
react-file-icon: 1.1[email protected][email protected] |
react-file-icon: 1.1[email protected][email protected] |
||||
react-hook-form: 7.19.5[email protected] |
react-hook-form: 7.20.2[email protected] |
||||
react-i18next: 11.14[email protected].1[email protected] |
react-i18next: 11.14[email protected].2[email protected] |
||||
react-icons: 4.3[email protected] |
react-icons: 4.3[email protected] |
||||
react-json-pretty: 2.2[email protected][email protected] |
react-json-pretty: 2.2[email protected][email protected] |
||||
react-redux: 7.2[email protected][email protected] |
react-redux: 7.2[email protected][email protected] |
||||
@ -75,38 +76,39 @@ devDependencies: |
|||||
'@types/react-file-icon': 1.0.1 |
'@types/react-file-icon': 1.0.1 |
||||
'@types/w3c-web-serial': 1.0.2 |
'@types/w3c-web-serial': 1.0.2 |
||||
'@types/web-bluetooth': 0.0.11 |
'@types/web-bluetooth': 0.0.11 |
||||
'@typescript-eslint/eslint-plugin': 5.4.0_b983626bd16070d34b18187cb6bde052 |
'@typescript-eslint/eslint-plugin': 5.4.0_d6f2571581882eb2d6c9d9867e002185 |
||||
'@typescript-eslint/parser': 5.4[email protected]+typescript@4.4.4 |
'@typescript-eslint/parser': 5.4[email protected]+typescript@4.5.2 |
||||
'@verypossible/eslint-config': 1.6.1_typescript@4.4.4 |
'@verypossible/eslint-config': 1.6.1_typescript@4.5.2 |
||||
'@vitejs/plugin-react': 1.0.9 |
'@vitejs/plugin-react': 1.0.9 |
||||
autoprefixer: 10.4[email protected] |
autoprefixer: 10.4[email protected] |
||||
babel-plugin-module-resolver: 4.1.0 |
babel-plugin-module-resolver: 4.1.0 |
||||
eslint: 8.2.0 |
eslint: 8.2.0 |
||||
eslint-config-prettier: 8.3[email protected] |
eslint-config-prettier: 8.3[email protected] |
||||
|
eslint-import-resolver-alias: 1.1[email protected] |
||||
eslint-import-resolver-babel-module: 5.3.1_e51044130ac762fd207a8cd2109b5344 |
eslint-import-resolver-babel-module: 5.3.1_e51044130ac762fd207a8cd2109b5344 |
||||
eslint-import-resolver-typescript: 2.5.0_6e04a54c7bcd7530b1a4c2da0aa486b1 |
eslint-import-resolver-typescript: 2.5.0_6e04a54c7bcd7530b1a4c2da0aa486b1 |
||||
eslint-plugin-import: 2.25[email protected] |
eslint-plugin-import: 2.25[email protected] |
||||
eslint-plugin-react: 7.27.0[email protected] |
eslint-plugin-react: 7.27.1[email protected] |
||||
eslint-plugin-react-hooks: 4.3[email protected] |
eslint-plugin-react-hooks: 4.3[email protected] |
||||
gzipper: 6.0.0 |
gzipper: 6.0.0 |
||||
postcss: 8.3.11 |
postcss: 8.3.11 |
||||
prettier: 2.4.1 |
prettier: 2.4.1 |
||||
tailwindcss: 3.0.0-alpha.2_0c54bdadaf9d9c9c6c134cb2c6c061a3 |
tailwindcss: 3.0.0-alpha.2_0c54bdadaf9d9c9c6c134cb2c6c061a3 |
||||
tar: 6.1.11 |
tar: 6.1.11 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
vite: 2.6.14 |
vite: 2.6.14 |
||||
vite-plugin-pwa: 0.11.5[email protected] |
vite-plugin-pwa: 0.11.6[email protected] |
||||
workbox-window: 6.4.1 |
workbox-window: 6.4.1 |
||||
|
|
||||
packages: |
packages: |
||||
|
|
||||
/@apideck/better-ajv-errors/[email protected].0: |
/@apideck/better-ajv-errors/[email protected].1: |
||||
resolution: {integrity: sha512-J2dW+EHYudbwI7MGovcHWLBrxasl21uuroc2zT8bH2RxYuv2g5GqsO5jcKUZz4LaMST45xhKjVuyRYkhcWyMhA==} |
resolution: {integrity: sha512-J2dW+EHYudbwI7MGovcHWLBrxasl21uuroc2zT8bH2RxYuv2g5GqsO5jcKUZz4LaMST45xhKjVuyRYkhcWyMhA==} |
||||
engines: {node: '>=10'} |
engines: {node: '>=10'} |
||||
peerDependencies: |
peerDependencies: |
||||
ajv: '>=8' |
ajv: '>=8' |
||||
dependencies: |
dependencies: |
||||
ajv: 8.8.0 |
ajv: 8.8.1 |
||||
json-schema: 0.3.0 |
json-schema: 0.3.0 |
||||
jsonpointer: 5.0.0 |
jsonpointer: 5.0.0 |
||||
leven: 3.1.0 |
leven: 3.1.0 |
||||
@ -125,8 +127,8 @@ packages: |
|||||
'@babel/highlight': 7.16.0 |
'@babel/highlight': 7.16.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/@babel/compat-data/7.16.0: |
/@babel/compat-data/7.16.4: |
||||
resolution: {integrity: sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==} |
resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} |
||||
engines: {node: '>=6.9.0'} |
engines: {node: '>=6.9.0'} |
||||
dev: true |
dev: true |
||||
|
|
||||
@ -139,7 +141,7 @@ packages: |
|||||
'@babel/helper-compilation-targets': 7.16.3_@[email protected] |
'@babel/helper-compilation-targets': 7.16.3_@[email protected] |
||||
'@babel/helper-module-transforms': 7.16.0 |
'@babel/helper-module-transforms': 7.16.0 |
||||
'@babel/helpers': 7.16.3 |
'@babel/helpers': 7.16.3 |
||||
'@babel/parser': 7.16.3 |
'@babel/parser': 7.16.4 |
||||
'@babel/template': 7.16.0 |
'@babel/template': 7.16.0 |
||||
'@babel/traverse': 7.16.3 |
'@babel/traverse': 7.16.3 |
||||
'@babel/types': 7.16.0 |
'@babel/types': 7.16.0 |
||||
@ -183,7 +185,7 @@ packages: |
|||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.0.0 |
'@babel/core': ^7.0.0 |
||||
dependencies: |
dependencies: |
||||
'@babel/compat-data': 7.16.0 |
'@babel/compat-data': 7.16.4 |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-validator-option': 7.14.5 |
'@babel/helper-validator-option': 7.14.5 |
||||
browserslist: 4.18.1 |
browserslist: 4.18.1 |
||||
@ -218,8 +220,8 @@ packages: |
|||||
regexpu-core: 4.8.0 |
regexpu-core: 4.8.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/@babel/helper-define-polyfill-provider/0.2.4_@[email protected]: |
/@babel/helper-define-polyfill-provider/0.3.0_@[email protected]: |
||||
resolution: {integrity: sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==} |
resolution: {integrity: sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==} |
||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.4.0-0 |
'@babel/core': ^7.4.0-0 |
||||
dependencies: |
dependencies: |
||||
@ -308,8 +310,8 @@ packages: |
|||||
engines: {node: '>=6.9.0'} |
engines: {node: '>=6.9.0'} |
||||
dev: true |
dev: true |
||||
|
|
||||
/@babel/helper-remap-async-to-generator/7.16.0: |
/@babel/helper-remap-async-to-generator/7.16.4: |
||||
resolution: {integrity: sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==} |
resolution: {integrity: sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==} |
||||
engines: {node: '>=6.9.0'} |
engines: {node: '>=6.9.0'} |
||||
dependencies: |
dependencies: |
||||
'@babel/helper-annotate-as-pure': 7.16.0 |
'@babel/helper-annotate-as-pure': 7.16.0 |
||||
@ -394,8 +396,8 @@ packages: |
|||||
js-tokens: 4.0.0 |
js-tokens: 4.0.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/@babel/parser/7.16.3: |
/@babel/parser/7.16.4: |
||||
resolution: {integrity: sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==} |
resolution: {integrity: sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==} |
||||
engines: {node: '>=6.0.0'} |
engines: {node: '>=6.0.0'} |
||||
hasBin: true |
hasBin: true |
||||
dev: true |
dev: true |
||||
@ -422,15 +424,15 @@ packages: |
|||||
'@babel/plugin-proposal-optional-chaining': 7.16.0_@[email protected] |
'@babel/plugin-proposal-optional-chaining': 7.16.0_@[email protected] |
||||
dev: true |
dev: true |
||||
|
|
||||
/@babel/plugin-proposal-async-generator-functions/7.16.0_@[email protected]: |
/@babel/plugin-proposal-async-generator-functions/7.16.4_@[email protected]: |
||||
resolution: {integrity: sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==} |
resolution: {integrity: sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==} |
||||
engines: {node: '>=6.9.0'} |
engines: {node: '>=6.9.0'} |
||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.0.0-0 |
'@babel/core': ^7.0.0-0 |
||||
dependencies: |
dependencies: |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-plugin-utils': 7.14.5 |
'@babel/helper-plugin-utils': 7.14.5 |
||||
'@babel/helper-remap-async-to-generator': 7.16.0 |
'@babel/helper-remap-async-to-generator': 7.16.4 |
||||
'@babel/plugin-syntax-async-generators': 7.8.4_@[email protected] |
'@babel/plugin-syntax-async-generators': 7.8.4_@[email protected] |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
@ -535,7 +537,7 @@ packages: |
|||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.0.0-0 |
'@babel/core': ^7.0.0-0 |
||||
dependencies: |
dependencies: |
||||
'@babel/compat-data': 7.16.0 |
'@babel/compat-data': 7.16.4 |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-compilation-targets': 7.16.3_@[email protected] |
'@babel/helper-compilation-targets': 7.16.3_@[email protected] |
||||
'@babel/helper-plugin-utils': 7.14.5 |
'@babel/helper-plugin-utils': 7.14.5 |
||||
@ -763,7 +765,7 @@ packages: |
|||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-module-imports': 7.16.0 |
'@babel/helper-module-imports': 7.16.0 |
||||
'@babel/helper-plugin-utils': 7.14.5 |
'@babel/helper-plugin-utils': 7.14.5 |
||||
'@babel/helper-remap-async-to-generator': 7.16.0 |
'@babel/helper-remap-async-to-generator': 7.16.4 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
@ -1146,20 +1148,20 @@ packages: |
|||||
'@babel/helper-plugin-utils': 7.14.5 |
'@babel/helper-plugin-utils': 7.14.5 |
||||
dev: true |
dev: true |
||||
|
|
||||
/@babel/preset-env/7.16.0_@[email protected]: |
/@babel/preset-env/7.16.4_@[email protected]: |
||||
resolution: {integrity: sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==} |
resolution: {integrity: sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==} |
||||
engines: {node: '>=6.9.0'} |
engines: {node: '>=6.9.0'} |
||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.0.0-0 |
'@babel/core': ^7.0.0-0 |
||||
dependencies: |
dependencies: |
||||
'@babel/compat-data': 7.16.0 |
'@babel/compat-data': 7.16.4 |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-compilation-targets': 7.16.3_@[email protected] |
'@babel/helper-compilation-targets': 7.16.3_@[email protected] |
||||
'@babel/helper-plugin-utils': 7.14.5 |
'@babel/helper-plugin-utils': 7.14.5 |
||||
'@babel/helper-validator-option': 7.14.5 |
'@babel/helper-validator-option': 7.14.5 |
||||
'@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.2_@[email protected] |
'@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.2_@[email protected] |
||||
'@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.0_@[email protected] |
'@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.0_@[email protected] |
||||
'@babel/plugin-proposal-async-generator-functions': 7.16.0_@[email protected] |
'@babel/plugin-proposal-async-generator-functions': 7.16.4_@[email protected] |
||||
'@babel/plugin-proposal-class-properties': 7.16.0_@[email protected] |
'@babel/plugin-proposal-class-properties': 7.16.0_@[email protected] |
||||
'@babel/plugin-proposal-class-static-block': 7.16.0_@[email protected] |
'@babel/plugin-proposal-class-static-block': 7.16.0_@[email protected] |
||||
'@babel/plugin-proposal-dynamic-import': 7.16.0_@[email protected] |
'@babel/plugin-proposal-dynamic-import': 7.16.0_@[email protected] |
||||
@ -1222,9 +1224,9 @@ packages: |
|||||
'@babel/plugin-transform-unicode-regex': 7.16.0_@[email protected] |
'@babel/plugin-transform-unicode-regex': 7.16.0_@[email protected] |
||||
'@babel/preset-modules': 0.1.5_@[email protected] |
'@babel/preset-modules': 0.1.5_@[email protected] |
||||
'@babel/types': 7.16.0 |
'@babel/types': 7.16.0 |
||||
babel-plugin-polyfill-corejs2: 0.2.3_@[email protected] |
babel-plugin-polyfill-corejs2: 0.3.0_@[email protected] |
||||
babel-plugin-polyfill-corejs3: 0.3.0_@[email protected] |
babel-plugin-polyfill-corejs3: 0.4.0_@[email protected] |
||||
babel-plugin-polyfill-regenerator: 0.2.3_@[email protected] |
babel-plugin-polyfill-regenerator: 0.3.0_@[email protected] |
||||
core-js-compat: 3.19.1 |
core-js-compat: 3.19.1 |
||||
semver: 6.3.0 |
semver: 6.3.0 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
@ -1255,7 +1257,7 @@ packages: |
|||||
engines: {node: '>=6.9.0'} |
engines: {node: '>=6.9.0'} |
||||
dependencies: |
dependencies: |
||||
'@babel/code-frame': 7.16.0 |
'@babel/code-frame': 7.16.0 |
||||
'@babel/parser': 7.16.3 |
'@babel/parser': 7.16.4 |
||||
'@babel/types': 7.16.0 |
'@babel/types': 7.16.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
@ -1268,7 +1270,7 @@ packages: |
|||||
'@babel/helper-function-name': 7.16.0 |
'@babel/helper-function-name': 7.16.0 |
||||
'@babel/helper-hoist-variables': 7.16.0 |
'@babel/helper-hoist-variables': 7.16.0 |
||||
'@babel/helper-split-export-declaration': 7.16.0 |
'@babel/helper-split-export-declaration': 7.16.0 |
||||
'@babel/parser': 7.16.3 |
'@babel/parser': 7.16.4 |
||||
'@babel/types': 7.16.0 |
'@babel/types': 7.16.0 |
||||
debug: 4.3.2 |
debug: 4.3.2 |
||||
globals: 11.12.0 |
globals: 11.12.0 |
||||
@ -1355,8 +1357,8 @@ packages: |
|||||
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} |
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} |
||||
dev: true |
dev: true |
||||
|
|
||||
/@meshtastic/meshtasticjs/0.6.28: |
/@meshtastic/meshtasticjs/0.6.29: |
||||
resolution: {integrity: sha512-yoFzIM+fktvYqgRr/IVA41h4JMEv5GJue/xtxWNhWweEX6fiPoy+MoGeDkwU2dRyNzzZ03RLa6xNXqYxiHRlLA==} |
resolution: {integrity: sha512-XcfHTGlWBLgdfXCK81U/ilDpepyId/OEvXRNiEerg40m9pD7FaNlqPnAKRhvoeOl56VQdKtCpsiWJdeknSI4tw==} |
||||
dependencies: |
dependencies: |
||||
'@protobuf-ts/runtime': 2.0.7 |
'@protobuf-ts/runtime': 2.0.7 |
||||
sub-events: 1.8.9 |
sub-events: 1.8.9 |
||||
@ -1403,7 +1405,7 @@ packages: |
|||||
react-redux: 7.2[email protected][email protected] |
react-redux: 7.2[email protected][email protected] |
||||
redux: 4.1.2 |
redux: 4.1.2 |
||||
redux-thunk: 2.4[email protected] |
redux-thunk: 2.4[email protected] |
||||
reselect: 4.1.3 |
reselect: 4.1.4 |
||||
dev: false |
dev: false |
||||
|
|
||||
/@rollup/plugin-babel/5.3.0_@[email protected][email protected]: |
/@rollup/plugin-babel/5.3.0_@[email protected][email protected]: |
||||
@ -1496,8 +1498,8 @@ packages: |
|||||
resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} |
resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} |
||||
dev: true |
dev: true |
||||
|
|
||||
/@types/node/16.11.7: |
/@types/node/16.11.9: |
||||
resolution: {integrity: sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==} |
resolution: {integrity: sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==} |
||||
dev: true |
dev: true |
||||
|
|
||||
/@types/parse-json/4.0.0: |
/@types/parse-json/4.0.0: |
||||
@ -1538,7 +1540,7 @@ packages: |
|||||
/@types/resolve/1.17.1: |
/@types/resolve/1.17.1: |
||||
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} |
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} |
||||
dependencies: |
dependencies: |
||||
'@types/node': 16.11.7 |
'@types/node': 16.11.9 |
||||
dev: true |
dev: true |
||||
|
|
||||
/@types/scheduler/0.16.2: |
/@types/scheduler/0.16.2: |
||||
@ -1556,7 +1558,7 @@ packages: |
|||||
resolution: {integrity: sha512-2CF3Kk2Rcvg/c2QzO7mXUhY7eL9CC3aKzrF+dNWNmp7Q8bmlvjmUM1nFPMSngawdJ+CcIdu8eJlQRytBgAZR9w==} |
resolution: {integrity: sha512-2CF3Kk2Rcvg/c2QzO7mXUhY7eL9CC3aKzrF+dNWNmp7Q8bmlvjmUM1nFPMSngawdJ+CcIdu8eJlQRytBgAZR9w==} |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/eslint-plugin/4.33.0_cc617358c89d3f38c52462f6d809db4c: |
/@typescript-eslint/eslint-plugin/4.33.0_d00b196ac5df1286ea7e45797bebddbc: |
||||
resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} |
resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} |
||||
engines: {node: ^10.12.0 || >=12.0.0} |
engines: {node: ^10.12.0 || >=12.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1567,8 +1569,8 @@ packages: |
|||||
typescript: |
typescript: |
||||
optional: true |
optional: true |
||||
dependencies: |
dependencies: |
||||
'@typescript-eslint/experimental-utils': 4.33[email protected]+typescript@4.4.4 |
'@typescript-eslint/experimental-utils': 4.33[email protected]+typescript@4.5.2 |
||||
'@typescript-eslint/parser': 4.33[email protected]+typescript@4.4.4 |
'@typescript-eslint/parser': 4.33[email protected]+typescript@4.5.2 |
||||
'@typescript-eslint/scope-manager': 4.33.0 |
'@typescript-eslint/scope-manager': 4.33.0 |
||||
debug: 4.3.2 |
debug: 4.3.2 |
||||
eslint: 7.32.0 |
eslint: 7.32.0 |
||||
@ -1576,13 +1578,13 @@ packages: |
|||||
ignore: 5.1.9 |
ignore: 5.1.9 |
||||
regexpp: 3.2.0 |
regexpp: 3.2.0 |
||||
semver: 7.3.5 |
semver: 7.3.5 |
||||
tsutils: 3.21.0_typescript@4.4.4 |
tsutils: 3.21.0_typescript@4.5.2 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/eslint-plugin/5.4.0_b983626bd16070d34b18187cb6bde052: |
/@typescript-eslint/eslint-plugin/5.4.0_d6f2571581882eb2d6c9d9867e002185: |
||||
resolution: {integrity: sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==} |
resolution: {integrity: sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==} |
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1593,8 +1595,8 @@ packages: |
|||||
typescript: |
typescript: |
||||
optional: true |
optional: true |
||||
dependencies: |
dependencies: |
||||
'@typescript-eslint/experimental-utils': 5.4[email protected]+typescript@4.4.4 |
'@typescript-eslint/experimental-utils': 5.4[email protected]+typescript@4.5.2 |
||||
'@typescript-eslint/parser': 5.4[email protected]+typescript@4.4.4 |
'@typescript-eslint/parser': 5.4[email protected]+typescript@4.5.2 |
||||
'@typescript-eslint/scope-manager': 5.4.0 |
'@typescript-eslint/scope-manager': 5.4.0 |
||||
debug: 4.3.2 |
debug: 4.3.2 |
||||
eslint: 8.2.0 |
eslint: 8.2.0 |
||||
@ -1602,13 +1604,13 @@ packages: |
|||||
ignore: 5.1.9 |
ignore: 5.1.9 |
||||
regexpp: 3.2.0 |
regexpp: 3.2.0 |
||||
semver: 7.3.5 |
semver: 7.3.5 |
||||
tsutils: 3.21.0_typescript@4.4.4 |
tsutils: 3.21.0_typescript@4.5.2 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/experimental-utils/[email protected]+typescript@4.4.4: |
/@typescript-eslint/experimental-utils/[email protected]+typescript@4.5.2: |
||||
resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} |
resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} |
||||
engines: {node: ^10.12.0 || >=12.0.0} |
engines: {node: ^10.12.0 || >=12.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1617,7 +1619,7 @@ packages: |
|||||
'@types/json-schema': 7.0.9 |
'@types/json-schema': 7.0.9 |
||||
'@typescript-eslint/scope-manager': 4.33.0 |
'@typescript-eslint/scope-manager': 4.33.0 |
||||
'@typescript-eslint/types': 4.33.0 |
'@typescript-eslint/types': 4.33.0 |
||||
'@typescript-eslint/typescript-estree': 4.33.0_typescript@4.4.4 |
'@typescript-eslint/typescript-estree': 4.33.0_typescript@4.5.2 |
||||
eslint: 7.32.0 |
eslint: 7.32.0 |
||||
eslint-scope: 5.1.1 |
eslint-scope: 5.1.1 |
||||
eslint-utils: 3.0[email protected] |
eslint-utils: 3.0[email protected] |
||||
@ -1626,7 +1628,7 @@ packages: |
|||||
- typescript |
- typescript |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/experimental-utils/[email protected]+typescript@4.4.4: |
/@typescript-eslint/experimental-utils/[email protected]+typescript@4.5.2: |
||||
resolution: {integrity: sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==} |
resolution: {integrity: sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==} |
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1635,7 +1637,7 @@ packages: |
|||||
'@types/json-schema': 7.0.9 |
'@types/json-schema': 7.0.9 |
||||
'@typescript-eslint/scope-manager': 5.4.0 |
'@typescript-eslint/scope-manager': 5.4.0 |
||||
'@typescript-eslint/types': 5.4.0 |
'@typescript-eslint/types': 5.4.0 |
||||
'@typescript-eslint/typescript-estree': 5.4.0_typescript@4.4.4 |
'@typescript-eslint/typescript-estree': 5.4.0_typescript@4.5.2 |
||||
eslint: 8.2.0 |
eslint: 8.2.0 |
||||
eslint-scope: 5.1.1 |
eslint-scope: 5.1.1 |
||||
eslint-utils: 3.0[email protected] |
eslint-utils: 3.0[email protected] |
||||
@ -1644,7 +1646,7 @@ packages: |
|||||
- typescript |
- typescript |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/parser/[email protected]+typescript@4.4.4: |
/@typescript-eslint/parser/[email protected]+typescript@4.5.2: |
||||
resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} |
resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} |
||||
engines: {node: ^10.12.0 || >=12.0.0} |
engines: {node: ^10.12.0 || >=12.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1656,15 +1658,15 @@ packages: |
|||||
dependencies: |
dependencies: |
||||
'@typescript-eslint/scope-manager': 4.33.0 |
'@typescript-eslint/scope-manager': 4.33.0 |
||||
'@typescript-eslint/types': 4.33.0 |
'@typescript-eslint/types': 4.33.0 |
||||
'@typescript-eslint/typescript-estree': 4.33.0_typescript@4.4.4 |
'@typescript-eslint/typescript-estree': 4.33.0_typescript@4.5.2 |
||||
debug: 4.3.2 |
debug: 4.3.2 |
||||
eslint: 7.32.0 |
eslint: 7.32.0 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/parser/[email protected]+typescript@4.4.4: |
/@typescript-eslint/parser/[email protected]+typescript@4.5.2: |
||||
resolution: {integrity: sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==} |
resolution: {integrity: sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==} |
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1676,10 +1678,10 @@ packages: |
|||||
dependencies: |
dependencies: |
||||
'@typescript-eslint/scope-manager': 5.4.0 |
'@typescript-eslint/scope-manager': 5.4.0 |
||||
'@typescript-eslint/types': 5.4.0 |
'@typescript-eslint/types': 5.4.0 |
||||
'@typescript-eslint/typescript-estree': 5.4.0_typescript@4.4.4 |
'@typescript-eslint/typescript-estree': 5.4.0_typescript@4.5.2 |
||||
debug: 4.3.2 |
debug: 4.3.2 |
||||
eslint: 8.2.0 |
eslint: 8.2.0 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
@ -1710,7 +1712,7 @@ packages: |
|||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/typescript-estree/4.33.0_typescript@4.4.4: |
/@typescript-eslint/typescript-estree/4.33.0_typescript@4.5.2: |
||||
resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} |
resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} |
||||
engines: {node: ^10.12.0 || >=12.0.0} |
engines: {node: ^10.12.0 || >=12.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1725,13 +1727,13 @@ packages: |
|||||
globby: 11.0.4 |
globby: 11.0.4 |
||||
is-glob: 4.0.3 |
is-glob: 4.0.3 |
||||
semver: 7.3.5 |
semver: 7.3.5 |
||||
tsutils: 3.21.0_typescript@4.4.4 |
tsutils: 3.21.0_typescript@4.5.2 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
|
|
||||
/@typescript-eslint/typescript-estree/5.4.0_typescript@4.4.4: |
/@typescript-eslint/typescript-estree/5.4.0_typescript@4.5.2: |
||||
resolution: {integrity: sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==} |
resolution: {integrity: sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==} |
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
||||
peerDependencies: |
peerDependencies: |
||||
@ -1746,8 +1748,8 @@ packages: |
|||||
globby: 11.0.4 |
globby: 11.0.4 |
||||
is-glob: 4.0.3 |
is-glob: 4.0.3 |
||||
semver: 7.3.5 |
semver: 7.3.5 |
||||
tsutils: 3.21.0_typescript@4.4.4 |
tsutils: 3.21.0_typescript@4.5.2 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
@ -1768,18 +1770,18 @@ packages: |
|||||
eslint-visitor-keys: 3.1.0 |
eslint-visitor-keys: 3.1.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/@verypossible/eslint-config/1.6.1_typescript@4.4.4: |
/@verypossible/eslint-config/1.6.1_typescript@4.5.2: |
||||
resolution: {integrity: sha512-3qf2FSag49zqI6rZlwKcF8RryLX0RJ3W+koJuhDhdQNyelSEeTxiijQ+Y/Xss4ILFzyqpBnzqiphmABGcOgj1Q==} |
resolution: {integrity: sha512-3qf2FSag49zqI6rZlwKcF8RryLX0RJ3W+koJuhDhdQNyelSEeTxiijQ+Y/Xss4ILFzyqpBnzqiphmABGcOgj1Q==} |
||||
dependencies: |
dependencies: |
||||
'@typescript-eslint/eslint-plugin': 4.33.0_cc617358c89d3f38c52462f6d809db4c |
'@typescript-eslint/eslint-plugin': 4.33.0_d00b196ac5df1286ea7e45797bebddbc |
||||
'@typescript-eslint/parser': 4.33[email protected]+typescript@4.4.4 |
'@typescript-eslint/parser': 4.33[email protected]+typescript@4.5.2 |
||||
babel-plugin-module-resolver: 4.1.0 |
babel-plugin-module-resolver: 4.1.0 |
||||
eslint: 7.32.0 |
eslint: 7.32.0 |
||||
eslint-config-prettier: 8.3[email protected] |
eslint-config-prettier: 8.3[email protected] |
||||
eslint-import-resolver-babel-module: 5.3.1_e51044130ac762fd207a8cd2109b5344 |
eslint-import-resolver-babel-module: 5.3.1_e51044130ac762fd207a8cd2109b5344 |
||||
eslint-import-resolver-typescript: 2.5.0_a820dc868cc8cd66d8297be6779b9035 |
eslint-import-resolver-typescript: 2.5.0_a820dc868cc8cd66d8297be6779b9035 |
||||
eslint-plugin-import: 2.25[email protected] |
eslint-plugin-import: 2.25[email protected] |
||||
eslint-plugin-react: 7.27.0[email protected] |
eslint-plugin-react: 7.27.1[email protected] |
||||
eslint-plugin-react-hooks: 4.3[email protected] |
eslint-plugin-react-hooks: 4.3[email protected] |
||||
prettier: 2.4.1 |
prettier: 2.4.1 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
@ -1812,12 +1814,12 @@ packages: |
|||||
acorn: 7.4.1 |
acorn: 7.4.1 |
||||
dev: true |
dev: true |
||||
|
|
||||
/acorn-jsx/5.3.2_acorn@8.5.0: |
/acorn-jsx/5.3.2_acorn@8.6.0: |
||||
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} |
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} |
||||
peerDependencies: |
peerDependencies: |
||||
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 |
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 |
||||
dependencies: |
dependencies: |
||||
acorn: 8.5.0 |
acorn: 8.6.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/acorn-node/1.8.2: |
/acorn-node/1.8.2: |
||||
@ -1839,8 +1841,8 @@ packages: |
|||||
hasBin: true |
hasBin: true |
||||
dev: true |
dev: true |
||||
|
|
||||
/acorn/8.5.0: |
/acorn/8.6.0: |
||||
resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} |
resolution: {integrity: sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==} |
||||
engines: {node: '>=0.4.0'} |
engines: {node: '>=0.4.0'} |
||||
hasBin: true |
hasBin: true |
||||
dev: true |
dev: true |
||||
@ -1854,8 +1856,8 @@ packages: |
|||||
uri-js: 4.4.1 |
uri-js: 4.4.1 |
||||
dev: true |
dev: true |
||||
|
|
||||
/ajv/8.8.0: |
/ajv/8.8.1: |
||||
resolution: {integrity: sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==} |
resolution: {integrity: sha512-6CiMNDrzv0ZR916u2T+iRunnD60uWmNn8SkdB44/6stVORUg0aAkWO7PkOhpCmjmW8f2I/G/xnowD66fxGyQJg==} |
||||
dependencies: |
dependencies: |
||||
fast-deep-equal: 3.1.3 |
fast-deep-equal: 3.1.3 |
||||
json-schema-traverse: 1.0.0 |
json-schema-traverse: 1.0.0 |
||||
@ -1965,7 +1967,7 @@ packages: |
|||||
postcss: ^8.1.0 |
postcss: ^8.1.0 |
||||
dependencies: |
dependencies: |
||||
browserslist: 4.18.1 |
browserslist: 4.18.1 |
||||
caniuse-lite: 1.0.30001280 |
caniuse-lite: 1.0.30001282 |
||||
fraction.js: 4.1.2 |
fraction.js: 4.1.2 |
||||
normalize-range: 0.1.2 |
normalize-range: 0.1.2 |
||||
picocolors: 1.0.0 |
picocolors: 1.0.0 |
||||
@ -1991,42 +1993,42 @@ packages: |
|||||
find-babel-config: 1.2.0 |
find-babel-config: 1.2.0 |
||||
glob: 7.2.0 |
glob: 7.2.0 |
||||
pkg-up: 3.1.0 |
pkg-up: 3.1.0 |
||||
reselect: 4.1.3 |
reselect: 4.1.4 |
||||
resolve: 1.20.0 |
resolve: 1.20.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/babel-plugin-polyfill-corejs2/0.2.3_@[email protected]: |
/babel-plugin-polyfill-corejs2/0.3.0_@[email protected]: |
||||
resolution: {integrity: sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==} |
resolution: {integrity: sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==} |
||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.0.0-0 |
'@babel/core': ^7.0.0-0 |
||||
dependencies: |
dependencies: |
||||
'@babel/compat-data': 7.16.0 |
'@babel/compat-data': 7.16.4 |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-define-polyfill-provider': 0.2.4_@[email protected] |
'@babel/helper-define-polyfill-provider': 0.3.0_@[email protected] |
||||
semver: 6.3.0 |
semver: 6.3.0 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
|
|
||||
/babel-plugin-polyfill-corejs3/0.3.0_@[email protected]: |
/babel-plugin-polyfill-corejs3/0.4.0_@[email protected]: |
||||
resolution: {integrity: sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==} |
resolution: {integrity: sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==} |
||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.0.0-0 |
'@babel/core': ^7.0.0-0 |
||||
dependencies: |
dependencies: |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-define-polyfill-provider': 0.2.4_@[email protected] |
'@babel/helper-define-polyfill-provider': 0.3.0_@[email protected] |
||||
core-js-compat: 3.19.1 |
core-js-compat: 3.19.1 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
|
|
||||
/babel-plugin-polyfill-regenerator/0.2.3_@[email protected]: |
/babel-plugin-polyfill-regenerator/0.3.0_@[email protected]: |
||||
resolution: {integrity: sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==} |
resolution: {integrity: sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==} |
||||
peerDependencies: |
peerDependencies: |
||||
'@babel/core': ^7.0.0-0 |
'@babel/core': ^7.0.0-0 |
||||
dependencies: |
dependencies: |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/helper-define-polyfill-provider': 0.2.4_@[email protected] |
'@babel/helper-define-polyfill-provider': 0.3.0_@[email protected] |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
@ -2063,8 +2065,8 @@ packages: |
|||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} |
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} |
||||
hasBin: true |
hasBin: true |
||||
dependencies: |
dependencies: |
||||
caniuse-lite: 1.0.30001280 |
caniuse-lite: 1.0.30001282 |
||||
electron-to-chromium: 1.3.899 |
electron-to-chromium: 1.3.904 |
||||
escalade: 3.1.1 |
escalade: 3.1.1 |
||||
node-releases: 2.0.1 |
node-releases: 2.0.1 |
||||
picocolors: 1.0.0 |
picocolors: 1.0.0 |
||||
@ -2096,8 +2098,8 @@ packages: |
|||||
engines: {node: '>= 6'} |
engines: {node: '>= 6'} |
||||
dev: true |
dev: true |
||||
|
|
||||
/caniuse-lite/1.0.30001280: |
/caniuse-lite/1.0.30001282: |
||||
resolution: {integrity: sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==} |
resolution: {integrity: sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==} |
||||
dev: true |
dev: true |
||||
|
|
||||
/chalk/2.4.2: |
/chalk/2.4.2: |
||||
@ -2167,8 +2169,8 @@ packages: |
|||||
engines: {node: '>= 10'} |
engines: {node: '>= 10'} |
||||
dev: true |
dev: true |
||||
|
|
||||
/common-tags/1.8.1: |
/common-tags/1.8.2: |
||||
resolution: {integrity: sha512-uOZd85rJqrdEIE/JjhW5YAeatX8iqjjvVzIyfx7JL7G5r9Tep6YpYT9gEJWhWpVyDQEyzukWd6p2qULpJ8tmBw==} |
resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} |
||||
engines: {node: '>=4.0.0'} |
engines: {node: '>=4.0.0'} |
||||
dev: true |
dev: true |
||||
|
|
||||
@ -2339,8 +2341,8 @@ packages: |
|||||
jake: 10.8.2 |
jake: 10.8.2 |
||||
dev: true |
dev: true |
||||
|
|
||||
/electron-to-chromium/1.3.899: |
/electron-to-chromium/1.3.904: |
||||
resolution: {integrity: sha512-w16Dtd2zl7VZ4N4Db+FIa7n36sgPGCKjrKvUUmp5ialsikvcQLjcJR9RWnlYNxIyEHLdHaoIZEqKsPxU9MdyBg==} |
resolution: {integrity: sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==} |
||||
dev: true |
dev: true |
||||
|
|
||||
/emoji-regex/8.0.0: |
/emoji-regex/8.0.0: |
||||
@ -2601,6 +2603,15 @@ packages: |
|||||
eslint: 8.2.0 |
eslint: 8.2.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
|
/eslint-import-resolver-alias/[email protected]: |
||||
|
resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} |
||||
|
engines: {node: '>= 4'} |
||||
|
peerDependencies: |
||||
|
eslint-plugin-import: '>=1.4.0' |
||||
|
dependencies: |
||||
|
eslint-plugin-import: 2.25[email protected] |
||||
|
dev: true |
||||
|
|
||||
/eslint-import-resolver-babel-module/5.3.1_e51044130ac762fd207a8cd2109b5344: |
/eslint-import-resolver-babel-module/5.3.1_e51044130ac762fd207a8cd2109b5344: |
||||
resolution: {integrity: sha512-WomQAkjO7lUNOdU3FG2zgNgylkoAVUmaw04bHgSpM9QrMWuOLLWa2qcP6CrsBd4VWuLRbUPyzrgBc9ZQIx9agw==} |
resolution: {integrity: sha512-WomQAkjO7lUNOdU3FG2zgNgylkoAVUmaw04bHgSpM9QrMWuOLLWa2qcP6CrsBd4VWuLRbUPyzrgBc9ZQIx9agw==} |
||||
engines: {node: '>=10.0.0'} |
engines: {node: '>=10.0.0'} |
||||
@ -2633,7 +2644,7 @@ packages: |
|||||
glob: 7.2.0 |
glob: 7.2.0 |
||||
is-glob: 4.0.3 |
is-glob: 4.0.3 |
||||
resolve: 1.20.0 |
resolve: 1.20.0 |
||||
tsconfig-paths: 3.11.0 |
tsconfig-paths: 3.12.0 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
@ -2651,7 +2662,7 @@ packages: |
|||||
glob: 7.2.0 |
glob: 7.2.0 |
||||
is-glob: 4.0.3 |
is-glob: 4.0.3 |
||||
resolve: 1.20.0 |
resolve: 1.20.0 |
||||
tsconfig-paths: 3.11.0 |
tsconfig-paths: 3.12.0 |
||||
transitivePeerDependencies: |
transitivePeerDependencies: |
||||
- supports-color |
- supports-color |
||||
dev: true |
dev: true |
||||
@ -2684,7 +2695,7 @@ packages: |
|||||
minimatch: 3.0.4 |
minimatch: 3.0.4 |
||||
object.values: 1.1.5 |
object.values: 1.1.5 |
||||
resolve: 1.20.0 |
resolve: 1.20.0 |
||||
tsconfig-paths: 3.11.0 |
tsconfig-paths: 3.12.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/eslint-plugin-import/[email protected]: |
/eslint-plugin-import/[email protected]: |
||||
@ -2706,7 +2717,7 @@ packages: |
|||||
minimatch: 3.0.4 |
minimatch: 3.0.4 |
||||
object.values: 1.1.5 |
object.values: 1.1.5 |
||||
resolve: 1.20.0 |
resolve: 1.20.0 |
||||
tsconfig-paths: 3.11.0 |
tsconfig-paths: 3.12.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/eslint-plugin-react-hooks/[email protected]: |
/eslint-plugin-react-hooks/[email protected]: |
||||
@ -2727,8 +2738,8 @@ packages: |
|||||
eslint: 8.2.0 |
eslint: 8.2.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
/eslint-plugin-react/7.27.0[email protected]: |
/eslint-plugin-react/7.27.1[email protected]: |
||||
resolution: {integrity: sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==} |
resolution: {integrity: sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==} |
||||
engines: {node: '>=4'} |
engines: {node: '>=4'} |
||||
peerDependencies: |
peerDependencies: |
||||
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 |
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 |
||||
@ -2750,8 +2761,8 @@ packages: |
|||||
string.prototype.matchall: 4.0.6 |
string.prototype.matchall: 4.0.6 |
||||
dev: true |
dev: true |
||||
|
|
||||
/eslint-plugin-react/7.27.0[email protected]: |
/eslint-plugin-react/7.27.1[email protected]: |
||||
resolution: {integrity: sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==} |
resolution: {integrity: sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==} |
||||
engines: {node: '>=4'} |
engines: {node: '>=4'} |
||||
peerDependencies: |
peerDependencies: |
||||
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 |
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 |
||||
@ -2940,8 +2951,8 @@ packages: |
|||||
resolution: {integrity: sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==} |
resolution: {integrity: sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==} |
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
||||
dependencies: |
dependencies: |
||||
acorn: 8.5.0 |
acorn: 8.6.0 |
||||
acorn-jsx: 5.3.2_acorn@8.5.0 |
acorn-jsx: 5.3.2_acorn@8.6.0 |
||||
eslint-visitor-keys: 3.1.0 |
eslint-visitor-keys: 3.1.0 |
||||
dev: true |
dev: true |
||||
|
|
||||
@ -3260,8 +3271,8 @@ packages: |
|||||
'@babel/runtime': 7.16.3 |
'@babel/runtime': 7.16.3 |
||||
dev: false |
dev: false |
||||
|
|
||||
/i18next/21.5.1: |
/i18next/21.5.2: |
||||
resolution: {integrity: sha512-fmpns1dbYYgyOkiATp1rg5gyXzvBdvM0YQFDCM38BoqybG2Rs3looAv+e24ghFeeozD1fteUtDTZ36SQ0a+ycg==} |
resolution: {integrity: sha512-Iuztr2+7CPCh5SYQV0utw2HXMx1za18xfznrw/PmgX+98oIpm84bhIM7VUPODjLycwIZ299oP7sEVQ9oCgmzfg==} |
||||
dependencies: |
dependencies: |
||||
'@babel/runtime': 7.16.3 |
'@babel/runtime': 7.16.3 |
||||
dev: false |
dev: false |
||||
@ -3516,7 +3527,7 @@ packages: |
|||||
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} |
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} |
||||
engines: {node: '>= 10.13.0'} |
engines: {node: '>= 10.13.0'} |
||||
dependencies: |
dependencies: |
||||
'@types/node': 16.11.7 |
'@types/node': 16.11.9 |
||||
merge-stream: 2.0.0 |
merge-stream: 2.0.0 |
||||
supports-color: 7.2.0 |
supports-color: 7.2.0 |
||||
dev: true |
dev: true |
||||
@ -4091,15 +4102,16 @@ packages: |
|||||
tinycolor2: 1.4.2 |
tinycolor2: 1.4.2 |
||||
dev: false |
dev: false |
||||
|
|
||||
/react-hook-form/[email protected]: |
/react-hook-form/[email protected]: |
||||
resolution: {integrity: sha512-+M9gd0nWWASuEitf5PQGOGNElnHknzY3rGISrPDXwsOmZb7c/jyvkRUqk4OJXaZit1ZwesSv+EysttdAeFEfmw==} |
resolution: {integrity: sha512-J5zkZW0Mf3KuMlk7Tl1tWYXoSjYhfKyEu//NfWTn2xzvv2vnDT5/EE/vHgtNb7kVeYpx6/mHIBd9aOfNnWcOsg==} |
||||
|
engines: {node: '>=12.0'} |
||||
peerDependencies: |
peerDependencies: |
||||
react: ^16.8.0 || ^17 |
react: ^16.8.0 || ^17 |
||||
dependencies: |
dependencies: |
||||
react: 17.0.2 |
react: 17.0.2 |
||||
dev: false |
dev: false |
||||
|
|
||||
/react-i18next/[email protected].1[email protected]: |
/react-i18next/[email protected].2[email protected]: |
||||
resolution: {integrity: sha512-fmDhwNA0zDmSEL3BBT5qwNMvxrKu25oXDDAZyHprfB0AHZmWXfBmRLf8MX8i1iBd2I2C2vsA2D9wxYBIwzooEQ==} |
resolution: {integrity: sha512-fmDhwNA0zDmSEL3BBT5qwNMvxrKu25oXDDAZyHprfB0AHZmWXfBmRLf8MX8i1iBd2I2C2vsA2D9wxYBIwzooEQ==} |
||||
peerDependencies: |
peerDependencies: |
||||
i18next: '>= 19.0.0' |
i18next: '>= 19.0.0' |
||||
@ -4107,7 +4119,7 @@ packages: |
|||||
dependencies: |
dependencies: |
||||
'@babel/runtime': 7.16.3 |
'@babel/runtime': 7.16.3 |
||||
html-parse-stringify: 3.0.1 |
html-parse-stringify: 3.0.1 |
||||
i18next: 21.5.1 |
i18next: 21.5.2 |
||||
react: 17.0.2 |
react: 17.0.2 |
||||
dev: false |
dev: false |
||||
|
|
||||
@ -4254,8 +4266,8 @@ packages: |
|||||
engines: {node: '>=0.10.0'} |
engines: {node: '>=0.10.0'} |
||||
dev: true |
dev: true |
||||
|
|
||||
/reselect/4.1.3: |
/reselect/4.1.4: |
||||
resolution: {integrity: sha512-TVpMknnmdSRNhLPgTDSCQKw32zt1ZIJtEcSxfL/ihtDqShEMUs2X2UY/g96YAVynUXxqLWSXObLGIcqKHQObHw==} |
resolution: {integrity: sha512-i1LgXw8DKSU5qz1EV0ZIKz4yIUHJ7L3bODh+Da6HmVSm9vdL/hG7IpbgzQ3k2XSirzf8/eI7OMEs81gb1VV2fQ==} |
||||
|
|
||||
/resolve-from/4.0.0: |
/resolve-from/4.0.0: |
||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} |
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} |
||||
@ -4403,8 +4415,8 @@ packages: |
|||||
engines: {node: '>=0.10.0'} |
engines: {node: '>=0.10.0'} |
||||
dev: true |
dev: true |
||||
|
|
||||
/source-map-support/0.5.20: |
/source-map-support/0.5.21: |
||||
resolution: {integrity: sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==} |
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} |
||||
dependencies: |
dependencies: |
||||
buffer-from: 1.1.2 |
buffer-from: 1.1.2 |
||||
source-map: 0.6.1 |
source-map: 0.6.1 |
||||
@ -4543,7 +4555,7 @@ packages: |
|||||
resolution: {integrity: sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==} |
resolution: {integrity: sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==} |
||||
engines: {node: '>=10.0.0'} |
engines: {node: '>=10.0.0'} |
||||
dependencies: |
dependencies: |
||||
ajv: 8.8.0 |
ajv: 8.8.1 |
||||
lodash.truncate: 4.4.2 |
lodash.truncate: 4.4.2 |
||||
slice-ansi: 4.0.0 |
slice-ansi: 4.0.0 |
||||
string-width: 4.2.3 |
string-width: 4.2.3 |
||||
@ -4624,7 +4636,7 @@ packages: |
|||||
dependencies: |
dependencies: |
||||
commander: 2.20.3 |
commander: 2.20.3 |
||||
source-map: 0.7.3 |
source-map: 0.7.3 |
||||
source-map-support: 0.5.20 |
source-map-support: 0.5.21 |
||||
dev: true |
dev: true |
||||
|
|
||||
/text-table/0.2.0: |
/text-table/0.2.0: |
||||
@ -4673,8 +4685,8 @@ packages: |
|||||
punycode: 2.1.1 |
punycode: 2.1.1 |
||||
dev: true |
dev: true |
||||
|
|
||||
/tsconfig-paths/3.11.0: |
/tsconfig-paths/3.12.0: |
||||
resolution: {integrity: sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==} |
resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} |
||||
dependencies: |
dependencies: |
||||
'@types/json5': 0.0.29 |
'@types/json5': 0.0.29 |
||||
json5: 1.0.1 |
json5: 1.0.1 |
||||
@ -4686,14 +4698,14 @@ packages: |
|||||
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} |
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} |
||||
dev: true |
dev: true |
||||
|
|
||||
/tsutils/3.21.0_typescript@4.4.4: |
/tsutils/3.21.0_typescript@4.5.2: |
||||
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} |
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} |
||||
engines: {node: '>= 6'} |
engines: {node: '>= 6'} |
||||
peerDependencies: |
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' |
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: |
dependencies: |
||||
tslib: 1.14.1 |
tslib: 1.14.1 |
||||
typescript: 4.4.4 |
typescript: 4.5.2 |
||||
dev: true |
dev: true |
||||
|
|
||||
/type-check/0.4.0: |
/type-check/0.4.0: |
||||
@ -4719,8 +4731,8 @@ packages: |
|||||
history: 5.1.0 |
history: 5.1.0 |
||||
dev: false |
dev: false |
||||
|
|
||||
/typescript/4.4.4: |
/typescript/4.5.2: |
||||
resolution: {integrity: sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==} |
resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==} |
||||
engines: {node: '>=4.2.0'} |
engines: {node: '>=4.2.0'} |
||||
hasBin: true |
hasBin: true |
||||
dev: true |
dev: true |
||||
@ -4803,8 +4815,8 @@ packages: |
|||||
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} |
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} |
||||
dev: true |
dev: true |
||||
|
|
||||
/vite-plugin-pwa/0.11.5[email protected]: |
/vite-plugin-pwa/0.11.6[email protected]: |
||||
resolution: {integrity: sha512-qn79L7008ZMn9GS0ClxypOBRA3Ft8/a8saIQ03SC2R1QndbZVW+YQVHTlFno33Wp6fu5UJacoHWuZYCuKZKaOA==} |
resolution: {integrity: sha512-C95xVO8csEedN29aHszKjRSb/P7Odd6+tCP3LfjqQQkNRkZPieT6y8mS5MlEbs9V+8D+z4THD6ksYB5mzLTzPg==} |
||||
peerDependencies: |
peerDependencies: |
||||
vite: ^2.0.0 |
vite: ^2.0.0 |
||||
dependencies: |
dependencies: |
||||
@ -4924,16 +4936,16 @@ packages: |
|||||
resolution: {integrity: sha512-cvH74tEO8SrziFrCntZ/35B0uaMZFKG+gnk3vZmKLSUTab/6MlhL+UwYXf1sMV5SD/W/v7pnFKZbdAOAg5Ne2w==} |
resolution: {integrity: sha512-cvH74tEO8SrziFrCntZ/35B0uaMZFKG+gnk3vZmKLSUTab/6MlhL+UwYXf1sMV5SD/W/v7pnFKZbdAOAg5Ne2w==} |
||||
engines: {node: '>=10.0.0'} |
engines: {node: '>=10.0.0'} |
||||
dependencies: |
dependencies: |
||||
'@apideck/better-ajv-errors': 0.2[email protected].0 |
'@apideck/better-ajv-errors': 0.2[email protected].1 |
||||
'@babel/core': 7.16.0 |
'@babel/core': 7.16.0 |
||||
'@babel/preset-env': 7.16.0_@[email protected] |
'@babel/preset-env': 7.16.4_@[email protected] |
||||
'@babel/runtime': 7.16.3 |
'@babel/runtime': 7.16.3 |
||||
'@rollup/plugin-babel': 5.3.0_@[email protected][email protected] |
'@rollup/plugin-babel': 5.3.0_@[email protected][email protected] |
||||
'@rollup/plugin-node-resolve': 11.2[email protected] |
'@rollup/plugin-node-resolve': 11.2[email protected] |
||||
'@rollup/plugin-replace': 2.4[email protected] |
'@rollup/plugin-replace': 2.4[email protected] |
||||
'@surma/rollup-plugin-off-main-thread': 2.2.3 |
'@surma/rollup-plugin-off-main-thread': 2.2.3 |
||||
ajv: 8.8.0 |
ajv: 8.8.1 |
||||
common-tags: 1.8.1 |
common-tags: 1.8.2 |
||||
fast-json-stable-stringify: 2.1.0 |
fast-json-stable-stringify: 2.1.0 |
||||
fs-extra: 9.1.0 |
fs-extra: 9.1.0 |
||||
glob: 7.2.0 |
glob: 7.2.0 |
||||
|
|||||
@ -0,0 +1,269 @@ |
|||||
|
import React from 'react'; |
||||
|
|
||||
|
import { FiCheck } from 'react-icons/fi'; |
||||
|
import JSONPretty from 'react-json-pretty'; |
||||
|
|
||||
|
import { useAppDispatch, useAppSelector } from '@app/hooks/redux'; |
||||
|
import { Button } from '@components/generic/Button'; |
||||
|
import { Card } from '@components/generic/Card'; |
||||
|
import { Checkbox } from '@components/generic/form/Checkbox'; |
||||
|
import { Input } from '@components/generic/form/Input'; |
||||
|
import { Select } from '@components/generic/form/Select'; |
||||
|
import { IconButton } from '@components/generic/IconButton'; |
||||
|
import { Modal } from '@components/generic/Modal'; |
||||
|
import { |
||||
|
ble, |
||||
|
connection, |
||||
|
connectionUrl, |
||||
|
serial, |
||||
|
setConnection, |
||||
|
} from '@core/connection'; |
||||
|
import { closeConnectionModal } from '@core/slices/appSlice'; |
||||
|
import { |
||||
|
IBLEConnection, |
||||
|
IHTTPConnection, |
||||
|
ISerialConnection, |
||||
|
Protobuf, |
||||
|
SettingsManager, |
||||
|
} from '@meshtastic/meshtasticjs'; |
||||
|
import type { |
||||
|
BLEConnectionParameters, |
||||
|
HTTPConnectionParameters, |
||||
|
SerialConnectionParameters, |
||||
|
} from '@meshtastic/meshtasticjs/dist/types'; |
||||
|
|
||||
|
import { DeviceStatus } from './menu/buttons/DeviceStatus'; |
||||
|
|
||||
|
enum connType { |
||||
|
HTTP, |
||||
|
BLE, |
||||
|
SERIAL, |
||||
|
} |
||||
|
|
||||
|
export const Connection = (): JSX.Element => { |
||||
|
const dispatch = useAppDispatch(); |
||||
|
const [selectedConnType, setSelectedConnType] = React.useState(connType.HTTP); |
||||
|
const [bleDevices, setBleDevices] = React.useState<BluetoothDevice[]>([]); |
||||
|
const [serialDevices, setSerialDevices] = React.useState<SerialPort[]>([]); |
||||
|
const [httpIpSource, setHttpIpSource] = React.useState<'local' | 'remote'>( |
||||
|
'local', |
||||
|
); |
||||
|
const hostOverrideEnabled = useAppSelector( |
||||
|
(state) => state.meshtastic.hostOverrideEnabled, |
||||
|
); |
||||
|
const hostOverride = useAppSelector((state) => state.meshtastic.hostOverride); |
||||
|
const connectionModalOpen = useAppSelector( |
||||
|
(state) => state.app.connectionModalOpen, |
||||
|
); |
||||
|
const ready = useAppSelector((state) => state.meshtastic.ready); |
||||
|
const connect = async ( |
||||
|
connectionType: connType, |
||||
|
params: |
||||
|
| HTTPConnectionParameters |
||||
|
| SerialConnectionParameters |
||||
|
| BLEConnectionParameters, |
||||
|
): Promise<void> => { |
||||
|
connection.complete(); |
||||
|
await connection.disconnect(); |
||||
|
|
||||
|
if (connectionType === connType.BLE) { |
||||
|
setConnection(new IBLEConnection()); |
||||
|
} else if (connectionType === connType.HTTP) { |
||||
|
setConnection(new IHTTPConnection()); |
||||
|
} else { |
||||
|
setConnection(new ISerialConnection()); |
||||
|
} |
||||
|
|
||||
|
// @ts-ignore tmp
|
||||
|
await connection.connect(params); |
||||
|
}; |
||||
|
|
||||
|
const updateBleDeviceList = React.useCallback(async (): Promise<void> => { |
||||
|
const devices = await ble.getDevices(); |
||||
|
setBleDevices(devices); |
||||
|
}, []); |
||||
|
|
||||
|
const updateSerialDeviceList = React.useCallback(async (): Promise<void> => { |
||||
|
const devices = await serial.getPorts(); |
||||
|
setSerialDevices(devices); |
||||
|
}, []); |
||||
|
|
||||
|
React.useEffect(() => { |
||||
|
if (ready) { |
||||
|
dispatch(closeConnectionModal()); |
||||
|
} |
||||
|
}, [ready, dispatch]); |
||||
|
|
||||
|
React.useEffect(() => { |
||||
|
if (selectedConnType === connType.BLE) { |
||||
|
void updateBleDeviceList(); |
||||
|
} |
||||
|
if (selectedConnType === connType.SERIAL) { |
||||
|
void updateSerialDeviceList(); |
||||
|
} |
||||
|
}, [selectedConnType, updateBleDeviceList, updateSerialDeviceList]); |
||||
|
|
||||
|
React.useEffect(() => { |
||||
|
const connectionMethod = localStorage.getItem('connectionMethod'); |
||||
|
|
||||
|
switch (connectionMethod) { |
||||
|
case 'serial': |
||||
|
setConnection(new ISerialConnection()); |
||||
|
//show connection dialogue
|
||||
|
break; |
||||
|
case 'bluetooth': |
||||
|
setConnection(new IBLEConnection()); |
||||
|
//show connection dialogue
|
||||
|
break; |
||||
|
default: |
||||
|
setConnection(new IHTTPConnection()); |
||||
|
void connection.connect({ |
||||
|
address: connectionUrl, |
||||
|
tls: false, |
||||
|
receiveBatchRequests: false, |
||||
|
fetchInterval: 2000, |
||||
|
}); |
||||
|
break; |
||||
|
} |
||||
|
SettingsManager.debugMode = Protobuf.LogRecord_Level.TRACE; |
||||
|
}, [hostOverrideEnabled, hostOverride]); |
||||
|
|
||||
|
return ( |
||||
|
<Modal |
||||
|
open={connectionModalOpen} |
||||
|
onClose={(): void => { |
||||
|
dispatch(closeConnectionModal()); |
||||
|
}} |
||||
|
> |
||||
|
<Card> |
||||
|
<div className="w-full max-w-3xl p-10 md:max-w-xl"> |
||||
|
{ready ? ( |
||||
|
<form className="space-y-2"> |
||||
|
<Select |
||||
|
label="Method" |
||||
|
optionsEnum={connType} |
||||
|
value={selectedConnType} |
||||
|
onChange={(e): void => { |
||||
|
setSelectedConnType(parseInt(e.target.value)); |
||||
|
}} |
||||
|
/> |
||||
|
{selectedConnType === connType.HTTP && ( |
||||
|
<> |
||||
|
<Select |
||||
|
label="Host Source" |
||||
|
options={[ |
||||
|
{ |
||||
|
name: 'Local', |
||||
|
value: 'local', |
||||
|
}, |
||||
|
{ |
||||
|
name: 'Remote', |
||||
|
value: 'remote', |
||||
|
}, |
||||
|
]} |
||||
|
value={httpIpSource} |
||||
|
onChange={(e): void => { |
||||
|
setHttpIpSource(e.target.value as 'local' | 'remote'); |
||||
|
}} |
||||
|
/> |
||||
|
{httpIpSource === 'local' ? ( |
||||
|
<Input label="Host" value={connectionUrl} disabled /> |
||||
|
) : ( |
||||
|
<Input label="Host" /> |
||||
|
)} |
||||
|
<Checkbox label="Use TLS?" /> |
||||
|
</> |
||||
|
)} |
||||
|
{selectedConnType === connType.BLE && ( |
||||
|
<div> |
||||
|
<div className="flex space-x-2"> |
||||
|
<Button border onClick={updateBleDeviceList}> |
||||
|
Refresh List |
||||
|
</Button> |
||||
|
<Button |
||||
|
border |
||||
|
onClick={async (): Promise<void> => { |
||||
|
await ble.getDevice(); |
||||
|
}} |
||||
|
> |
||||
|
New Device |
||||
|
</Button> |
||||
|
</div> |
||||
|
<div className="space-y-2"> |
||||
|
<div>Previously connected devices</div> |
||||
|
{bleDevices.map((device, index) => ( |
||||
|
<div |
||||
|
onClick={async (): Promise<void> => { |
||||
|
await connect(connType.BLE, { |
||||
|
device: device, |
||||
|
}); |
||||
|
}} |
||||
|
className="flex justify-between p-2 bg-gray-700 rounded-md" |
||||
|
key={index} |
||||
|
> |
||||
|
<div className="my-auto">{device.name}</div> |
||||
|
<IconButton |
||||
|
onClick={async (): Promise<void> => { |
||||
|
await connect(connType.BLE, { |
||||
|
device: device, |
||||
|
}); |
||||
|
}} |
||||
|
icon={<FiCheck />} |
||||
|
/> |
||||
|
</div> |
||||
|
))} |
||||
|
</div> |
||||
|
</div> |
||||
|
)} |
||||
|
{selectedConnType === connType.SERIAL && ( |
||||
|
<div> |
||||
|
<div className="flex space-x-2"> |
||||
|
<Button border onClick={updateSerialDeviceList}> |
||||
|
Refresh List |
||||
|
</Button> |
||||
|
<Button |
||||
|
border |
||||
|
onClick={async (): Promise<void> => { |
||||
|
console.log(await serial.getPort()); |
||||
|
}} |
||||
|
> |
||||
|
New Device |
||||
|
</Button> |
||||
|
</div> |
||||
|
<div className="space-y-2"> |
||||
|
<div>Previously connected devices</div> |
||||
|
{serialDevices.map((device, index) => ( |
||||
|
<div |
||||
|
className="flex justify-between p-2 bg-gray-700 rounded-md" |
||||
|
key={index} |
||||
|
> |
||||
|
<div className="my-auto"> |
||||
|
{device.getInfo().usbProductId} |
||||
|
{device.getInfo().usbVendorId} |
||||
|
</div> |
||||
|
<IconButton |
||||
|
onClick={async (): Promise<void> => { |
||||
|
await connect(connType.SERIAL, { |
||||
|
// @ts-ignore tmp
|
||||
|
device: device, |
||||
|
}); |
||||
|
}} |
||||
|
icon={<FiCheck />} |
||||
|
/> |
||||
|
<JSONPretty data={device.getInfo()} /> |
||||
|
</div> |
||||
|
))} |
||||
|
</div> |
||||
|
</div> |
||||
|
)} |
||||
|
</form> |
||||
|
) : ( |
||||
|
<div> |
||||
|
<DeviceStatus /> |
||||
|
</div> |
||||
|
)} |
||||
|
</div> |
||||
|
</Card> |
||||
|
</Modal> |
||||
|
); |
||||
|
}; |
||||
@ -0,0 +1,37 @@ |
|||||
|
import type React from 'react'; |
||||
|
|
||||
|
import { useAppSelector } from '@app/hooks/redux'; |
||||
|
import { Dialog } from '@headlessui/react'; |
||||
|
|
||||
|
export interface ModalProps { |
||||
|
children: React.ReactNode; |
||||
|
open: boolean; |
||||
|
onClose: () => void; |
||||
|
} |
||||
|
|
||||
|
export const Modal = ({ children, open, onClose }: ModalProps): JSX.Element => { |
||||
|
const darkMode = useAppSelector((state) => state.app.darkMode); |
||||
|
return ( |
||||
|
<> |
||||
|
<Dialog |
||||
|
as="div" |
||||
|
className={`fixed inset-0 z-30 ${darkMode ? 'dark' : ''}`} |
||||
|
open={open} |
||||
|
onClose={onClose} |
||||
|
> |
||||
|
<Dialog.Overlay className="fixed w-full h-full backdrop-filter backdrop-blur-sm" /> |
||||
|
<div className="text-center "> |
||||
|
<span |
||||
|
className="inline-block h-screen align-middle " |
||||
|
aria-hidden="true" |
||||
|
> |
||||
|
​ |
||||
|
</span> |
||||
|
<div className="inline-block w-full max-w-3xl align-middle"> |
||||
|
{children} |
||||
|
</div> |
||||
|
</div> |
||||
|
</Dialog> |
||||
|
</> |
||||
|
); |
||||
|
}; |
||||
@ -1,16 +1,119 @@ |
|||||
|
import { |
||||
|
addChannel, |
||||
|
addMessage, |
||||
|
addNode, |
||||
|
addPosition, |
||||
|
addUser, |
||||
|
setDeviceStatus, |
||||
|
setLastMeshInterraction, |
||||
|
setMyNodeInfo, |
||||
|
setPreferences, |
||||
|
setReady, |
||||
|
} from '@core/slices/meshtasticSlice'; |
||||
|
import { store } from '@core/store'; |
||||
import { |
import { |
||||
IBLEConnection, |
IBLEConnection, |
||||
IHTTPConnection, |
IHTTPConnection, |
||||
ISerialConnection, |
ISerialConnection, |
||||
|
Protobuf, |
||||
|
Types, |
||||
} from '@meshtastic/meshtasticjs'; |
} from '@meshtastic/meshtasticjs'; |
||||
|
|
||||
type connectionType = IBLEConnection | IHTTPConnection | ISerialConnection; |
type connectionType = IBLEConnection | IHTTPConnection | ISerialConnection; |
||||
|
|
||||
export let connection: connectionType = new IHTTPConnection(); |
export let connection: connectionType = new IHTTPConnection(); |
||||
|
|
||||
|
const state = store.getState().meshtastic; |
||||
|
export const connectionUrl = state.hostOverrideEnabled |
||||
|
? state.hostOverride |
||||
|
: import.meta.env.PROD |
||||
|
? window.location.hostname |
||||
|
: (import.meta.env.VITE_PUBLIC_DEVICE_IP as string) ?? |
||||
|
'http://meshtastic.local'; |
||||
|
|
||||
export const ble = new IBLEConnection(); |
export const ble = new IBLEConnection(); |
||||
export const serial = new ISerialConnection(); |
export const serial = new ISerialConnection(); |
||||
|
|
||||
export const setConnection = (conn: connectionType): void => { |
export const setConnection = (conn: connectionType): void => { |
||||
|
cleanupListeners(); |
||||
connection = conn; |
connection = conn; |
||||
|
|
||||
|
registerListeners(); |
||||
|
}; |
||||
|
|
||||
|
const cleanupListeners = (): void => { |
||||
|
connection.onDeviceStatus.cancelAll(); |
||||
|
connection.onMyNodeInfo.cancelAll(); |
||||
|
connection.onUserPacket.cancelAll(); |
||||
|
connection.onPositionPacket.cancelAll(); |
||||
|
connection.onNodeInfoPacket.cancelAll(); |
||||
|
connection.onAdminPacket.cancelAll(); |
||||
|
connection.onMeshHeartbeat.cancelAll(); |
||||
|
connection.onTextPacket.cancelAll(); |
||||
|
}; |
||||
|
|
||||
|
const registerListeners = (): void => { |
||||
|
connection.onDeviceStatus.subscribe((status) => { |
||||
|
store.dispatch(setDeviceStatus(status)); |
||||
|
|
||||
|
if (status === Types.DeviceStatusEnum.DEVICE_CONFIGURED) { |
||||
|
store.dispatch(setReady(true)); |
||||
|
} |
||||
|
if (status === Types.DeviceStatusEnum.DEVICE_DISCONNECTED) { |
||||
|
store.dispatch(setReady(false)); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
connection.onMyNodeInfo.subscribe((nodeInfo) => { |
||||
|
store.dispatch(setMyNodeInfo(nodeInfo)); |
||||
|
}); |
||||
|
|
||||
|
connection.onUserPacket.subscribe((user) => { |
||||
|
store.dispatch(addUser(user)); |
||||
|
}); |
||||
|
|
||||
|
connection.onPositionPacket.subscribe((position) => { |
||||
|
store.dispatch(addPosition(position)); |
||||
|
}); |
||||
|
|
||||
|
connection.onNodeInfoPacket.subscribe( |
||||
|
(nodeInfoPacket): void | { payload: Protobuf.NodeInfo; type: string } => { |
||||
|
store.dispatch(addNode(nodeInfoPacket.data)); |
||||
|
}, |
||||
|
); |
||||
|
|
||||
|
connection.onAdminPacket.subscribe((adminPacket) => { |
||||
|
switch (adminPacket.data.variant.oneofKind) { |
||||
|
case 'getChannelResponse': |
||||
|
store.dispatch(addChannel(adminPacket.data.variant.getChannelResponse)); |
||||
|
break; |
||||
|
case 'getRadioResponse': |
||||
|
if (adminPacket.data.variant.getRadioResponse.preferences) { |
||||
|
store.dispatch( |
||||
|
setPreferences( |
||||
|
adminPacket.data.variant.getRadioResponse.preferences, |
||||
|
), |
||||
|
); |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
connection.onMeshHeartbeat.subscribe( |
||||
|
(date): void | { payload: number; type: string } => |
||||
|
store.dispatch(setLastMeshInterraction(date.getTime())), |
||||
|
); |
||||
|
|
||||
|
connection.onTextPacket.subscribe((message) => { |
||||
|
const myNodeNum = store.getState().meshtastic.radio.hardware.myNodeNum; |
||||
|
|
||||
|
store.dispatch( |
||||
|
addMessage({ |
||||
|
message: message, |
||||
|
ack: message.packet.from !== myNodeNum, |
||||
|
isSender: message.packet.from === myNodeNum, |
||||
|
received: new Date(message.packet.rxTime), |
||||
|
}), |
||||
|
); |
||||
|
}); |
||||
}; |
}; |
||||
|
|||||
@ -1,271 +0,0 @@ |
|||||
import React from 'react'; |
|
||||
|
|
||||
import { useForm } from 'react-hook-form'; |
|
||||
import { FiCheck, FiMenu } from 'react-icons/fi'; |
|
||||
import JSONPretty from 'react-json-pretty'; |
|
||||
|
|
||||
import { FormFooter } from '@app/components/FormFooter'; |
|
||||
import { ble, connection, serial, setConnection } from '@app/core/connection'; |
|
||||
import { useAppSelector } from '@app/hooks/redux'; |
|
||||
import { Button } from '@components/generic/Button'; |
|
||||
import { Card } from '@components/generic/Card'; |
|
||||
import { Checkbox } from '@components/generic/form/Checkbox'; |
|
||||
import { Input } from '@components/generic/form/Input'; |
|
||||
import { Select } from '@components/generic/form/Select'; |
|
||||
import { IconButton } from '@components/generic/IconButton'; |
|
||||
import { PrimaryTemplate } from '@components/templates/PrimaryTemplate'; |
|
||||
import { |
|
||||
IBLEConnection, |
|
||||
IHTTPConnection, |
|
||||
ISerialConnection, |
|
||||
} from '@meshtastic/meshtasticjs'; |
|
||||
import type { |
|
||||
BLEConnectionParameters, |
|
||||
HTTPConnectionParameters, |
|
||||
SerialConnectionParameters, |
|
||||
} from '@meshtastic/meshtasticjs/dist/types'; |
|
||||
|
|
||||
export interface ConnectionProps { |
|
||||
navOpen?: boolean; |
|
||||
setNavOpen?: React.Dispatch<React.SetStateAction<boolean>>; |
|
||||
} |
|
||||
|
|
||||
enum connType { |
|
||||
HTTP, |
|
||||
BLE, |
|
||||
SERIAL, |
|
||||
} |
|
||||
|
|
||||
export const Connection = ({ |
|
||||
navOpen, |
|
||||
setNavOpen, |
|
||||
}: ConnectionProps): JSX.Element => { |
|
||||
const [selectedConnType, setSelectedConnType] = React.useState(connType.HTTP); |
|
||||
const [bleDevices, setBleDevices] = React.useState<BluetoothDevice[]>([]); |
|
||||
const [serialDevices, setSerialDevices] = React.useState<SerialPort[]>([]); |
|
||||
const [httpIpSource, setHttpIpSource] = React.useState<'local' | 'remote'>( |
|
||||
'local', |
|
||||
); |
|
||||
const hostOverrideEnabled = useAppSelector( |
|
||||
(state) => state.meshtastic.hostOverrideEnabled, |
|
||||
); |
|
||||
const hostOverride = useAppSelector((state) => state.meshtastic.hostOverride); |
|
||||
|
|
||||
const { formState, reset } = useForm<{ |
|
||||
method: connType; |
|
||||
}>({ |
|
||||
defaultValues: { |
|
||||
method: connType.HTTP, |
|
||||
}, |
|
||||
}); |
|
||||
|
|
||||
const connect = async ( |
|
||||
connectionType: connType, |
|
||||
params: |
|
||||
| HTTPConnectionParameters |
|
||||
| SerialConnectionParameters |
|
||||
| BLEConnectionParameters, |
|
||||
): Promise<void> => { |
|
||||
connection.complete(); |
|
||||
connection.disconnect(); |
|
||||
|
|
||||
if (connectionType === connType.BLE) { |
|
||||
setConnection(new IBLEConnection()); |
|
||||
} else if (connectionType === connType.HTTP) { |
|
||||
setConnection(new IHTTPConnection()); |
|
||||
} else { |
|
||||
setConnection(new ISerialConnection()); |
|
||||
} |
|
||||
|
|
||||
// @ts-ignore tmp
|
|
||||
await connection.connect(params); |
|
||||
}; |
|
||||
|
|
||||
const updateBleDeviceList = React.useCallback(async (): Promise<void> => { |
|
||||
const devices = await ble.getDevices(); |
|
||||
setBleDevices(devices); |
|
||||
}, []); |
|
||||
|
|
||||
const updateSerialDeviceList = React.useCallback(async (): Promise<void> => { |
|
||||
const devices = await serial.getPorts(); |
|
||||
console.log(devices); |
|
||||
|
|
||||
setSerialDevices(devices); |
|
||||
}, []); |
|
||||
|
|
||||
React.useEffect(() => { |
|
||||
if (selectedConnType === connType.BLE) { |
|
||||
void updateBleDeviceList(); |
|
||||
} |
|
||||
if (selectedConnType === connType.SERIAL) { |
|
||||
void updateSerialDeviceList(); |
|
||||
} |
|
||||
}, [selectedConnType, updateBleDeviceList, updateSerialDeviceList]); |
|
||||
|
|
||||
const connectionURL: string = hostOverrideEnabled |
|
||||
? hostOverride |
|
||||
: import.meta.env.PROD |
|
||||
? window.location.hostname |
|
||||
: (import.meta.env.VITE_PUBLIC_DEVICE_IP as string) ?? |
|
||||
'http://meshtastic.local'; |
|
||||
|
|
||||
return ( |
|
||||
<PrimaryTemplate |
|
||||
title="Connection" |
|
||||
tagline="Settings" |
|
||||
leftButton={ |
|
||||
<IconButton |
|
||||
icon={<FiMenu className="w-5 h-5" />} |
|
||||
onClick={(): void => { |
|
||||
setNavOpen && setNavOpen(!navOpen); |
|
||||
}} |
|
||||
/> |
|
||||
} |
|
||||
footer={ |
|
||||
<FormFooter |
|
||||
dirty={formState.isDirty} |
|
||||
saveAction={(): void => { |
|
||||
return; |
|
||||
}} |
|
||||
clearAction={reset} |
|
||||
/> |
|
||||
} |
|
||||
> |
|
||||
<Card> |
|
||||
<div className="w-full max-w-3xl p-10 md:max-w-xl"> |
|
||||
<form className="space-y-2"> |
|
||||
<Select |
|
||||
label="Method" |
|
||||
optionsEnum={connType} |
|
||||
value={selectedConnType} |
|
||||
onChange={(e): void => { |
|
||||
setSelectedConnType(parseInt(e.target.value)); |
|
||||
}} |
|
||||
/> |
|
||||
{selectedConnType === connType.HTTP && ( |
|
||||
<> |
|
||||
<Select |
|
||||
label="Host Source" |
|
||||
options={[ |
|
||||
{ |
|
||||
name: 'Local', |
|
||||
value: 'local', |
|
||||
}, |
|
||||
{ |
|
||||
name: 'Remote', |
|
||||
value: 'remote', |
|
||||
}, |
|
||||
]} |
|
||||
value={httpIpSource} |
|
||||
onChange={(e): void => { |
|
||||
setHttpIpSource(e.target.value as 'local' | 'remote'); |
|
||||
}} |
|
||||
/> |
|
||||
{httpIpSource === 'local' ? ( |
|
||||
<Input label="Host" value={connectionURL} disabled /> |
|
||||
) : ( |
|
||||
<Input label="Host" /> |
|
||||
)} |
|
||||
<Checkbox label="Use TLS?" /> |
|
||||
</> |
|
||||
)} |
|
||||
{selectedConnType === connType.BLE && ( |
|
||||
<div> |
|
||||
<div className="flex space-x-2"> |
|
||||
<Button border onClick={updateBleDeviceList}> |
|
||||
Refresh List |
|
||||
</Button> |
|
||||
<Button |
|
||||
border |
|
||||
onClick={async (): Promise<void> => { |
|
||||
await ble.getDevice(); |
|
||||
}} |
|
||||
> |
|
||||
New Device |
|
||||
</Button> |
|
||||
</div> |
|
||||
<div className="space-y-2"> |
|
||||
<div>Previously connected devices</div> |
|
||||
{bleDevices.map((device, index) => ( |
|
||||
<div |
|
||||
onClick={async (): Promise<void> => { |
|
||||
console.log('clicked'); |
|
||||
|
|
||||
await connect(connType.BLE, { |
|
||||
device: device, |
|
||||
}); |
|
||||
}} |
|
||||
className="flex justify-between p-2 bg-gray-700 rounded-md" |
|
||||
key={index} |
|
||||
> |
|
||||
<div className="my-auto">{device.name}</div> |
|
||||
<IconButton |
|
||||
onClick={async (): Promise<void> => { |
|
||||
console.log('clicked'); |
|
||||
|
|
||||
await connect(connType.BLE, { |
|
||||
device: device, |
|
||||
}); |
|
||||
}} |
|
||||
icon={<FiCheck />} |
|
||||
/> |
|
||||
</div> |
|
||||
))} |
|
||||
</div> |
|
||||
</div> |
|
||||
)} |
|
||||
{selectedConnType === connType.SERIAL && ( |
|
||||
<div> |
|
||||
<div className="flex space-x-2"> |
|
||||
<Button border onClick={updateSerialDeviceList}> |
|
||||
Refresh List |
|
||||
</Button> |
|
||||
<Button |
|
||||
border |
|
||||
onClick={async (): Promise<void> => { |
|
||||
console.log(await serial.getPort()); |
|
||||
}} |
|
||||
> |
|
||||
New Device |
|
||||
</Button> |
|
||||
</div> |
|
||||
<div className="space-y-2"> |
|
||||
<div>Previously connected devices</div> |
|
||||
{serialDevices.map((device, index) => ( |
|
||||
<div |
|
||||
className="flex justify-between p-2 bg-gray-700 rounded-md" |
|
||||
key={index} |
|
||||
> |
|
||||
<div className="my-auto"> |
|
||||
{device.getInfo().usbProductId} |
|
||||
{device.getInfo().usbVendorId} |
|
||||
</div> |
|
||||
<IconButton |
|
||||
onClick={async (): Promise<void> => { |
|
||||
await connect(connType.SERIAL, { |
|
||||
// @ts-ignore tmp
|
|
||||
device: device, |
|
||||
}); |
|
||||
}} |
|
||||
icon={<FiCheck />} |
|
||||
/> |
|
||||
<JSONPretty data={device.getInfo()} /> |
|
||||
</div> |
|
||||
))} |
|
||||
</div> |
|
||||
</div> |
|
||||
)} |
|
||||
</form> |
|
||||
<Button |
|
||||
border |
|
||||
onClick={(): void => { |
|
||||
connection.disconnect(); |
|
||||
}} |
|
||||
> |
|
||||
Disconnect |
|
||||
</Button> |
|
||||
</div> |
|
||||
</Card> |
|
||||
</PrimaryTemplate> |
|
||||
); |
|
||||
}; |
|
||||
@ -1,17 +1,14 @@ |
|||||
Add desctiptions to form elements (below on mobile, to the right on desktop) |
Add desctiptions to form elements (below on mobile, to the right on desktop) |
||||
full width form elements on channel manager, don't use deprecated `modemConfig` |
|
||||
add default value to undefined protobufs, (omit if default to keep them small (only for ota packets)) |
add default value to undefined protobufs, (omit if default to keep them small (only for ota packets)) |
||||
add input validation min,max etc |
add input validation min,max etc |
||||
change ch type select to disable, make primary and delete buttons |
|
||||
maybe make channel editor acordion? |
maybe make channel editor acordion? |
||||
add url routing for settings tabs |
add url routing for settings tabs |
||||
form not updated if rendered before store populated, populated on remount, also disabled fields will remain disabled even if there disable props provided by redux are true, required toggling |
|
||||
add loading blur to card (prop) |
add loading blur to card (prop) |
||||
form still considered dirty after save |
form still considered dirty after save |
||||
form prefix should be located in the input (absolute?) |
form prefix should be located in the input (absolute?) |
||||
form suffix should focus input |
form suffix should focus input |
||||
reset store on new connection |
reset store on new connection |
||||
|
redux actions seem to be dispatched twice |
||||
|
|
||||
meshtastic.js |
meshtastic.js |
||||
- either extrapolate user and position out of nodeInfo, or fire off events for all position and user packets even when contained in a nodeInfo packet, decide how to fire events for nodeInfo, wether we merge it or do something else |
|
||||
- fix entering device-reconnecting state and not re-connecting despite packets being received |
- fix entering device-reconnecting state and not re-connecting despite packets being received |
||||
Loading…
Reference in new issue