From bf5bdd1f720364a90a14cbe25fce210e7c75835e Mon Sep 17 00:00:00 2001 From: aet Date: Sun, 19 Dec 2021 01:57:38 -0500 Subject: [PATCH] Add settings panel --- .vscode/settings.json | 3 +- package.json | 18 +- packages/opvault.js/package.json | 6 +- packages/opvault.js/src/types.ts | 5 + packages/web/esbuild.js | 2 +- packages/web/package.json | 18 +- packages/web/src/App.tsx | 15 +- packages/web/src/components/ItemField.tsx | 6 +- .../web/src/components/ItemFieldValue.tsx | 18 +- packages/web/src/components/Modal.tsx | 71 +++ packages/web/src/components/Toast.tsx | 69 +++ packages/web/src/i18n/index.tsx | 17 +- packages/web/src/index.scss | 74 ++- packages/web/src/main.tsx | 2 + packages/web/src/pages/Vault.tsx | 83 ++- packages/web/src/settings/index.tsx | 86 +++ packages/web/src/utils/localStorage.ts | 53 +- pnpm-lock.yaml | 576 +++++++++++------- 18 files changed, 847 insertions(+), 275 deletions(-) create mode 100644 packages/web/src/components/Modal.tsx create mode 100644 packages/web/src/components/Toast.tsx create mode 100644 packages/web/src/settings/index.tsx diff --git a/.vscode/settings.json b/.vscode/settings.json index 8585a34..c97a106 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "editor.formatOnSave": true, + "cSpell.words": ["autolock"], "cSpell.ignorePaths": [ "**/package-lock.json", "**/node_modules/**", @@ -9,4 +10,4 @@ ".vscode-insiders", "i18n.json" ] -} \ No newline at end of file +} diff --git a/package.json b/package.json index ad0ab71..d1d76e0 100644 --- a/package.json +++ b/package.json @@ -10,39 +10,39 @@ "repl": "node -r ts-node/register/transpile-only src/repl.ts" }, "devDependencies": { - "@types/chai": "^4.2.22", + "@types/chai": "^4.3.0", "@types/chai-as-promised": "^7.1.4", "@types/fs-extra": "^9.0.13", "@types/mocha": "github:whitecolor/mocha-types#da22474cf43f48a56c86f8c23a5a0ea36e295768", "@types/node": "^16.11.9", "@types/sinon": "^10.0.6", - "@types/sinon-chai": "^3.2.5", + "@types/sinon-chai": "^3.2.6", "@types/wicg-file-system-access": "^2020.9.4", - "@typescript-eslint/eslint-plugin": "5.4.0", - "@typescript-eslint/parser": "5.4.0", + "@typescript-eslint/eslint-plugin": "5.7.0", + "@typescript-eslint/parser": "5.7.0", "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "chalk": "^4.1.2", - "eslint": "8.3.0", + "eslint": "8.5.0", "eslint-config-prettier": "8.3.0", "eslint-import-resolver-typescript": "2.5.0", "eslint-plugin-import": "2.25.3", "eslint-plugin-react": "7.27.1", "eslint-plugin-react-hooks": "4.3.0", "fs-extra": "^10.0.0", - "marked": "^4.0.4", + "marked": "^4.0.8", "mocha": "^9.1.3", "mochawesome": "^7.0.1", - "prettier": "^2.4.1", + "prettier": "^2.5.1", "react": "^17.0.2", "react-dom": "^17.0.2", - "sass": "^1.43.4", + "sass": "^1.45.0", "sinon": "^12.0.1", "sinon-chai": "^3.7.0", "tslib": "^2.3.1", "ts-node": "^10.4.0", "tsconfig-paths": "^3.12.0", - "typescript": "^4.5.2" + "typescript": "^4.5.4" }, "prettier": { "arrowParens": "avoid", diff --git a/packages/opvault.js/package.json b/packages/opvault.js/package.json index 4375995..bfbb8b7 100644 --- a/packages/opvault.js/package.json +++ b/packages/opvault.js/package.json @@ -15,9 +15,9 @@ "devDependencies": { "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-replace": "^3.0.0", - "prettier": "^2.4.1", - "rollup": "^2.60.1", + "prettier": "^2.5.1", + "rollup": "^2.61.1", "rollup-plugin-ts": "^2.0.4", - "typedoc": "^0.22.9" + "typedoc": "^0.22.10" } } diff --git a/packages/opvault.js/src/types.ts b/packages/opvault.js/src/types.ts index a5ecd67..67b9446 100644 --- a/packages/opvault.js/src/types.ts +++ b/packages/opvault.js/src/types.ts @@ -23,12 +23,14 @@ export type TextField = { value: string designation: string name: string + id?: undefined } export type BooleanField = { type: FieldType.Checkbox name: string value?: "✓" | string designation?: undefined + id?: undefined } export type ItemField = @@ -38,12 +40,14 @@ export type ItemField = name: string designation: "username" value: string + id?: undefined type?: undefined } | { name: string designation: "password" value: string + id?: undefined type?: undefined } | { @@ -51,6 +55,7 @@ export type ItemField = type: FieldType value: string designation?: string + id?: undefined name: string } diff --git a/packages/web/esbuild.js b/packages/web/esbuild.js index 11a2455..0a05cf0 100755 --- a/packages/web/esbuild.js +++ b/packages/web/esbuild.js @@ -11,7 +11,7 @@ build({ entryPoints: ["./src/electron/index.ts", "./src/electron/preload.ts"], outdir: "./dist/main", external: builtinModules.concat("electron"), - target: ["chrome90"], + target: ["chrome96"], tsconfig: "./tsconfig.json", sourcemap: "external", minify: process.env.NODE_ENV === "production", diff --git a/packages/web/package.json b/packages/web/package.json index 39b477b..6a95c3b 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -13,17 +13,17 @@ "bundle": "./scripts/build.sh" }, "devDependencies": { - "@emotion/css": "^11.5.0", - "@emotion/react": "^11.6.0", + "@emotion/css": "^11.7.1", + "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", "@rollup/plugin-yaml": "^3.1.0", - "@types/react": "^17.0.36", + "@types/react": "^17.0.37", "@types/react-dom": "^17.0.11", - "@vitejs/plugin-react": "^1.1.0", + "@vitejs/plugin-react": "^1.1.3", "buffer": "^6.0.3", - "electron": "^16.0.1", + "electron": "^16.0.5", "electron-builder": "^22.14.5", - "esbuild": "^0.13.15", + "esbuild": "^0.14.5", "js-yaml": "^4.1.0", "opvault.js": "*", "path-browserify": "^1.0.1", @@ -31,8 +31,8 @@ "react-dom": "^17.0.2", "react-idle-timer": "4.6.4", "react-icons": "^4.3.1", - "sass": "^1.43.4", - "typescript": "^4.5.2", - "vite": "^2.6.14" + "sass": "^1.45.0", + "typescript": "^4.5.4", + "vite": "^2.7.3" } } diff --git a/packages/web/src/App.tsx b/packages/web/src/App.tsx index 1b1f5e1..78e5646 100644 --- a/packages/web/src/App.tsx +++ b/packages/web/src/App.tsx @@ -1,21 +1,32 @@ +/* eslint-disable import/no-unresolved */ import { useCallback, useEffect, useState } from "react" import type { Vault, OnePassword } from "opvault.js" import { useIdleTimer } from "react-idle-timer/modern" import { VaultView } from "./pages/Vault" import { VaultPicker } from "./pages/VaultPicker" +import { Key, useStorage } from "./utils/localStorage" export const App: React.FC = () => { const [instance, setInstance] = useState() const [vault, setVault] = useState() + const [enableAutoLock] = useStorage(Key.ENABLE_AUTO_LOCK) + const [autolockAfter] = useStorage(Key.AUTO_LOCK_AFTER) + const onLock = useCallback(() => { vault?.lock() setVault(undefined) }, [vault]) + const onAutoLock = useCallback(() => { + if (enableAutoLock) { + onLock() + } + }, [onLock, enableAutoLock]) + const { reset, pause } = useIdleTimer({ - timeout: 60_000, - onIdle: onLock, + timeout: autolockAfter * 1000, + onIdle: onAutoLock, }) useEffect(() => { diff --git a/packages/web/src/components/ItemField.tsx b/packages/web/src/components/ItemField.tsx index c34458d..ff2a971 100644 --- a/packages/web/src/components/ItemField.tsx +++ b/packages/web/src/components/ItemField.tsx @@ -12,6 +12,7 @@ const Container: React.FC = styled.div` export const FieldTitle: React.FC = styled.div` font-size: 85%; margin-bottom: 3px; + user-select: none; ` export const ItemFieldView = memo<{ @@ -31,10 +32,13 @@ export const ItemFieldView = memo<{ ) }) +const hideIds = new Set(["use_desktop", "use_mobile", "use_html"]) +const hideNames = new Set(["remember"]) + export const ItemDetailsFieldView = memo<{ field: ItemField }>(({ field }) => { - if (field.value == null) { + if (field.value == null || hideIds.has(field.id!) || hideNames.has(field.name)) { return null } diff --git a/packages/web/src/components/ItemFieldValue.tsx b/packages/web/src/components/ItemFieldValue.tsx index 14fbfd9..6a78015 100644 --- a/packages/web/src/components/ItemFieldValue.tsx +++ b/packages/web/src/components/ItemFieldValue.tsx @@ -6,12 +6,23 @@ import { parseMonthYear } from "../utils" import { BigTextView } from "./BigTextView" import { ErrorBoundary } from "./ErrorBoundary" import { useItemFieldContextMenu } from "./ItemFieldContextMenu" +import { toast, ToastType } from "./Toast" -const Container = styled.div`` +const Container = styled.div` + cursor: pointer; + &:hover { + color: #6fa9ff; + text-decoration: underline; + } +` function useCopy(text: string) { return useCallback(() => { navigator.clipboard.writeText(text) + toast({ + type: ToastType.Secondary, + message: "Copied to clipboard.", + }) }, [text]) } @@ -38,6 +49,7 @@ const Password: React.FC<{ setShow(x => !x)} + onClick={onCopy} style={{ fontFamily: "var(--monospace)", ...(!show && { userSelect: "none" }), @@ -75,7 +87,9 @@ const TextView: React.FC<{ value: string }> = ({ value }) => { return ( <> - {value} + + {value} + Copier diff --git a/packages/web/src/components/Modal.tsx b/packages/web/src/components/Modal.tsx new file mode 100644 index 0000000..aaaae3d --- /dev/null +++ b/packages/web/src/components/Modal.tsx @@ -0,0 +1,71 @@ +import styled from "@emotion/styled" +import { useCallback } from "react" + +const ModalBackground = styled.div` + background: rgba(0, 0, 0, 0.6); + backdrop-filter: blur(1px); + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; +` +const ModalBackground2 = styled.div` + z-index: 2; + width: 100%; + position: fixed; + left: 0; + top: 0; + height: 100%; + display: flex; + align-items: center; +` +const ModalContainer = styled.div` + background: var(--page-background); + box-shadow: rgba(0, 0, 0, 0.25) 0px 14px 28px, rgba(0, 0, 0, 0.22) 0px 10px 10px; + border-radius: 5px; + max-width: 500px; + margin: 0 auto; +` +const ModalTitle = styled.div` + border-bottom: 1px solid var(--border-color); + padding: 10px 20px; + font-weight: 600; + text-align: center; +` +const ModalContent = styled.div` + padding: 15px 20px; +` + +export const Modal: React.FC<{ + show: boolean + title: string + onClose(): void +}> = ({ show, children, title, onClose }) => { + const onBackgroundClick = useCallback( + e => { + if (e.currentTarget === e.target) { + e.stopPropagation() + onClose() + } + }, + [onClose] + ) + + if (!show) { + return null + } + + return ( + <> + + + + {title} + {children} + + + + ) +} diff --git a/packages/web/src/components/Toast.tsx b/packages/web/src/components/Toast.tsx new file mode 100644 index 0000000..1d9e5db --- /dev/null +++ b/packages/web/src/components/Toast.tsx @@ -0,0 +1,69 @@ +import styled from "@emotion/styled" +import { useEffect, useState } from "react" + +export enum ToastType { + Regular = "regular", + Primary = "primary", + Secondary = "secondary", + Success = "success", + Danger = "danger", + Warning = "warning", + Info = "info", +} + +interface Message { + message: string + type: ToastType +} +interface InternalMessage extends Message { + opacity: number + id: number +} + +export let toast: (message: Message) => void + +const Container = styled.div`` +const ToastContainer = styled.div` + position: fixed; + bottom: 0; + right: 20px; + padding: 8px 12px; + border-radius: 5px; + box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 15%); + transition: opacity 1s ease-in-out, bottom 0.3s linear; +` + +let lastId = 0 + +export const Toast: React.FC = () => { + const [list, setList] = useState([]) + + useEffect(() => { + toast = message => { + const newId = ++lastId + setList(list => list.concat({ ...message, id: newId, opacity: 1 })) + setTimeout(() => { + setList(list => list.map(x => (x.id === newId ? { ...x, opacity: 0 } : x))) + }, 1000) + } + }, []) + + return ( + + {list.map((message, i, { length }) => ( + { + if (e.propertyName === "opacity") { + setList(list => list.filter(x => x.id !== message.id)) + } + }} + key={message.id} + style={{ opacity: message.opacity, bottom: 40 * (length - i) - 10 }} + className={`color-${message.type}`} + > + {message.message} + + ))} + + ) +} diff --git a/packages/web/src/i18n/index.tsx b/packages/web/src/i18n/index.tsx index 24e278a..976369a 100644 --- a/packages/web/src/i18n/index.tsx +++ b/packages/web/src/i18n/index.tsx @@ -8,20 +8,18 @@ import { useState, } from "react" import texts from "./texts.yml" +import { get, set, Key } from "../utils/localStorage" const categories = Object.keys(texts) const ALLOWED = new Set(["en", "fr"]) const SKIP_ITALIC = new Set(["zh", "ko", "ja"]) -const LOCALSTORAGE_KEY = "preferred-locale" function getLocaleFromStorage() { - try { - const key = localStorage.getItem(LOCALSTORAGE_KEY) - if (key && ALLOWED.has(key)) { - return key - } - } catch {} + const key = get(Key.PREFERRED_LOCALE) + if (key && ALLOWED.has(key)) { + return key + } } function getNavigatorLocale() { @@ -81,9 +79,8 @@ export function useTranslate() { export const LocaleContextProvider = memo(({ children }) => { const [locale, setLocale] = useState(getEnvLocale) useEffect(() => { - try { - localStorage.setItem(LOCALSTORAGE_KEY, locale) - } catch {} + set(Key.PREFERRED_LOCALE, locale) + document.documentElement.lang = locale }, [locale]) const value = useMemo(() => ({ locale, setLocale }), [locale]) return {children} diff --git a/packages/web/src/index.scss b/packages/web/src/index.scss index c7d17ed..39bfb49 100644 --- a/packages/web/src/index.scss +++ b/packages/web/src/index.scss @@ -10,8 +10,8 @@ body { margin: 0; overflow: hidden; font-size: 15px; - font-family: -apple-system, BlinkMacSystemFont, system-ui, "Roboto", "Oxygen", "Ubuntu", - "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + font-family: -apple-system, BlinkMacSystemFont, system-ui, "Roboto", "Oxygen", + "Cantarell", "Droid Sans", "Helvetica Neue", "Noto Sans CJK JP", sans-serif; } :root { --page-background: #fff; @@ -66,22 +66,49 @@ input { font-family: inherit; font-size: inherit; } -input[type="search"], -input[type="input"], -input[type="password"] { +@mixin input { @include scheme(background-color, #fff, #2d2d2d); border-radius: 6px; border: 1px solid; @include scheme(border-color, #cdc7c2, #1b1b1b); - color: inherit; - outline: none; - padding: 7px 8px; transition: 0.1s; &:focus { @include scheme(border-color, #3584e480, #15539e); } } +input[type="search"], +input[type="input"], +input[type="number"], +input[type="password"] { + @include input; + border-radius: 6px; + border: 1px solid; + color: inherit; + outline: none; + padding: 7px 8px; + &:disabled { + cursor: not-allowed; + } +} +input[type="checkbox" i] { + @include input; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), + inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05); + padding: 9px; + border-radius: 3px; + appearance: none; + position: relative; + &:checked:after { + content: "\2714"; + font-size: 15px; + position: absolute; + top: 0px; + left: 3px; + color: var(--color); + } +} + button, select { @include scheme(background-color, #f6f5f4, #333); @@ -110,3 +137,34 @@ button[type="submit"] { select { padding: 5px 10px; } + +// #region color +.color-primary, +.color-secondary, +.color-info, +.color-danger { + @include scheme(color, #fff, #fafafa); +} +.color-success, +.color-warning { + @include scheme(color, #000, #111); +} +.color-primary { + @include scheme(background-color, #0b5ed7, #375a7f); +} +.color-secondary { + @include scheme(background-color, #6c757d, #626262); +} +.color-success { + @include scheme(background-color, #198754, #00bc8c); +} +.color-info { + @include scheme(background-color, #0dcaf0, #17a2b8); +} +.color-warning { + @include scheme(background-color, #ffc107, #f39c12); +} +.color-danger { + @include scheme(background-color, #dc3545, #e74c3c); +} +// #endregion diff --git a/packages/web/src/main.tsx b/packages/web/src/main.tsx index 42facb0..a782149 100644 --- a/packages/web/src/main.tsx +++ b/packages/web/src/main.tsx @@ -3,6 +3,7 @@ import { render } from "react-dom" import { App } from "./App" import { LocaleContextProvider } from "./i18n" import { SideEffect } from "./SideEffect" +import { Toast } from "./components/Toast" import "./index.scss" if (navigator.platform === "MacIntel") { @@ -15,6 +16,7 @@ const Root: React.FC = () => ( + ) diff --git a/packages/web/src/pages/Vault.tsx b/packages/web/src/pages/Vault.tsx index 2b2c4fc..27d97ad 100644 --- a/packages/web/src/pages/Vault.tsx +++ b/packages/web/src/pages/Vault.tsx @@ -4,19 +4,54 @@ import type { Vault, Item } from "opvault.js" import { Category } from "opvault.js" import { FiLock } from "react-icons/fi" import { IoSearch } from "react-icons/io5" +import { Si1Password } from "react-icons/si" +import { BsGear } from "react-icons/bs" import { ItemList } from "../components/ItemList" import { ItemView } from "../components/Item" import { reactIconClass } from "../components/CategoryIcon" import { useTranslate } from "../i18n/index" import { scrollbar } from "../styles" +import { Settings } from "../settings" const Container = styled.div` display: flex; height: calc(100vh - var(--titlebar-height)); ` +const TabContainer = styled.div` + border-right: 1px solid var(--border-color); + display: flex; + flex-direction: column; + width: 55px; + overflow: hidden; + padding-bottom: 5px; + @media (prefers-color-scheme: dark) { + background: #222; + border-right-color: transparent; + } + &&::-webkit-scrollbar { + display: none; + } +` +const TabButton = styled.button<{ active?: boolean }>` + align-items: center; + background: ${p => (p.active ? "var(--selected-background)" : "transparent")}; + border-radius: ${p => (p.active ? 0 : 3)}px; + border: transparent; + box-shadow: none; + display: inline-flex; + margin-bottom: 5px; + font-size: 22px; + padding: 10px 14px; + @media (prefers-color-scheme: dark) { + --selected-background: #1c1c1c; + } +` +const TabContainerMain = styled.div` + flex-grow: 1; +` const ListContainer = styled.div` border-right: 1px solid var(--border-color); - width: 300px; + width: 350px; margin-right: 10px; overflow-y: scroll; overflow-x: hidden; @@ -33,15 +68,13 @@ const SearchContainer = styled.div` text-align: center; position: relative; flex-grow: 1; + margin: 10px 0; + margin-right: 10px; ` const SortContainer = styled.div` margin: 10px 10px; ` -const LockButton = styled.button` - && { - padding: 5px 10px; - } -` + const SearchInput = styled.input` --margin: 10px; width: calc(100% - var(--margin) * 2 + 9px); @@ -64,6 +97,7 @@ export const VaultView: React.FC<{ vault: Vault; onLock(): void }> = ({ vault, onLock, }) => { + const [showSettings, setShowSettings] = useState(false) const t = useTranslate() const [items, setItems] = useState(() => []) const [item, setItem] = useState() @@ -115,20 +149,29 @@ export const VaultView: React.FC<{ vault: Vault; onLock(): void }> = ({ return ( + + + + + + + + + + setShowSettings(true)}> + + + + -
- - - - - setSearch(e.currentTarget.value)} - /> - - -
+ + setSearch(e.currentTarget.value)} + /> + + setLocale(e.currentTarget.value)} + > + + + + + + + + + {t.options.enable_autolock} + + + setEnableAutoLock(e.target.checked)} + /> + setAutolockAfter(e.target.valueAsNumber)} + disabled={!enableAutoLock} + /> + + {autolockAfter} + {t.noun.seconds} + + + + + ) +} diff --git a/packages/web/src/utils/localStorage.ts b/packages/web/src/utils/localStorage.ts index e589573..176584e 100644 --- a/packages/web/src/utils/localStorage.ts +++ b/packages/web/src/utils/localStorage.ts @@ -1,26 +1,67 @@ -export const enum Key { - LAST_VAULT_PATH = "lastVaultPath", +import { useCallback, useEffect, useState } from "react" + +export enum Key { + LAST_VAULT_PATH = "app.state.last_vault_path", + PREFERRED_LOCALE = "app.config.locale", + ENABLE_AUTO_LOCK = "app.config.enable_auto_lock", + AUTO_LOCK_AFTER = "app.config.auto_lock_after", } interface StoredData { [Key.LAST_VAULT_PATH]: string + [Key.PREFERRED_LOCALE]: string + [Key.ENABLE_AUTO_LOCK]: boolean + [Key.AUTO_LOCK_AFTER]: number } -export function get(key: K) { +const events = new Map(Object.values(Key).map(key => [key, new Set()])) as { + get(key: K): Set<(value: StoredData[Key]) => void> +} + +export function useStorage(key: K) { + const [state, setState] = useState(get(key)!) + useEffect(() => { + events.get(key).add(setState as any) + return () => { + events.get(key).delete(setState as any) + } + }, [key]) + const setState2 = useCallback( + (value: StoredData[K]) => { + set(key, value) + }, + [key] + ) + + return [state, setState2] as const +} + +export function get(key: K): StoredData[K] | undefined { try { const value = localStorage.getItem(key) return value == null ? undefined : (JSON.parse(value!) as StoredData[K]) } catch {} } -export function set(key: K, value: StoredData[K]) { +export function set(key: K, value: StoredData[K]) { try { localStorage.setItem(key, JSON.stringify(value)) - } catch {} + events.get(key).forEach(fn => fn(value)) + } catch (e) { + console.error(e) + } } -export function remove(key: keyof StoredData) { +export function remove(key: Key) { try { localStorage.removeItem(key) } catch {} } + +const defaults: typeof set = (key, value) => { + if (!(key in localStorage)) { + set(key, value) + } +} +defaults(Key.ENABLE_AUTO_LOCK, true) +defaults(Key.AUTO_LOCK_AFTER, 120) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f2f1bb..5dcf2ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,73 +4,73 @@ importers: .: specifiers: - '@types/chai': ^4.2.22 + '@types/chai': ^4.3.0 '@types/chai-as-promised': ^7.1.4 '@types/fs-extra': ^9.0.13 '@types/mocha': github:whitecolor/mocha-types#da22474cf43f48a56c86f8c23a5a0ea36e295768 '@types/node': ^16.11.9 '@types/sinon': ^10.0.6 - '@types/sinon-chai': ^3.2.5 + '@types/sinon-chai': ^3.2.6 '@types/wicg-file-system-access': ^2020.9.4 - '@typescript-eslint/eslint-plugin': 5.4.0 - '@typescript-eslint/parser': 5.4.0 + '@typescript-eslint/eslint-plugin': 5.7.0 + '@typescript-eslint/parser': 5.7.0 chai: ^4.3.4 chai-as-promised: ^7.1.1 chalk: ^4.1.2 - eslint: 8.3.0 + eslint: 8.5.0 eslint-config-prettier: 8.3.0 eslint-import-resolver-typescript: 2.5.0 eslint-plugin-import: 2.25.3 eslint-plugin-react: 7.27.1 eslint-plugin-react-hooks: 4.3.0 fs-extra: ^10.0.0 - marked: ^4.0.4 + marked: ^4.0.8 mocha: ^9.1.3 mochawesome: ^7.0.1 - prettier: ^2.4.1 + prettier: ^2.5.1 react: ^17.0.2 react-dom: ^17.0.2 - sass: ^1.43.4 + sass: ^1.45.0 sinon: ^12.0.1 sinon-chai: ^3.7.0 ts-node: ^10.4.0 tsconfig-paths: ^3.12.0 tslib: ^2.3.1 - typescript: ^4.5.2 + typescript: ^4.5.4 devDependencies: - '@types/chai': 4.2.22 + '@types/chai': 4.3.0 '@types/chai-as-promised': 7.1.4 '@types/fs-extra': 9.0.13 '@types/mocha': github.com/whitecolor/mocha-types/da22474cf43f48a56c86f8c23a5a0ea36e295768 '@types/node': 16.11.9 '@types/sinon': 10.0.6 - '@types/sinon-chai': 3.2.5 + '@types/sinon-chai': 3.2.6 '@types/wicg-file-system-access': 2020.9.4 - '@typescript-eslint/eslint-plugin': 5.4.0_5c8ff4cecd5a55e744866c0654edac32 - '@typescript-eslint/parser': 5.4.0_eslint@8.3.0+typescript@4.5.2 + '@typescript-eslint/eslint-plugin': 5.7.0_a6f6159640504abdd3de077f8bcadb33 + '@typescript-eslint/parser': 5.7.0_eslint@8.5.0+typescript@4.5.4 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 chalk: 4.1.2 - eslint: 8.3.0 - eslint-config-prettier: 8.3.0_eslint@8.3.0 - eslint-import-resolver-typescript: 2.5.0_a32f4f7b9ceb1e357b5ea9f682f0210a - eslint-plugin-import: 2.25.3_eslint@8.3.0 - eslint-plugin-react: 7.27.1_eslint@8.3.0 - eslint-plugin-react-hooks: 4.3.0_eslint@8.3.0 + eslint: 8.5.0 + eslint-config-prettier: 8.3.0_eslint@8.5.0 + eslint-import-resolver-typescript: 2.5.0_f385d671d5f1c72a868db745a891bc1f + eslint-plugin-import: 2.25.3_eslint@8.5.0 + eslint-plugin-react: 7.27.1_eslint@8.5.0 + eslint-plugin-react-hooks: 4.3.0_eslint@8.5.0 fs-extra: 10.0.0 - marked: 4.0.4 + marked: 4.0.8 mocha: 9.1.3 mochawesome: 7.0.1_mocha@9.1.3 - prettier: 2.4.1 + prettier: 2.5.1 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - sass: 1.43.4 + sass: 1.45.0 sinon: 12.0.1 sinon-chai: 3.7.0_chai@4.3.4+sinon@12.0.1 - ts-node: 10.4.0_6d6d60348da931c98bc2cf01b7fcd2a7 + ts-node: 10.4.0_6cc1060505bd4c6ac58c4b67188c6af9 tsconfig-paths: 3.12.0 tslib: 2.3.1 - typescript: 4.5.2 + typescript: 4.5.4 packages/adapters: specifiers: @@ -83,37 +83,37 @@ importers: '@rollup/plugin-json': ^4.1.0 '@rollup/plugin-replace': ^3.0.0 buffer: ^6.0.3 - prettier: ^2.4.1 - rollup: ^2.60.1 + prettier: ^2.5.1 + rollup: ^2.61.1 rollup-plugin-ts: ^2.0.4 tiny-invariant: 1.2.0 tslib: 2.3.1 - typedoc: ^0.22.9 + typedoc: ^0.22.10 dependencies: buffer: 6.0.3 tiny-invariant: 1.2.0 tslib: 2.3.1 devDependencies: - '@rollup/plugin-json': 4.1.0_rollup@2.60.1 - '@rollup/plugin-replace': 3.0.0_rollup@2.60.1 - prettier: 2.4.1 - rollup: 2.60.1 - rollup-plugin-ts: 2.0.4_rollup@2.60.1+typescript@4.5.2 - typedoc: 0.22.9_typescript@4.5.2 + '@rollup/plugin-json': 4.1.0_rollup@2.61.1 + '@rollup/plugin-replace': 3.0.0_rollup@2.61.1 + prettier: 2.5.1 + rollup: 2.61.1 + rollup-plugin-ts: 2.0.4_rollup@2.61.1+typescript@4.5.4 + typedoc: 0.22.10_typescript@4.5.4 packages/web: specifiers: - '@emotion/css': ^11.5.0 - '@emotion/react': ^11.6.0 + '@emotion/css': ^11.7.1 + '@emotion/react': ^11.7.1 '@emotion/styled': ^11.6.0 '@rollup/plugin-yaml': ^3.1.0 - '@types/react': ^17.0.36 + '@types/react': ^17.0.37 '@types/react-dom': ^17.0.11 - '@vitejs/plugin-react': ^1.1.0 + '@vitejs/plugin-react': ^1.1.3 buffer: ^6.0.3 - electron: ^16.0.1 + electron: ^16.0.5 electron-builder: ^22.14.5 - esbuild: ^0.13.15 + esbuild: ^0.14.5 js-yaml: ^4.1.0 opvault.js: '*' path-browserify: ^1.0.1 @@ -121,21 +121,21 @@ importers: react-dom: ^17.0.2 react-icons: ^4.3.1 react-idle-timer: 4.6.4 - sass: ^1.43.4 - typescript: ^4.5.2 - vite: ^2.6.14 + sass: ^1.45.0 + typescript: ^4.5.4 + vite: ^2.7.3 devDependencies: - '@emotion/css': 11.5.0 - '@emotion/react': 11.6.0_bb8e79a4a12a744c3dc48cdef194d579 - '@emotion/styled': 11.6.0_46e9d276190d534487bb934311d09b96 + '@emotion/css': 11.7.1 + '@emotion/react': 11.7.1_cfedea9b3ed0faf0dded75c187406c5e + '@emotion/styled': 11.6.0_f08cba2053577b4854d3e19df4a0b904 '@rollup/plugin-yaml': 3.1.0 - '@types/react': 17.0.36 + '@types/react': 17.0.37 '@types/react-dom': 17.0.11 - '@vitejs/plugin-react': 1.1.0 + '@vitejs/plugin-react': 1.1.3 buffer: 6.0.3 - electron: 16.0.1 + electron: 16.0.5 electron-builder: 22.14.5 - esbuild: 0.13.15 + esbuild: 0.14.5 js-yaml: 4.1.0 opvault.js: link:../opvault.js path-browserify: 1.0.1 @@ -143,9 +143,9 @@ importers: react-dom: 17.0.2_react@17.0.2 react-icons: 4.3.1_react@17.0.2 react-idle-timer: 4.6.4_react-dom@17.0.2+react@17.0.2 - sass: 1.43.4 - typescript: 4.5.2 - vite: 2.6.14_sass@1.43.4 + sass: 1.45.0 + typescript: 4.5.4 + vite: 2.7.3_sass@1.45.0 packages/web/dist: specifiers: {} @@ -542,38 +542,47 @@ packages: stylis: 4.0.10 dev: true - /@emotion/cache/11.5.0: - resolution: {integrity: sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==} + /@emotion/babel-plugin/11.7.1: + resolution: {integrity: sha512-K3/6Y+J/sIAjplf3uIteWLhPuOyuMNnE+iyYnTF/m294vc6IL90kTHp7y8ldZYbpKlP17rpOWDKM9DvTcrOmNQ==} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: + '@babel/helper-module-imports': 7.16.0 + '@babel/plugin-syntax-jsx': 7.16.0 + '@babel/runtime': 7.15.4 + '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.5 - '@emotion/sheet': 1.0.3 - '@emotion/utils': 1.0.0 - '@emotion/weak-memoize': 0.2.5 - stylis: 4.0.10 + '@emotion/serialize': 1.0.2 + babel-plugin-macros: 2.8.0 + convert-source-map: 1.8.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.0.13 dev: true - /@emotion/cache/11.6.0: - resolution: {integrity: sha512-ElbsWY1KMwEowkv42vGo0UPuLgtPYfIs9BxxVrmvsaJVvktknsHYYlx5NQ5g6zLDcOTyamlDc7FkRg2TAcQDKQ==} + /@emotion/cache/11.7.1: + resolution: {integrity: sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==} dependencies: '@emotion/memoize': 0.7.5 '@emotion/sheet': 1.1.0 '@emotion/utils': 1.0.0 '@emotion/weak-memoize': 0.2.5 - stylis: 4.0.10 + stylis: 4.0.13 dev: true - /@emotion/css/11.5.0: - resolution: {integrity: sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==} + /@emotion/css/11.7.1: + resolution: {integrity: sha512-RUUgPlMZunlc7SE5A6Hg+VWRzb2cU6O9xlV78KCFgcnl25s7Qz/20oQg71iKudpLqk7xj0vhbJlwcJJMT0BOZg==} peerDependencies: '@babel/core': ^7.0.0 peerDependenciesMeta: '@babel/core': optional: true dependencies: - '@emotion/babel-plugin': 11.3.0 - '@emotion/cache': 11.5.0 + '@emotion/babel-plugin': 11.7.1 + '@emotion/cache': 11.7.1 '@emotion/serialize': 1.0.2 - '@emotion/sheet': 1.0.3 + '@emotion/sheet': 1.1.0 '@emotion/utils': 1.0.0 dev: true @@ -591,8 +600,8 @@ packages: resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} dev: true - /@emotion/react/11.6.0_bb8e79a4a12a744c3dc48cdef194d579: - resolution: {integrity: sha512-23MnRZFBN9+D1lHXC5pD6z4X9yhPxxtHr6f+iTGz6Fv6Rda0GdefPrsHL7otsEf+//7uqCdT5QtHeRxHCERzuw==} + /@emotion/react/11.7.1_cfedea9b3ed0faf0dded75c187406c5e: + resolution: {integrity: sha512-DV2Xe3yhkF1yT4uAUoJcYL1AmrnO5SVsdfvu+fBuS7IbByDeTVx9+wFmvx9Idzv7/78+9Mgx2Hcmr7Fex3tIyw==} peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' @@ -604,12 +613,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.15.4 - '@emotion/cache': 11.6.0 + '@emotion/cache': 11.7.1 '@emotion/serialize': 1.0.2 '@emotion/sheet': 1.1.0 '@emotion/utils': 1.0.0 '@emotion/weak-memoize': 0.2.5 - '@types/react': 17.0.36 + '@types/react': 17.0.37 hoist-non-react-statics: 3.3.2 react: 17.0.2 dev: true @@ -624,15 +633,11 @@ packages: csstype: 3.0.9 dev: true - /@emotion/sheet/1.0.3: - resolution: {integrity: sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==} - dev: true - /@emotion/sheet/1.1.0: resolution: {integrity: sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==} dev: true - /@emotion/styled/11.6.0_46e9d276190d534487bb934311d09b96: + /@emotion/styled/11.6.0_f08cba2053577b4854d3e19df4a0b904: resolution: {integrity: sha512-mxVtVyIOTmCAkFbwIp+nCjTXJNgcz4VWkOYQro87jE2QBTydnkiYusMrRGFtzuruiGK4dDaNORk4gH049iiQuw==} peerDependencies: '@babel/core': ^7.0.0 @@ -648,10 +653,10 @@ packages: '@babel/runtime': 7.15.4 '@emotion/babel-plugin': 11.3.0 '@emotion/is-prop-valid': 1.1.1 - '@emotion/react': 11.6.0_bb8e79a4a12a744c3dc48cdef194d579 + '@emotion/react': 11.7.1_cfedea9b3ed0faf0dded75c187406c5e '@emotion/serialize': 1.0.2 '@emotion/utils': 1.0.0 - '@types/react': 17.0.36 + '@types/react': 17.0.37 react: 17.0.2 dev: true @@ -667,13 +672,13 @@ packages: resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} dev: true - /@eslint/eslintrc/1.0.4: - resolution: {integrity: sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==} + /@eslint/eslintrc/1.0.5: + resolution: {integrity: sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.2 - espree: 9.1.0 + espree: 9.2.0 globals: 13.9.0 ignore: 4.0.6 import-fresh: 3.2.1 @@ -684,19 +689,19 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.6.0: - resolution: {integrity: sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==} + /@humanwhocodes/config-array/0.9.2: + resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.0 + '@humanwhocodes/object-schema': 1.2.1 debug: 4.3.2 minimatch: 3.0.4 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/object-schema/1.2.0: - resolution: {integrity: sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==} + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true /@malept/cross-spawn-promise/1.1.1: @@ -743,23 +748,23 @@ packages: fastq: 1.8.0 dev: true - /@rollup/plugin-json/4.1.0_rollup@2.60.1: + /@rollup/plugin-json/4.1.0_rollup@2.61.1: resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.60.1 - rollup: 2.60.1 + '@rollup/pluginutils': 3.1.0_rollup@2.61.1 + rollup: 2.61.1 dev: true - /@rollup/plugin-replace/3.0.0_rollup@2.60.1: + /@rollup/plugin-replace/3.0.0_rollup@2.61.1: resolution: {integrity: sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.60.1 + '@rollup/pluginutils': 3.1.0_rollup@2.61.1 magic-string: 0.25.7 - rollup: 2.60.1 + rollup: 2.61.1 dev: true /@rollup/plugin-yaml/3.1.0: @@ -784,7 +789,7 @@ packages: picomatch: 2.3.0 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.60.1: + /@rollup/pluginutils/3.1.0_rollup@2.61.1: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -793,7 +798,7 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.0 - rollup: 2.60.1 + rollup: 2.61.1 dev: true /@rollup/pluginutils/4.1.1: @@ -865,19 +870,11 @@ packages: /@types/chai-as-promised/7.1.4: resolution: {integrity: sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==} dependencies: - '@types/chai': 4.2.20 + '@types/chai': 4.3.0 dev: true - /@types/chai/4.2.20: - resolution: {integrity: sha512-E121rHk/4BlcEwANZOwcHl8L/Sl0zyIFXJoyggXkl7FCT/4MTf5u25f+qiphe0V5ELaFIkCptgvbf4whCJUVMA==} - dev: true - - /@types/chai/4.2.21: - resolution: {integrity: sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==} - dev: true - - /@types/chai/4.2.22: - resolution: {integrity: sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ==} + /@types/chai/4.3.0: + resolution: {integrity: sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==} dev: true /@types/debug/4.1.7: @@ -954,11 +951,11 @@ packages: /@types/react-dom/17.0.11: resolution: {integrity: sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==} dependencies: - '@types/react': 17.0.36 + '@types/react': 17.0.37 dev: true - /@types/react/17.0.36: - resolution: {integrity: sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw==} + /@types/react/17.0.37: + resolution: {integrity: sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==} dependencies: '@types/prop-types': 15.7.4 '@types/scheduler': 0.16.2 @@ -973,10 +970,10 @@ packages: resolution: {integrity: sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==} dev: true - /@types/sinon-chai/3.2.5: - resolution: {integrity: sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==} + /@types/sinon-chai/3.2.6: + resolution: {integrity: sha512-Z57LprQ+yOQNu9d6mWdHNvnmncPXzDWGSeLj+8L075/QahToapC4Q13zAFRVKV4clyBmdJ5gz4xBfVkOso5lXw==} dependencies: - '@types/chai': 4.2.21 + '@types/chai': 4.3.0 '@types/sinon': 10.0.6 dev: true @@ -1010,8 +1007,8 @@ packages: '@types/yargs-parser': 20.2.1 dev: true - /@typescript-eslint/eslint-plugin/5.4.0_5c8ff4cecd5a55e744866c0654edac32: - resolution: {integrity: sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==} + /@typescript-eslint/eslint-plugin/5.7.0_a6f6159640504abdd3de077f8bcadb33: + resolution: {integrity: sha512-8RTGBpNn5a9M628wBPrCbJ+v3YTEOE2qeZb7TDkGKTDXSj36KGRg92SpFFaR/0S3rSXQxM0Og/kV9EyadsYSBg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1021,41 +1018,41 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 5.4.0_eslint@8.3.0+typescript@4.5.2 - '@typescript-eslint/parser': 5.4.0_eslint@8.3.0+typescript@4.5.2 - '@typescript-eslint/scope-manager': 5.4.0 + '@typescript-eslint/experimental-utils': 5.7.0_eslint@8.5.0+typescript@4.5.4 + '@typescript-eslint/parser': 5.7.0_eslint@8.5.0+typescript@4.5.4 + '@typescript-eslint/scope-manager': 5.7.0 debug: 4.3.2 - eslint: 8.3.0 + eslint: 8.5.0 functional-red-black-tree: 1.0.1 ignore: 5.1.8 regexpp: 3.2.0 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.2 - typescript: 4.5.2 + tsutils: 3.21.0_typescript@4.5.4 + typescript: 4.5.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.4.0_eslint@8.3.0+typescript@4.5.2: - resolution: {integrity: sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==} + /@typescript-eslint/experimental-utils/5.7.0_eslint@8.5.0+typescript@4.5.4: + resolution: {integrity: sha512-u57eZ5FbEpzN5kSjmVrSesovWslH2ZyNPnaXQMXWgH57d5+EVHEt76W75vVuI9qKZ5BMDKNfRN+pxcPEjQjb2A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' dependencies: '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.4.0 - '@typescript-eslint/types': 5.4.0 - '@typescript-eslint/typescript-estree': 5.4.0_typescript@4.5.2 - eslint: 8.3.0 + '@typescript-eslint/scope-manager': 5.7.0 + '@typescript-eslint/types': 5.7.0 + '@typescript-eslint/typescript-estree': 5.7.0_typescript@4.5.4 + eslint: 8.5.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.3.0 + eslint-utils: 3.0.0_eslint@8.5.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.4.0_eslint@8.3.0+typescript@4.5.2: - resolution: {integrity: sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==} + /@typescript-eslint/parser/5.7.0_eslint@8.5.0+typescript@4.5.4: + resolution: {integrity: sha512-m/gWCCcS4jXw6vkrPQ1BjZ1vomP01PArgzvauBqzsoZ3urLbsRChexB8/YV8z9HwE3qlJM35FxfKZ1nfP/4x8g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1064,31 +1061,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.4.0 - '@typescript-eslint/types': 5.4.0 - '@typescript-eslint/typescript-estree': 5.4.0_typescript@4.5.2 + '@typescript-eslint/scope-manager': 5.7.0 + '@typescript-eslint/types': 5.7.0 + '@typescript-eslint/typescript-estree': 5.7.0_typescript@4.5.4 debug: 4.3.2 - eslint: 8.3.0 - typescript: 4.5.2 + eslint: 8.5.0 + typescript: 4.5.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.4.0: - resolution: {integrity: sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==} + /@typescript-eslint/scope-manager/5.7.0: + resolution: {integrity: sha512-7mxR520DGq5F7sSSgM0HSSMJ+TFUymOeFRMfUfGFAVBv8BR+Jv1vHgAouYUvWRZeszVBJlLcc9fDdktxb5kmxA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.4.0 - '@typescript-eslint/visitor-keys': 5.4.0 + '@typescript-eslint/types': 5.7.0 + '@typescript-eslint/visitor-keys': 5.7.0 dev: true - /@typescript-eslint/types/5.4.0: - resolution: {integrity: sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==} + /@typescript-eslint/types/5.7.0: + resolution: {integrity: sha512-5AeYIF5p2kAneIpnLFve8g50VyAjq7udM7ApZZ9JYjdPjkz0LvODfuSHIDUVnIuUoxafoWzpFyU7Sqbxgi79mA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.4.0_typescript@4.5.2: - resolution: {integrity: sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==} + /@typescript-eslint/typescript-estree/5.7.0_typescript@4.5.4: + resolution: {integrity: sha512-aO1Ql+izMrTnPj5aFFlEJkpD4jRqC4Gwhygu2oHK2wfVQpmOPbyDSveJ+r/NQo+PWV43M6uEAeLVbTi09dFLhg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1096,23 +1093,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.4.0 - '@typescript-eslint/visitor-keys': 5.4.0 + '@typescript-eslint/types': 5.7.0 + '@typescript-eslint/visitor-keys': 5.7.0 debug: 4.3.2 globby: 11.0.4 is-glob: 4.0.3 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.2 - typescript: 4.5.2 + tsutils: 3.21.0_typescript@4.5.4 + typescript: 4.5.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys/5.4.0: - resolution: {integrity: sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==} + /@typescript-eslint/visitor-keys/5.7.0: + resolution: {integrity: sha512-hdohahZ4lTFcglZSJ3DGdzxQHBSxsLVqHzkiOmKi7xVAWC4y2c1bIMKmPJSrA4aOEoRUPOKQ87Y/taC7yVHpFg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.4.0 + '@typescript-eslint/types': 5.7.0 eslint-visitor-keys: 3.1.0 dev: true @@ -1120,8 +1117,8 @@ packages: resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} dev: true - /@vitejs/plugin-react/1.1.0: - resolution: {integrity: sha512-hRAqG6/lYf0mfDm/1r0U81vwPWMpyi87e4bFK+LvVQQeIgdh6TwvfuF20waenSGSumz6JH2bfk9DbxdgDLRp/w==} + /@vitejs/plugin-react/1.1.3: + resolution: {integrity: sha512-xv8QujX/uR4ti8qpt0hMriM2bdpxX4jm4iU6GAZfCwHjh/ewkX/8DJgnmQpE0HSJmgz8dixyUnRJKi2Pf1nNoQ==} engines: {node: '>=12.0.0'} dependencies: '@babel/core': 7.16.0 @@ -1707,14 +1704,14 @@ packages: engines: {node: '>=0.10.0'} dev: true - /compatfactory/0.0.12_typescript@4.5.2: + /compatfactory/0.0.12_typescript@4.5.4: resolution: {integrity: sha512-DD5S1s2mIoVIpYfhCqNZPbOFlt9JDLkXc4d8fAZaeWWIsl7w3bmVS0HNlUkU2SB6iZOdXOjYZgeJZClmL1xnRg==} engines: {node: '>=10.0.0'} peerDependencies: typescript: '>=3.x || >= 4.x' dependencies: helpertypes: 0.0.17 - typescript: 4.5.2 + typescript: 4.5.4 dev: true /concat-map/0.0.1: @@ -2066,8 +2063,8 @@ packages: resolution: {integrity: sha512-UjoECdcOYIVzWmrbtNnYpPrDuu+RtiO5W08Vdbid9ydGQMSdnqtJUtvOqQEAVQqpoXN9kSW9YnQufvzLQMYQOw==} dev: true - /electron/16.0.1: - resolution: {integrity: sha512-6TSDBcoKGgmKL/+W+LyaXidRVeRl1V4I81ZOWcqsVksdTMfM4AlxTgfaoYdK/nUhqBrUtuPDcqOyJE6Bc4qMpw==} + /electron/16.0.5: + resolution: {integrity: sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==} engines: {node: '>= 8.6'} hasBin: true requiresBuild: true @@ -2161,6 +2158,14 @@ packages: dev: true optional: true + /esbuild-android-arm64/0.14.5: + resolution: {integrity: sha512-Sl6ysm7OAZZz+X3Mv3tOPhjMuSxNmztgoXH4ZZ3Yhbje5emEY6qiTnv3vBSljDlUl/yGaIjqC44qlj8s8G71xA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-64/0.13.15: resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==} cpu: [x64] @@ -2169,6 +2174,14 @@ packages: dev: true optional: true + /esbuild-darwin-64/0.14.5: + resolution: {integrity: sha512-VHZl23sM9BOZXcLxk1vTYls8TCAY+/3llw9vHKIWAHDHzBBOlVv26ORK8gnStNMqTjCSGSMoq4T5jOZf2WrJPQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-arm64/0.13.15: resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==} cpu: [arm64] @@ -2177,6 +2190,14 @@ packages: dev: true optional: true + /esbuild-darwin-arm64/0.14.5: + resolution: {integrity: sha512-ugPOLgEQPoPLSqAFBajaczt+lcbUZR+V2fby3572h5jf/kFV6UL8LAZ1Ze58hcbKwfvbh4C09kp0PhqPgXKwOg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-64/0.13.15: resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==} cpu: [x64] @@ -2185,6 +2206,14 @@ packages: dev: true optional: true + /esbuild-freebsd-64/0.14.5: + resolution: {integrity: sha512-uP0yOixSHF505o/Kzq9e4bvZblCZp9GGx+a7enLOVSuvIvLmtj2yhZLRPGfbVNkPJXktTKNRAnNGkXHl53M6sw==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-arm64/0.13.15: resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==} cpu: [arm64] @@ -2193,6 +2222,14 @@ packages: dev: true optional: true + /esbuild-freebsd-arm64/0.14.5: + resolution: {integrity: sha512-M99NPu8hlirFo6Fgx0WfX6XxUFdGclUNv3MyyfDtTdNYbccMESwLSACGpE7HvJKWscdjaqajeMu2an9adGNfCw==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-32/0.13.15: resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==} cpu: [ia32] @@ -2201,6 +2238,14 @@ packages: dev: true optional: true + /esbuild-linux-32/0.14.5: + resolution: {integrity: sha512-hfqln4yb/jf/vPvI/A6aCvpIzqF3PdDmrKiikTohEUuRtvEZz234krtNwEAw5ssCue4NX8BJqrMpCTAHOl3LQw==} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-64/0.13.15: resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==} cpu: [x64] @@ -2209,6 +2254,14 @@ packages: dev: true optional: true + /esbuild-linux-64/0.14.5: + resolution: {integrity: sha512-T+OuYPlhytjj5DsvjUXizNjbV+/IrZiaDc9SNUfqiUOXHu0URFqchjhPVbBiBnWykCMJFB6pqNap2Oxth4iuYw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm/0.13.15: resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==} cpu: [arm] @@ -2217,6 +2270,14 @@ packages: dev: true optional: true + /esbuild-linux-arm/0.14.5: + resolution: {integrity: sha512-5b10jKJ3lU4BUchOw9TgRResu8UZJf8qVjAzV5muHedonCfBzClGTT4KCNuOcLTJomH3wz6gNVJt1AxMglXnJg==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm64/0.13.15: resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==} cpu: [arm64] @@ -2225,6 +2286,14 @@ packages: dev: true optional: true + /esbuild-linux-arm64/0.14.5: + resolution: {integrity: sha512-ANOzoaH4kfbhEZT0EGY9g1tsZhDA+I0FRwBsj7D8pCU900pXF/l8YAOy5jWFQIb3vjG5+orFc5SqSzAKCisvTQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-mips64le/0.13.15: resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==} cpu: [mips64el] @@ -2233,6 +2302,14 @@ packages: dev: true optional: true + /esbuild-linux-mips64le/0.14.5: + resolution: {integrity: sha512-sSmGfOUNNB2Nd3tzp1RHSxiJmM5/RUIEP5aAtH+PpOP7FPp15Jcfwq7UNBJ82KLN3SJcwhUeEfcCaUFBzbTKxg==} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-ppc64le/0.13.15: resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==} cpu: [ppc64] @@ -2241,6 +2318,14 @@ packages: dev: true optional: true + /esbuild-linux-ppc64le/0.14.5: + resolution: {integrity: sha512-usfQrVVIQcpuc/U2NWc7/Ry+m622v+PjJ5eErNPdjWBPlcvD6kXaBTv94uQkVzZOHX3uYqprRrOjseed9ApSYA==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-netbsd-64/0.13.15: resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==} cpu: [x64] @@ -2249,6 +2334,14 @@ packages: dev: true optional: true + /esbuild-netbsd-64/0.14.5: + resolution: {integrity: sha512-Q5KpvPZcPnNEaTjrvuWqvEnlhI2jyi1wWwYunlEUAhx60spQOTy10sdYOA+s1M+LPb6kwvasrZZDmYyQlcVZeA==} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-openbsd-64/0.13.15: resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==} cpu: [x64] @@ -2257,6 +2350,14 @@ packages: dev: true optional: true + /esbuild-openbsd-64/0.14.5: + resolution: {integrity: sha512-RZzRUu1RYKextJgXkHhAsuhLDvm73YP/wogpUG9MaAGvKTxnKAKRuaw2zJfnbz8iBqBQB2no2PmpVBNbqUTQrw==} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-sunos-64/0.13.15: resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==} cpu: [x64] @@ -2265,6 +2366,14 @@ packages: dev: true optional: true + /esbuild-sunos-64/0.14.5: + resolution: {integrity: sha512-J2ffKsBBWscQlye+/giEgKsQCppwHHFqqt/sh+ojVF+DZy1ve6RpPGwXGcGF6IaZTAI9+Vk4eHleiQxb+PC9Yw==} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-32/0.13.15: resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==} cpu: [ia32] @@ -2273,6 +2382,14 @@ packages: dev: true optional: true + /esbuild-windows-32/0.14.5: + resolution: {integrity: sha512-OTZvuAc1JBnwmeT+hR1+Vmgz6LOD7DggpnwtKMAExruSLxUMl02Z3pyalJ7zKh3gJ/KBRM1JQZLSk4/mFWijeQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-64/0.13.15: resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==} cpu: [x64] @@ -2281,6 +2398,14 @@ packages: dev: true optional: true + /esbuild-windows-64/0.14.5: + resolution: {integrity: sha512-ZM9rlBDsPEeMVJ1wcpNMXUad9VzYOFeOBUXBi+16HZTvFPy2DkcC2ZWcrByP3IESToD5lvHdjSX/w8rxphjqig==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-arm64/0.13.15: resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==} cpu: [arm64] @@ -2289,6 +2414,14 @@ packages: dev: true optional: true + /esbuild-windows-arm64/0.14.5: + resolution: {integrity: sha512-iK41mKG2LG0AKHE+9g/jDYU5ZQpJObt1uIPSGTiiiJKI5qbHdEck6Gaqq2tmBI933F2zB9yqZIX7IAdxwN/q4A==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild/0.13.15: resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==} hasBin: true @@ -2313,6 +2446,30 @@ packages: esbuild-windows-arm64: 0.13.15 dev: true + /esbuild/0.14.5: + resolution: {integrity: sha512-ofwgH4ITPXhkMo2AM39oXpSe5KIyWjxicdqYVy+tLa1lMgxzPCKwaepcrSRtYbgTUMXwquxB1C3xQYpUNaPAFA==} + hasBin: true + requiresBuild: true + optionalDependencies: + esbuild-android-arm64: 0.14.5 + esbuild-darwin-64: 0.14.5 + esbuild-darwin-arm64: 0.14.5 + esbuild-freebsd-64: 0.14.5 + esbuild-freebsd-arm64: 0.14.5 + esbuild-linux-32: 0.14.5 + esbuild-linux-64: 0.14.5 + esbuild-linux-arm: 0.14.5 + esbuild-linux-arm64: 0.14.5 + esbuild-linux-mips64le: 0.14.5 + esbuild-linux-ppc64le: 0.14.5 + esbuild-netbsd-64: 0.14.5 + esbuild-openbsd-64: 0.14.5 + esbuild-sunos-64: 0.14.5 + esbuild-windows-32: 0.14.5 + esbuild-windows-64: 0.14.5 + esbuild-windows-arm64: 0.14.5 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -2337,13 +2494,13 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier/8.3.0_eslint@8.3.0: + /eslint-config-prettier/8.3.0_eslint@8.5.0: resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.3.0 + eslint: 8.5.0 dev: true /eslint-import-resolver-node/0.3.6: @@ -2353,7 +2510,7 @@ packages: resolve: 1.20.0 dev: true - /eslint-import-resolver-typescript/2.5.0_a32f4f7b9ceb1e357b5ea9f682f0210a: + /eslint-import-resolver-typescript/2.5.0_f385d671d5f1c72a868db745a891bc1f: resolution: {integrity: sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==} engines: {node: '>=4'} peerDependencies: @@ -2361,8 +2518,8 @@ packages: eslint-plugin-import: '*' dependencies: debug: 4.3.2 - eslint: 8.3.0 - eslint-plugin-import: 2.25.3_eslint@8.3.0 + eslint: 8.5.0 + eslint-plugin-import: 2.25.3_eslint@8.5.0 glob: 7.1.7 is-glob: 4.0.1 resolve: 1.20.0 @@ -2380,7 +2537,7 @@ packages: pkg-dir: 2.0.0 dev: true - /eslint-plugin-import/2.25.3_eslint@8.3.0: + /eslint-plugin-import/2.25.3_eslint@8.5.0: resolution: {integrity: sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==} engines: {node: '>=4'} peerDependencies: @@ -2390,7 +2547,7 @@ packages: array.prototype.flat: 1.2.5 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.3.0 + eslint: 8.5.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.1 has: 1.0.3 @@ -2402,16 +2559,16 @@ packages: tsconfig-paths: 3.12.0 dev: true - /eslint-plugin-react-hooks/4.3.0_eslint@8.3.0: + /eslint-plugin-react-hooks/4.3.0_eslint@8.5.0: resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.3.0 + eslint: 8.5.0 dev: true - /eslint-plugin-react/7.27.1_eslint@8.3.0: + /eslint-plugin-react/7.27.1_eslint@8.5.0: resolution: {integrity: sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==} engines: {node: '>=4'} peerDependencies: @@ -2420,7 +2577,7 @@ packages: array-includes: 3.1.4 array.prototype.flatmap: 1.2.5 doctrine: 2.1.0 - eslint: 8.3.0 + eslint: 8.5.0 estraverse: 5.3.0 jsx-ast-utils: 3.1.0 minimatch: 3.0.4 @@ -2450,13 +2607,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.3.0: + /eslint-utils/3.0.0_eslint@8.5.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.3.0 + eslint: 8.5.0 eslint-visitor-keys: 2.0.0 dev: true @@ -2470,13 +2627,13 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.3.0: - resolution: {integrity: sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==} + /eslint/8.5.0: + resolution: {integrity: sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.0.4 - '@humanwhocodes/config-array': 0.6.0 + '@eslint/eslintrc': 1.0.5 + '@humanwhocodes/config-array': 0.9.2 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -2485,9 +2642,9 @@ packages: enquirer: 2.3.6 escape-string-regexp: 4.0.0 eslint-scope: 7.1.0 - eslint-utils: 3.0.0_eslint@8.3.0 + eslint-utils: 3.0.0_eslint@8.5.0 eslint-visitor-keys: 3.1.0 - espree: 9.1.0 + espree: 9.2.0 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -2517,8 +2674,8 @@ packages: - supports-color dev: true - /espree/9.1.0: - resolution: {integrity: sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==} + /espree/9.2.0: + resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.6.0 @@ -3015,6 +3172,10 @@ packages: engines: {node: '>= 4'} dev: true + /immutable/4.0.0: + resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} + dev: true + /import-fresh/3.2.1: resolution: {integrity: sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==} engines: {node: '>=6'} @@ -3128,6 +3289,7 @@ packages: /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} engines: {node: '>=4'} + requiresBuild: true dev: true optional: true @@ -3504,8 +3666,8 @@ packages: hasBin: true dev: true - /marked/4.0.4: - resolution: {integrity: sha512-d8v7SensuOj+gxi0TGbqb2WtS60ycZfZuqtmAB9yz0JLotKerTob/47Qk9oLCDmn5G1dcdn3d5ydR+ih9dvS0A==} + /marked/4.0.8: + resolution: {integrity: sha512-dkpJMIlJpc833hbjjg8jraw1t51e/eKDoG8TFOgc5O0Z77zaYKigYekTDop5AplRoKFGIaoazhYEhGkMtU3IeA==} engines: {node: '>= 12'} hasBin: true dev: true @@ -3958,8 +4120,8 @@ packages: engines: {node: '>=4'} dev: true - /prettier/2.4.1: - resolution: {integrity: sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==} + /prettier/2.5.1: + resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -4184,7 +4346,7 @@ packages: dev: true optional: true - /rollup-plugin-ts/2.0.4_rollup@2.60.1+typescript@4.5.2: + /rollup-plugin-ts/2.0.4_rollup@2.61.1+typescript@4.5.4: resolution: {integrity: sha512-VXx1qg+8ySrMxThIoBzy73qRg4q8SD0H8Kd8XquVMm4nrH8bj80DBEJ2baZekQWa5TxHyVOHHNloZ+oqCLhLTQ==} engines: {node: '>=10.0.0', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} peerDependencies: @@ -4215,17 +4377,17 @@ packages: browserslist: 4.18.1 browserslist-generator: 1.0.65 chalk: 4.1.2 - compatfactory: 0.0.12_typescript@4.5.2 + compatfactory: 0.0.12_typescript@4.5.4 crosspath: 1.0.0 magic-string: 0.25.7 - rollup: 2.60.1 - ts-clone-node: 0.3.29_typescript@4.5.2 + rollup: 2.61.1 + ts-clone-node: 0.3.29_typescript@4.5.4 tslib: 2.3.1 - typescript: 4.5.2 + typescript: 4.5.4 dev: true - /rollup/2.60.1: - resolution: {integrity: sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg==} + /rollup/2.61.1: + resolution: {integrity: sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -4254,12 +4416,14 @@ packages: truncate-utf8-bytes: 1.0.2 dev: true - /sass/1.43.4: - resolution: {integrity: sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==} + /sass/1.45.0: + resolution: {integrity: sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==} engines: {node: '>=8.9.0'} hasBin: true dependencies: chokidar: 3.5.2 + immutable: 4.0.0 + source-map-js: 0.6.2 dev: true /sax/1.2.4: @@ -4513,6 +4677,10 @@ packages: resolution: {integrity: sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==} dev: true + /stylis/4.0.13: + resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} + dev: true + /sumchecker/3.0.1: resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} @@ -4609,17 +4777,17 @@ packages: utf8-byte-length: 1.0.4 dev: true - /ts-clone-node/0.3.29_typescript@4.5.2: + /ts-clone-node/0.3.29_typescript@4.5.4: resolution: {integrity: sha512-UDwVrUSH7zXXy/E+I5Xr7d5Eddqc2Uj/BlqlOiJyDRQo4qPD129p3cyVZY5r7/p8aCPmNGJn0y4CLtbfVc+kag==} engines: {node: '>=10.0.0'} peerDependencies: typescript: ^3.x || ^4.x dependencies: - compatfactory: 0.0.12_typescript@4.5.2 - typescript: 4.5.2 + compatfactory: 0.0.12_typescript@4.5.4 + typescript: 4.5.4 dev: true - /ts-node/10.4.0_6d6d60348da931c98bc2cf01b7fcd2a7: + /ts-node/10.4.0_6cc1060505bd4c6ac58c4b67188c6af9: resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==} hasBin: true peerDependencies: @@ -4645,7 +4813,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.5.2 + typescript: 4.5.4 yn: 3.1.1 dev: true @@ -4665,14 +4833,14 @@ packages: /tslib/2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} - /tsutils/3.21.0_typescript@4.5.2: + /tsutils/3.21.0_typescript@4.5.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.5.2 + typescript: 4.5.4 dev: true /tunnel/0.0.6: @@ -4714,23 +4882,23 @@ packages: resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} dev: true - /typedoc/0.22.9_typescript@4.5.2: - resolution: {integrity: sha512-84PjudoXVcap6bwdZFbYIUWlgdz/iLV09ZHwrCzhtHWXaDQG6mlosJ8te6DSThuRkRvQjp46HO+qY/P7Gpm78g==} + /typedoc/0.22.10_typescript@4.5.4: + resolution: {integrity: sha512-hQYZ4WtoMZ61wDC6w10kxA42+jclWngdmztNZsDvIz7BMJg7F2xnT+uYsUa7OluyKossdFj9E9Ye4QOZKTy8SA==} engines: {node: '>= 12.10.0'} hasBin: true peerDependencies: - typescript: 4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x + typescript: 4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x dependencies: glob: 7.2.0 lunr: 2.3.9 marked: 3.0.8 minimatch: 3.0.4 shiki: 0.9.12 - typescript: 4.5.2 + typescript: 4.5.4 dev: true - /typescript/4.5.2: - resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==} + /typescript/4.5.4: + resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -4836,8 +5004,8 @@ packages: dev: true optional: true - /vite/2.6.14_sass@1.43.4: - resolution: {integrity: sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA==} + /vite/2.7.3_sass@1.45.0: + resolution: {integrity: sha512-GAY1P+9fLJOju1SRm8+hykVnEXog+E+KXuqqyMBQDriKCUIKzWnPn142yNNhSdf/ixYGYdUa5ce3A8WaEajzGw==} engines: {node: '>=12.2.0'} hasBin: true peerDependencies: @@ -4855,8 +5023,8 @@ packages: esbuild: 0.13.15 postcss: 8.3.11 resolve: 1.20.0 - rollup: 2.60.1 - sass: 1.43.4 + rollup: 2.61.1 + sass: 1.45.0 optionalDependencies: fsevents: 2.3.2 dev: true