diff --git a/package.json b/package.json index be43568c..c6017e9e 100644 --- a/package.json +++ b/package.json @@ -14,13 +14,14 @@ "@headlessui/react": "^1.2.0", "@heroicons/react": "^1.0.1", "@meshtastic/meshtasticjs": "^0.6.12", + "@react-rxjs/core": "^0.8.0", "observable-hooks": "^4.0.3", - "react": "^0.0.0-experimental-132b72d7b", - "react-dom": "^0.0.0-experimental-132b72d7b", + "react": "^0.0.0-experimental-d75105fa9", + "react-dom": "^0.0.0-experimental-d75105fa9", "react-flags-select": "^2.1.2", - "react-hook-form": "^7.6.5", + "react-hook-form": "^7.6.10", "react-json-pretty": "^2.2.0", - "rxjs": "^7.0.1", + "rxjs": "^7.1.0", "yarn": "^1.22.10" }, "devDependencies": { @@ -28,13 +29,13 @@ "@snowpack/plugin-postcss": "^1.4.0", "@snowpack/plugin-react-refresh": "^2.5.0", "@snowpack/plugin-typescript": "^1.2.0", - "@types/eslint": "^7.2.11", - "@types/react": "^17.0.6", + "@types/eslint": "^7.2.12", + "@types/react": "^17.0.8", "@types/react-dom": "^17.0.5", "@types/snowpack-env": "^2.3.2", - "@typescript-eslint/eslint-plugin": "^4.24.0", - "@typescript-eslint/parser": "^4.24.0", - "autoprefixer": "^10.2.5", + "@typescript-eslint/eslint-plugin": "^4.25.0", + "@typescript-eslint/parser": "^4.25.0", + "autoprefixer": "^10.2.6", "eslint": "^7.27.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.23.3", @@ -45,8 +46,8 @@ "postcss": "^8.3.0", "postcss-cli": "^8.3.1", "prettier": "^2.3.0", - "snowpack": "^3.5.1", + "snowpack": "^3.5.2", "tailwindcss": "^2.1.2", - "typescript": "^4.2.4" + "typescript": "^4.3.2" } } diff --git a/src/App.tsx b/src/App.tsx index 77d4c499..ab19a366 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,11 +2,11 @@ import React from 'react'; import type { IBLEConnection, - IHTTPConnection, ISerialConnection, } from '@meshtastic/meshtasticjs'; import { Client, + IHTTPConnection, Protobuf, SettingsManager, Types, @@ -50,8 +50,9 @@ const App = (): JSX.Element => { ); const [channels, setChannels] = React.useState([] as Protobuf.Channel[]); const [nodes, setNodes] = React.useState([]); - const [connection, setConnection] = - React.useState(); + const [connection, setConnection] = React.useState< + ISerialConnection | IHTTPConnection | IBLEConnection + >(new IHTTPConnection()); const [isReady, setIsReady] = React.useState(false); const [lastMeshInterraction, setLastMeshInterraction] = React.useState(0); @@ -100,7 +101,7 @@ const App = (): JSX.Element => { React.useEffect(() => { console.log('UPDATING'); - const deviceStatusEvent = connection?.onDeviceStatusEvent.subscribe( + const deviceStatusEvent = connection.onDeviceStatusEvent.subscribe( (status) => { setDeviceStatus(status); if (status === Types.DeviceStatusEnum.DEVICE_CONFIGURED) { @@ -109,9 +110,9 @@ const App = (): JSX.Element => { }, ); const myNodeInfoEvent = - connection?.onMyNodeInfoEvent.subscribe(setMyNodeInfo); + connection.onMyNodeInfoEvent.subscribe(setMyNodeInfo); - const nodeInfoPacketEvent = connection?.onNodeInfoPacketEvent.subscribe( + const nodeInfoPacketEvent = connection.onNodeInfoPacketEvent.subscribe( (node) => { if ( nodes.findIndex( @@ -129,7 +130,7 @@ const App = (): JSX.Element => { }, ); - const adminPacketEvent = connection?.onAdminPacketEvent.subscribe( + const adminPacketEvent = connection.onAdminPacketEvent.subscribe( (adminMessage) => { switch (adminMessage.data.variant.oneofKind) { case 'getChannelResponse': @@ -144,7 +145,7 @@ const App = (): JSX.Element => { }, ); - const meshHeartbeat = connection?.onMeshHeartbeat.subscribe( + const meshHeartbeat = connection.onMeshHeartbeat.subscribe( setLastMeshInterraction, ); @@ -154,7 +155,7 @@ const App = (): JSX.Element => { nodeInfoPacketEvent?.unsubscribe(); adminPacketEvent?.unsubscribe(); meshHeartbeat?.unsubscribe(); - connection?.disconnect(); + connection.disconnect(); }; }, [connection, nodes]); diff --git a/src/Main.tsx b/src/Main.tsx index 993b14fd..d67d7bc4 100644 --- a/src/Main.tsx +++ b/src/Main.tsx @@ -14,7 +14,7 @@ import MessageBox from './components/MessageBox'; import Sidebar from './components/Sidebar'; interface MainProps { - connection?: ISerialConnection | IHTTPConnection | IBLEConnection; + connection: ISerialConnection | IHTTPConnection | IBLEConnection; myNodeInfo: Protobuf.MyNodeInfo; nodes: Types.NodeInfoPacket[]; channels: Protobuf.Channel[]; @@ -33,7 +33,7 @@ const Main = (props: MainProps): JSX.Element => { const [sidebarOpen, setSidebarOpen] = useState(false); React.useEffect(() => { - const textPacketEvent = props.connection?.onTextPacketEvent.subscribe( + const textPacketEvent = props.connection.onTextPacketEvent.subscribe( (message) => { setMessages((messages) => [ ...messages, @@ -45,7 +45,7 @@ const Main = (props: MainProps): JSX.Element => { }, [props.connection]); React.useEffect(() => { - const routingPacketEvent = props.connection?.onRoutingPacketEvent.subscribe( + const routingPacketEvent = props.connection.onRoutingPacketEvent.subscribe( (routingPacket) => { setMessages( messages.map((message) => { diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 35817f1e..7703a38c 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -21,11 +21,9 @@ interface HeaderProps { status: Types.DeviceStatusEnum; IsReady: boolean; LastMeshInterraction: number; - connection?: IHTTPConnection | ISerialConnection | IBLEConnection; + connection: IHTTPConnection | ISerialConnection | IBLEConnection; setConnection: React.Dispatch< - React.SetStateAction< - IHTTPConnection | ISerialConnection | IBLEConnection | undefined - > + React.SetStateAction >; } @@ -44,7 +42,7 @@ const Header = (props: HeaderProps): JSX.Element => { activeConnection === 'serial' ? 'bg-green-300' : 'bg-gray-300' }`} onClick={() => { - props.connection?.disconnect(); + props.connection.disconnect(); const connection = new ISerialConnection(); connection.connect({}); setActiveConnection('serial'); @@ -58,7 +56,7 @@ const Header = (props: HeaderProps): JSX.Element => { activeConnection === 'http' ? 'bg-green-300' : 'bg-gray-300' }`} onClick={() => { - props.connection?.disconnect(); + props.connection.disconnect(); const connection = new IHTTPConnection(); connection.connect({ address: @@ -80,7 +78,7 @@ const Header = (props: HeaderProps): JSX.Element => { activeConnection === 'ble' ? 'bg-green-300' : 'bg-gray-300' }`} onClick={() => { - props.connection?.disconnect(); + props.connection.disconnect(); const connection = new IBLEConnection(); connection.connect({}); setActiveConnection('ble'); diff --git a/src/components/MessageBox.tsx b/src/components/MessageBox.tsx index 64244ced..a97a77b7 100644 --- a/src/components/MessageBox.tsx +++ b/src/components/MessageBox.tsx @@ -13,7 +13,7 @@ export interface MessageBoxProps { translations: languageTemplate; sidebarOpen: boolean; setSidebarOpen: React.Dispatch>; - connection?: ISerialConnection | IHTTPConnection | IBLEConnection; + connection: ISerialConnection | IHTTPConnection | IBLEConnection; isReady: boolean; } @@ -21,7 +21,7 @@ const MessageBox = (props: MessageBoxProps): JSX.Element => { const [currentMessage, setCurrentMessage] = React.useState(''); const sendMessage = () => { if (props.isReady) { - props.connection?.sendText(currentMessage, undefined, true); + props.connection.sendText(currentMessage, undefined, true); setCurrentMessage(''); } }; diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index ed111f76..af437d67 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -18,7 +18,7 @@ interface SidebarProps { isReady: boolean; nodes: Types.NodeInfoPacket[]; channels: Protobuf.Channel[]; - connection?: ISerialConnection | IHTTPConnection | IBLEConnection; + connection: ISerialConnection | IHTTPConnection | IBLEConnection; language: LanguageEnum; setLanguage: React.Dispatch>; translations: languageTemplate; diff --git a/src/components/Sidebar/Device/Index.tsx b/src/components/Sidebar/Device/Index.tsx index bc800530..dcd0cbce 100644 --- a/src/components/Sidebar/Device/Index.tsx +++ b/src/components/Sidebar/Device/Index.tsx @@ -17,7 +17,7 @@ import Settings from './Settings'; interface DeviceProps { isReady: boolean; - connection?: ISerialConnection | IHTTPConnection | IBLEConnection; + connection: ISerialConnection | IHTTPConnection | IBLEConnection; translations: languageTemplate; } diff --git a/src/components/Sidebar/Device/Settings.tsx b/src/components/Sidebar/Device/Settings.tsx index c7b5bd92..5b06e722 100644 --- a/src/components/Sidebar/Device/Settings.tsx +++ b/src/components/Sidebar/Device/Settings.tsx @@ -1,13 +1,17 @@ import React from 'react'; +import { ObservableResource, useObservableSuspense } from 'observable-hooks'; import { useForm } from 'react-hook-form'; import JSONPretty from 'react-json-pretty'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; import { SaveIcon } from '@heroicons/react/outline'; import type { IBLEConnection, IHTTPConnection, ISerialConnection, + Types, } from '@meshtastic/meshtasticjs'; import { Protobuf } from '@meshtastic/meshtasticjs'; @@ -15,27 +19,44 @@ import type { languageTemplate } from '../../../../src/App'; export interface SettingsProps { isReady: boolean; - connection?: ISerialConnection | IHTTPConnection | IBLEConnection; + connection: ISerialConnection | IHTTPConnection | IBLEConnection; translations: languageTemplate; } +export interface SettingsPropsNew { + isReady: boolean; + connection: ISerialConnection | IHTTPConnection | IBLEConnection; + translations: languageTemplate; + adminPacketResource: ObservableResource; +} + const Settings = (props: SettingsProps): JSX.Element => { - React.useEffect(() => { - const adminPacketEvent = props.connection?.onAdminPacketEvent.subscribe( - (adminMessage) => { - switch (adminMessage.data.variant.oneofKind) { - case 'getRadioResponse': - if (adminMessage.data.variant.getRadioResponse.preferences) { - setPreferences( - adminMessage.data.variant.getRadioResponse.preferences, - ); - } - } - }, - ); + // const adminPacketResource = useSuspense(props.connection.onAdminPacketEvent); + const tmp$ = new Subject().pipe( + filter( + (adminPacket) => + adminPacket.data.variant.oneofKind === 'getRadioResponse', + ), + ); + // const tmp$ = props.connection.onAdminPacketEvent; + + const adminPacketResource = new ObservableResource(tmp$); + + return ( + Loading....}> + + + ); +}; - return () => adminPacketEvent?.unsubscribe(); - }, []); +const SettingsForm = (props: SettingsPropsNew): JSX.Element => { + // const adminPacket: Types.AdminPacket = props.adminPacketResource.data.read(); + const adminPacket = useObservableSuspense(props.adminPacketResource); const [preferences, setPreferences] = React.useState(); @@ -47,6 +68,7 @@ const Settings = (props: SettingsProps): JSX.Element => { const onSubmit = handleSubmit((data) => console.log(data)); return (
+
{JSON.stringify(adminPacket)}
{props.translations.device_region_title}
diff --git a/tsconfig.json b/tsconfig.json index e69ea930..da987e44 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,20 @@ "noEmit": true, /* Additional Options */ "strict": true, + "noImplicitAny": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + // "noUncheckedIndexedAccess": true, + "noPropertyAccessFromIndexSignature": true, + "strictBindCallApply": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, diff --git a/yarn.lock b/yarn.lock index f545e5b0..7884c8cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -346,6 +346,11 @@ resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.0.0-alpha.21.tgz#0814f365d1f155f55a83e13f38dba92856e66ec5" integrity sha512-m6Ohw3ke0RiCW41kKbkPW7z+wEgchX99iAwPjFMHRYEf1w1fX8IBIzANHe13lg2MP1P7zmZYGbQ5nupFqo4cWw== +"@react-rxjs/core@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@react-rxjs/core/-/core-0.8.0.tgz#b73c0480a457b654fdcd6d6ede36bbd99c691b2e" + integrity sha512-LvmVEel9MPykAJoI0oZafmui2JOU18bmIf0X0P+oEtVii0LNaj8p/3eL52NfWgsQd6hSrjevSwNbbrScsYuaFg== + "@snowpack/plugin-dotenv@^2.0.5": version "2.1.0" resolved "https://registry.yarnpkg.com/@snowpack/plugin-dotenv/-/plugin-dotenv-2.1.0.tgz#dac77007bf657f999d222318506a850fd7d16875" @@ -384,10 +389,10 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/eslint@^7.2.11": - version "7.2.11" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.11.tgz#180b58f5bb7d7376e39d22496e2b08901aa52fd2" - integrity sha512-WYhv//5K8kQtsSc9F1Kn2vHzhYor6KpwPbARH7hwYe3C3ETD0EVx/3P5qQybUoaBEuUa9f/02JjBiXFWalYUmw== +"@types/eslint@^7.2.12": + version "7.2.12" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.12.tgz#fefaa48a4db2415b621fe315e4baeedde525927e" + integrity sha512-HjikV/jX6e0Pg4DcB+rtOBKSrG6w5IaxWpmi3efL/eLxMz5lZTK+W1DKERrX5a+mNzL78axfsDNXu7JHFP4uLg== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -433,10 +438,10 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@^17.0.6": - version "17.0.6" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.6.tgz#0ec564566302c562bf497d73219797a5e0297013" - integrity sha512-u/TtPoF/hrvb63LdukET6ncaplYsvCvmkceasx8oG84/ZCsoLxz9Z/raPBP4lTAiWW1Jb889Y9svHmv8R26dWw== +"@types/react@^17.0.8": + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.8.tgz#fe76e3ba0fbb5602704110fd1e3035cf394778e3" + integrity sha512-3sx4c0PbXujrYAKwXxNONXUtRp9C+hE2di0IuxFyf5BELD+B+AXL8G7QrmSKhVwKZDbv0igiAjQAMhXj8Yg3aw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -452,13 +457,13 @@ resolved "https://registry.yarnpkg.com/@types/snowpack-env/-/snowpack-env-2.3.3.tgz#d2dfb1fb8557aa8bb517606d5dfa249cc861c3ff" integrity sha512-riJuu2fR3qhBfpWJtqQtNwYJFvquiXfqdprXvZjSNmscnZbIVyHoM49ZVEM1bciKM1mWOCdjXymOYHyGh2WLtg== -"@typescript-eslint/eslint-plugin@^4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.24.0.tgz#03801ffc25b2af9d08f3dc9bccfc0b7ce3780d0f" - integrity sha512-qbCgkPM7DWTsYQGjx9RTuQGswi+bEt0isqDBeo+CKV0953zqI0Tp7CZ7Fi9ipgFA6mcQqF4NOVNwS/f2r6xShw== +"@typescript-eslint/eslint-plugin@^4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz#d82657b6ab4caa4c3f888ff923175fadc2f31f2a" + integrity sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ== dependencies: - "@typescript-eslint/experimental-utils" "4.24.0" - "@typescript-eslint/scope-manager" "4.24.0" + "@typescript-eslint/experimental-utils" "4.25.0" + "@typescript-eslint/scope-manager" "4.25.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -466,60 +471,60 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.24.0.tgz#c23ead9de44b99c3a5fd925c33a106b00165e172" - integrity sha512-IwTT2VNDKH1h8RZseMH4CcYBz6lTvRoOLDuuqNZZoThvfHEhOiZPQCow+5El3PtyxJ1iDr6UXZwYtE3yZQjhcw== +"@typescript-eslint/experimental-utils@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz#b2febcfa715d2c1806fd5f0335193a6cd270df54" + integrity sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.24.0" - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/typescript-estree" "4.24.0" + "@typescript-eslint/scope-manager" "4.25.0" + "@typescript-eslint/types" "4.25.0" + "@typescript-eslint/typescript-estree" "4.25.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.24.0.tgz#2e5f1cc78ffefe43bfac7e5659309a92b09a51bd" - integrity sha512-dj1ZIh/4QKeECLb2f/QjRwMmDArcwc2WorWPRlB8UNTZlY1KpTVsbX7e3ZZdphfRw29aTFUSNuGB8w9X5sS97w== +"@typescript-eslint/parser@^4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.25.0.tgz#6b2cb6285aa3d55bfb263c650739091b0f19aceb" + integrity sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg== dependencies: - "@typescript-eslint/scope-manager" "4.24.0" - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/typescript-estree" "4.24.0" + "@typescript-eslint/scope-manager" "4.25.0" + "@typescript-eslint/types" "4.25.0" + "@typescript-eslint/typescript-estree" "4.25.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.24.0.tgz#38088216f0eaf235fa30ed8cabf6948ec734f359" - integrity sha512-9+WYJGDnuC9VtYLqBhcSuM7du75fyCS/ypC8c5g7Sdw7pGL4NDTbeH38eJPfzIydCHZDoOgjloxSAA3+4l/zsA== +"@typescript-eslint/scope-manager@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz#9d86a5bcc46ef40acd03d85ad4e908e5aab8d4ca" + integrity sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w== dependencies: - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/visitor-keys" "4.24.0" + "@typescript-eslint/types" "4.25.0" + "@typescript-eslint/visitor-keys" "4.25.0" -"@typescript-eslint/types@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.24.0.tgz#6d0cca2048cbda4e265e0c4db9c2a62aaad8228c" - integrity sha512-tkZUBgDQKdvfs8L47LaqxojKDE+mIUmOzdz7r+u+U54l3GDkTpEbQ1Jp3cNqqAU9vMUCBA1fitsIhm7yN0vx9Q== +"@typescript-eslint/types@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.25.0.tgz#0e444a5c5e3c22d7ffa5e16e0e60510b3de5af87" + integrity sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ== -"@typescript-eslint/typescript-estree@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.24.0.tgz#b49249679a98014d8b03e8d4b70864b950e3c90f" - integrity sha512-kBDitL/by/HK7g8CYLT7aKpAwlR8doshfWz8d71j97n5kUa5caHWvY0RvEUEanL/EqBJoANev8Xc/mQ6LLwXGA== +"@typescript-eslint/typescript-estree@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz#942e4e25888736bff5b360d9b0b61e013d0cfa25" + integrity sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg== dependencies: - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/visitor-keys" "4.24.0" + "@typescript-eslint/types" "4.25.0" + "@typescript-eslint/visitor-keys" "4.25.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.24.0.tgz#a8fafdc76cad4e04a681a945fbbac4e35e98e297" - integrity sha512-4ox1sjmGHIxjEDBnMCtWFFhErXtKA1Ec0sBpuz0fqf3P+g3JFGyTxxbF06byw0FRsPnnbq44cKivH7Ks1/0s6g== +"@typescript-eslint/visitor-keys@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz#863e7ed23da4287c5b469b13223255d0fde6aaa7" + integrity sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg== dependencies: - "@typescript-eslint/types" "4.24.0" + "@typescript-eslint/types" "4.25.0" eslint-visitor-keys "^2.0.0" abbrev@1: @@ -724,15 +729,15 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -autoprefixer@^10.2.5: - version "10.2.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.5.tgz#096a0337dbc96c0873526d7fef5de4428d05382d" - integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== +autoprefixer@^10.2.6: + version "10.2.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.6.tgz#aadd9ec34e1c98d403e01950038049f0eb252949" + integrity sha512-8lChSmdU6dCNMCQopIf4Pe5kipkAGj/fvTMslCsih0uHpOrXOPUEVOmYMMqmw3cekQkSD7EhIeuYl5y0BLdKqg== dependencies: - browserslist "^4.16.3" - caniuse-lite "^1.0.30001196" + browserslist "^4.16.6" + caniuse-lite "^1.0.30001230" colorette "^1.2.2" - fraction.js "^4.0.13" + fraction.js "^4.1.1" normalize-range "^0.1.2" postcss-value-parser "^4.1.0" @@ -797,7 +802,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.16.3: +browserslist@^4.14.5: version "4.16.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== @@ -808,6 +813,17 @@ browserslist@^4.14.5, browserslist@^4.16.3: escalade "^3.1.1" node-releases "^1.1.70" +browserslist@^4.16.6: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" @@ -859,11 +875,16 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196: +caniuse-lite@^1.0.30001181: version "1.0.30001207" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz#364d47d35a3007e528f69adb6fecb07c2bb2cc50" integrity sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw== +caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001230: + version "1.0.30001230" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz#8135c57459854b2240b57a4a6786044bdc5a9f71" + integrity sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1212,6 +1233,11 @@ electron-to-chromium@^1.3.649: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.708.tgz#127970d2fc665ab356be59e668f2914856419176" integrity sha512-+A8ggYZ5riOLMcVAuzHx6bforaPzaiLnW1QOMD2SlMYQVi7QQTyQ/WrlZoebIH9ikmgr+tLJGpNITFFCUiQcPw== +electron-to-chromium@^1.3.723: + version "1.3.742" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.742.tgz#7223215acbbd3a5284962ebcb6df85d88b95f200" + integrity sha512-ihL14knI9FikJmH2XUIDdZFWJxvr14rPSdOhJ7PpS27xbz8qmaRwCwyg/bmFwjWKmWK9QyamiCZVCvXm5CH//Q== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -1625,10 +1651,10 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -fraction.js@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" - integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== +fraction.js@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff" + integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" @@ -2620,6 +2646,11 @@ node-releases@^1.1.70: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== +node-releases@^1.1.71: + version "1.1.72" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" + integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== + nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" @@ -3198,14 +3229,14 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -react-dom@^0.0.0-experimental-132b72d7b: - version "0.0.0-experimental-132b72d7b" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-132b72d7b.tgz#ac5c708d68e8ddc6a468406d370d3d2173b5e8b8" - integrity sha512-Crz96YAeylYs3JoHxugDRcRSnDJ2t21mIzpVFeIUQadV5DDH/ImBISystD2UtwHATKWDF81Ku0K0sLZc6nrxEg== +react-dom@^0.0.0-experimental-d75105fa9: + version "0.0.0-experimental-d75105fa9" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-d75105fa9.tgz#2196bfc3e6eeac95c815fb03601b8dcff5f1233e" + integrity sha512-MP/kL+EojcJ4nRZ40jjzYNeahOyl6PWJWZk9+vMuC2SzrDp3iUwba8EUexqbzuFpoYdO7/KhhWFphRpEh9flww== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - scheduler "0.0.0-experimental-132b72d7b" + scheduler "0.0.0-experimental-d75105fa9" react-flags-select@^2.1.2: version "2.1.2" @@ -3214,10 +3245,10 @@ react-flags-select@^2.1.2: dependencies: classnames "^2.2.6" -react-hook-form@^7.6.5: - version "7.6.5" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.6.5.tgz#f3e2d75e3ca5312522c7ea5cd597f0bab123da1f" - integrity sha512-bxWzRYbPGg830NezZsAiAO/rYKsF3j4IJeX9M/MPqF1uS5vNaxnn1+P93J/EOZhb4IPq5/5hM24e0C4nfIZJjQ== +react-hook-form@^7.6.10: + version "7.6.10" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.6.10.tgz#77e98a08839e53a3222b935a07ef94be316f3521" + integrity sha512-V39bRK1iK4N9TbQf3jR2oUu7OcgnZAe/WUar1otRR8OHgnGM41XJ7UDQX176/nyCjIcmkcArQdsYc9dPYPpQ9Q== react-is@^16.8.1: version "16.13.1" @@ -3236,10 +3267,10 @@ react-refresh@^0.9.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== -react@^0.0.0-experimental-132b72d7b: - version "0.0.0-experimental-132b72d7b" - resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-132b72d7b.tgz#319a4c6f4bd3ed22daa0aaf452ab86743d8be0bd" - integrity sha512-Z7A0SY0OKfM7KogINS48nl2V4q79Wgt7pETSR5rhO5m+cUwhrqKRTrUz5b+7Ra3VvGYOq+EhVRz2fQYKS0CXfA== +react@^0.0.0-experimental-d75105fa9: + version "0.0.0-experimental-d75105fa9" + resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-d75105fa9.tgz#c57c119b4a020a525848b823049ec225bc572bfe" + integrity sha512-bVzACyURlSa7yWtdPuY8jSejETPZg7cBzHfr47ctm+2ni37QCrelrhurBd7f+s+sj3FdVwnDJ97WZfGy9tdt8Q== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -3417,10 +3448,10 @@ rxjs@^6.6.7: dependencies: tslib "^1.9.0" -rxjs@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.0.1.tgz#5f41c4f991cea550471fc5d215727390103702c7" - integrity sha512-wViQ4Vgps1xJwqWIBooMNN44usCSthL7wCUl4qWqrVjhGfWyVyXcxlYzfDKkJKACQvZMTOft/jJ3RkbwK1j9QQ== +rxjs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.1.0.tgz#94202d27b19305ef7b1a4f330277b2065df7039e" + integrity sha512-gCFO5iHIbRPwznl6hAYuwNFld8W4S2shtSJIqG27ReWXo9IWrCyEICxUA+6vJHwSR/OakoenC4QsDxq50tzYmw== dependencies: tslib "~2.1.0" @@ -3439,10 +3470,10 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -scheduler@0.0.0-experimental-132b72d7b: - version "0.0.0-experimental-132b72d7b" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-132b72d7b.tgz#636b2d416ebd2c3c955905af92b13936afb4ccc5" - integrity sha512-8hBsdFg0hSkIFk8aE1g9InTxkCyCNkaTVPRdOt5exhzldC02WHIVHpQVzFq/RlZQn4Jb0ym1MbDFbSx622fzKQ== +scheduler@0.0.0-experimental-d75105fa9: + version "0.0.0-experimental-d75105fa9" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-d75105fa9.tgz#954d104f7d27e6602cb24d550d5440402df09478" + integrity sha512-WJvy763S7S9as+wfBwcsbSgYfRByMTF96od8bI5wcFjd6h4AM+yn12WWELRJzlOgCdmz0YbL0OHrQbB0o4eiCQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -3521,10 +3552,10 @@ smart-buffer@^4.1.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== -snowpack@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/snowpack/-/snowpack-3.5.1.tgz#51fbdbb56794ebb7a07f3fecd4fc60454e4f366f" - integrity sha512-YOpC3hpGSzFOKgbHfMmWmJ1KYEtdBWkbUUdT0H3E1fsc73qRv97wskNkVaeNKtr/yrImR5+KHUvxcWY6jgHVtw== +snowpack@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/snowpack/-/snowpack-3.5.2.tgz#0b23619be535b22ebdda1ab3eba3444acbf35b91" + integrity sha512-TQQT5PXxeDr4gaMbp6nQrTDLX+Y8G5qI2wLqQdHLrpQEnq7W+gysn94+0xbOhnx0pFoVlSoFPjdQ83sETWl/9A== dependencies: cli-spinners "^2.5.0" default-browser-id "^2.0.0" @@ -3873,10 +3904,10 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -typescript@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" - integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== +typescript@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" + integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== unbox-primitive@^1.0.0: version "1.0.1"