From a814e2c829b5219da2b8299f9e78aa2c13d123a8 Mon Sep 17 00:00:00 2001 From: Charles Zhao Date: Tue, 17 May 2022 21:37:30 +0800 Subject: [PATCH] fix(console): upgrade react-sdk 0.1.7 --- packages/console/package.json | 2 +- packages/console/src/App.module.scss | 21 --- packages/console/src/App.tsx | 65 +--------- .../console/src/assets/images/warning.svg | 53 ++++++++ .../AppContent/components/Sidebar/hook.tsx | 8 +- .../AppContent/components/Sidebar/index.tsx | 2 +- .../components/AppContent/index.module.scss | 21 +++ .../src/components/AppContent/index.tsx | 56 +++++++- .../components/LogtoLoading/index.module.scss | 1 + .../SessionExpired/index.module.scss | 28 ++++ .../src/components/SessionExpired/index.tsx | 33 +++++ packages/console/src/hooks/use-configs.ts | 8 +- packages/console/src/pages/Callback/index.tsx | 18 +-- packages/console/src/utilities/app.ts | 5 + packages/phrases/src/locales/en.ts | 6 + packages/phrases/src/locales/zh-cn.ts | 5 + pnpm-lock.yaml | 120 +++--------------- 17 files changed, 243 insertions(+), 209 deletions(-) delete mode 100644 packages/console/src/App.module.scss create mode 100644 packages/console/src/assets/images/warning.svg create mode 100644 packages/console/src/components/SessionExpired/index.module.scss create mode 100644 packages/console/src/components/SessionExpired/index.tsx create mode 100644 packages/console/src/utilities/app.ts diff --git a/packages/console/package.json b/packages/console/package.json index 0f032cca2..a923fbae9 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@fontsource/roboto-mono": "^4.5.7", "@logto/phrases": "^0.1.0", - "@logto/react": "^0.1.5", + "@logto/react": "^0.1.7", "@logto/schemas": "^0.1.0", "@mdx-js/react": "^1.6.22", "@parcel/core": "^2.5.0", diff --git a/packages/console/src/App.module.scss b/packages/console/src/App.module.scss deleted file mode 100644 index 553484ee1..000000000 --- a/packages/console/src/App.module.scss +++ /dev/null @@ -1,21 +0,0 @@ -@use '@/scss/colors' as colors; - -.light { - @include colors.light-theme; -} - -.dark { - @include colors.dark-theme; -} - -@media (prefers-color-scheme: light) { - body { - @include colors.light-theme; - } -} - -@media (prefers-color-scheme: dark) { - body { - @include colors.dark-theme; - } -} diff --git a/packages/console/src/App.tsx b/packages/console/src/App.tsx index 051917d90..860f748d4 100644 --- a/packages/console/src/App.tsx +++ b/packages/console/src/App.tsx @@ -1,21 +1,15 @@ -import { LogtoProvider, useLogto } from '@logto/react'; -import { AppearanceMode, Setting } from '@logto/schemas'; -import React, { useEffect } from 'react'; -import { BrowserRouter, Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom'; -import useSWR, { SWRConfig } from 'swr'; +import { LogtoProvider } from '@logto/react'; +import React from 'react'; +import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'; +import { SWRConfig } from 'swr'; import './scss/normalized.scss'; // eslint-disable-next-line import/no-unassigned-import import '@fontsource/roboto-mono'; -import * as styles from './App.module.scss'; import AppContent from './components/AppContent'; -import { getPath } from './components/AppContent/components/Sidebar'; -import { useSidebarMenuItems } from './components/AppContent/components/Sidebar/hook'; import ErrorBoundary from './components/ErrorBoundary'; -import LogtoLoading from './components/LogtoLoading'; import Toast from './components/Toast'; -import { themeStorageKey, logtoApiResource } from './consts'; -import { RequestError } from './hooks/use-api'; +import { logtoApiResource } from './consts'; import useSwrFetcher from './hooks/use-swr-fetcher'; import initI18n from './i18n/init'; import ApiResourceDetails from './pages/ApiResourceDetails'; @@ -31,58 +25,13 @@ import Settings from './pages/Settings'; import SignInExperience from './pages/SignInExperience'; import UserDetails from './pages/UserDetails'; import Users from './pages/Users'; - -const isBasenameNeeded = process.env.NODE_ENV !== 'development' || process.env.PORT === '5002'; +import { getBasename } from './utilities/app'; void initI18n(); -const defaultTheme = localStorage.getItem(themeStorageKey) ?? AppearanceMode.SyncWithSystem; const Main = () => { - const { isAuthenticated } = useLogto(); - const location = useLocation(); - const navigate = useNavigate(); const fetcher = useSwrFetcher(); - const settingsFetcher = useSwrFetcher(); - const { data } = useSWR( - isAuthenticated && '/api/settings', - settingsFetcher - ); - - const sections = useSidebarMenuItems(); - - useEffect(() => { - const theme = data?.adminConsole.appearanceMode ?? defaultTheme; - const isFollowSystem = theme === AppearanceMode.SyncWithSystem; - const className = styles[theme] ?? ''; - - if (!isFollowSystem) { - document.body.classList.add(className); - } - - return () => { - if (!isFollowSystem) { - document.body.classList.remove(className); - } - }; - }, [data?.adminConsole.appearanceMode]); - - useEffect(() => { - (async () => { - void initI18n(data?.adminConsole.language); - })(); - }, [data?.adminConsole.language]); - - useEffect(() => { - if (location.pathname === '/') { - navigate(getPath(sections?.[0]?.items[0]?.title ?? '')); - } - }, [location.pathname, navigate, sections]); - - if (isAuthenticated && !sections?.length) { - return ; - } - return ( @@ -126,7 +75,7 @@ const Main = () => { }; const App = () => ( - + diff --git a/packages/console/src/assets/images/warning.svg b/packages/console/src/assets/images/warning.svg new file mode 100644 index 000000000..2ea00bbeb --- /dev/null +++ b/packages/console/src/assets/images/warning.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/console/src/components/AppContent/components/Sidebar/hook.tsx b/packages/console/src/components/AppContent/components/Sidebar/hook.tsx index 032ed38e3..85d1f0d7f 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/hook.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/hook.tsx @@ -27,13 +27,9 @@ type SidebarSection = { items: SidebarItem[]; }; -export const useSidebarMenuItems = (): SidebarSection[] | undefined => { +export const useSidebarMenuItems = (): SidebarSection[] => { const { configs } = useAdminConsoleConfigs(); - if (!configs) { - return; - } - return [ { title: 'overview', @@ -41,7 +37,7 @@ export const useSidebarMenuItems = (): SidebarSection[] | undefined => { { Icon: Bolt, title: 'get_started', - isHidden: configs.hideGetStarted, + isHidden: configs?.hideGetStarted, }, { Icon: BarGraph, diff --git a/packages/console/src/components/AppContent/components/Sidebar/index.tsx b/packages/console/src/components/AppContent/components/Sidebar/index.tsx index 9e4a40717..5446a93fc 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/index.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/index.tsx @@ -18,7 +18,7 @@ const Sidebar = () => { return (
- {sections?.map(({ title, items }) => ( + {sections.map(({ title, items }) => (
{items.map( ({ title, Icon, isHidden, modal }) => diff --git a/packages/console/src/components/AppContent/index.module.scss b/packages/console/src/components/AppContent/index.module.scss index e0d49aa68..4b6805d59 100644 --- a/packages/console/src/components/AppContent/index.module.scss +++ b/packages/console/src/components/AppContent/index.module.scss @@ -1,4 +1,5 @@ @use '@/scss/underscore' as _; +@use '@/scss/colors' as colors; .app { position: absolute; @@ -25,3 +26,23 @@ margin: 0 auto; } } + +.light { + @include colors.light-theme; +} + +.dark { + @include colors.dark-theme; +} + +@media (prefers-color-scheme: light) { + body { + @include colors.light-theme; + } +} + +@media (prefers-color-scheme: dark) { + body { + @include colors.dark-theme; + } +} diff --git a/packages/console/src/components/AppContent/index.tsx b/packages/console/src/components/AppContent/index.tsx index d35f004c8..58e805b27 100644 --- a/packages/console/src/components/AppContent/index.tsx +++ b/packages/console/src/components/AppContent/index.tsx @@ -1,15 +1,30 @@ import { useLogto } from '@logto/react'; +import { AppearanceMode } from '@logto/schemas'; import React, { useEffect } from 'react'; -import { Outlet, useHref } from 'react-router-dom'; +import { Outlet, useHref, useLocation, useNavigate } from 'react-router-dom'; + +import { themeStorageKey } from '@/consts'; +import useAdminConsoleConfigs from '@/hooks/use-configs'; +import initI18n from '@/i18n/init'; import LogtoLoading from '../LogtoLoading'; -import Sidebar from './components/Sidebar'; +import SessionExpired from '../SessionExpired'; +import Sidebar, { getPath } from './components/Sidebar'; +import { useSidebarMenuItems } from './components/Sidebar/hook'; import Topbar from './components/Topbar'; import * as styles from './index.module.scss'; +const defaultTheme = localStorage.getItem(themeStorageKey) ?? AppearanceMode.SyncWithSystem; + const AppContent = () => { - const { isAuthenticated, signIn } = useLogto(); + const { isAuthenticated, error, signIn } = useLogto(); const href = useHref('/callback'); + const { configs, error: configsError } = useAdminConsoleConfigs(); + const isLoadingConfigs = !configs && !configsError; + + const location = useLocation(); + const navigate = useNavigate(); + const sections = useSidebarMenuItems(); useEffect(() => { if (!isAuthenticated) { @@ -17,10 +32,43 @@ const AppContent = () => { } }, [href, isAuthenticated, signIn]); - if (!isAuthenticated) { + useEffect(() => { + const theme = configs?.appearanceMode ?? defaultTheme; + const isFollowSystem = theme === AppearanceMode.SyncWithSystem; + const className = styles[theme] ?? ''; + + if (!isFollowSystem) { + document.body.classList.add(className); + } + + return () => { + if (!isFollowSystem) { + document.body.classList.remove(className); + } + }; + }, [configs?.appearanceMode]); + + useEffect(() => { + (async () => { + void initI18n(configs?.language); + })(); + }, [configs?.language]); + + useEffect(() => { + // Navigate to the first menu item after configs are loaded. + if (configs && location.pathname === '/') { + navigate(getPath(sections[0]?.items[0]?.title ?? '')); + } + }, [location.pathname, configs, sections, navigate]); + + if (!isAuthenticated || isLoadingConfigs) { return ; } + if (error) { + return ; + } + return (
diff --git a/packages/console/src/components/LogtoLoading/index.module.scss b/packages/console/src/components/LogtoLoading/index.module.scss index d56216d12..8f2df4b14 100644 --- a/packages/console/src/components/LogtoLoading/index.module.scss +++ b/packages/console/src/components/LogtoLoading/index.module.scss @@ -3,6 +3,7 @@ .container { display: flex; flex-direction: column; + height: 100vh; color: var(--color-text); align-items: center; overflow: hidden; diff --git a/packages/console/src/components/SessionExpired/index.module.scss b/packages/console/src/components/SessionExpired/index.module.scss new file mode 100644 index 000000000..e6ec3b7e5 --- /dev/null +++ b/packages/console/src/components/SessionExpired/index.module.scss @@ -0,0 +1,28 @@ +@use '@/scss/underscore' as _; + +.container { + display: flex; + flex-direction: column; + height: 100vh; + background-color: var(--color-layer-1); + align-items: center; + overflow: hidden; + + img { + height: 256px; + width: 256px; + margin: _.unit(42) 0 _.unit(6); + } + + .title { + font: var(--font-title-large); + margin-bottom: _.unit(4); + } + + .subtitle { + font: var(--font-body-medium); + margin-bottom: _.unit(6); + max-width: 470px; + text-align: center; + } +} diff --git a/packages/console/src/components/SessionExpired/index.tsx b/packages/console/src/components/SessionExpired/index.tsx new file mode 100644 index 000000000..8572eb466 --- /dev/null +++ b/packages/console/src/components/SessionExpired/index.tsx @@ -0,0 +1,33 @@ +import { useLogto } from '@logto/react'; +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import { useHref } from 'react-router-dom'; + +import WarningIcon from '@/assets/images/warning.svg'; + +import Button from '../Button'; +import * as styles from './index.module.scss'; + +const SessionExpired = () => { + const { signIn } = useLogto(); + const href = useHref('/callback'); + const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); + + return ( +
+ +
{t('session_expire.title')}
+
{t('session_expire.subtitle')}
+
+ ); +}; + +export default SessionExpired; diff --git a/packages/console/src/hooks/use-configs.ts b/packages/console/src/hooks/use-configs.ts index 0cebb9bee..80cc4ef6f 100644 --- a/packages/console/src/hooks/use-configs.ts +++ b/packages/console/src/hooks/use-configs.ts @@ -1,10 +1,16 @@ +import { useLogto } from '@logto/react'; import { AdminConsoleConfig, Setting } from '@logto/schemas'; import useSWR from 'swr'; import useApi, { RequestError } from './use-api'; const useAdminConsoleConfigs = () => { - const { data: settings, error, mutate } = useSWR('/api/settings'); + const { isAuthenticated } = useLogto(); + const { + data: settings, + error, + mutate, + } = useSWR(isAuthenticated && '/api/settings'); const api = useApi(); const updateConfigs = async (delta: Partial) => { diff --git a/packages/console/src/pages/Callback/index.tsx b/packages/console/src/pages/Callback/index.tsx index 9e255c003..5095fcd1c 100644 --- a/packages/console/src/pages/Callback/index.tsx +++ b/packages/console/src/pages/Callback/index.tsx @@ -1,21 +1,11 @@ -import { useHandleSignInCallback, useLogto } from '@logto/react'; -import React, { useEffect } from 'react'; -import { useNavigate } from 'react-router-dom'; +import { useHandleSignInCallback } from '@logto/react'; +import React from 'react'; import LogtoLoading from '@/components/LogtoLoading'; +import { getBasename } from '@/utilities/app'; const Callback = () => { - const { isAuthenticated, isLoading } = useLogto(); - const navigate = useNavigate(); - - useHandleSignInCallback(); - - // TO-DO: Error handling - useEffect(() => { - if (isAuthenticated && !isLoading) { - navigate('/', { replace: true }); - } - }, [isAuthenticated, isLoading, navigate]); + useHandleSignInCallback(getBasename()); return ; }; diff --git a/packages/console/src/utilities/app.ts b/packages/console/src/utilities/app.ts new file mode 100644 index 000000000..04e4dd74f --- /dev/null +++ b/packages/console/src/utilities/app.ts @@ -0,0 +1,5 @@ +export const getBasename = (): string => { + const isBasenameNeeded = process.env.NODE_ENV !== 'development' || process.env.PORT === '5002'; + + return isBasenameNeeded ? '/console' : ''; +}; diff --git a/packages/phrases/src/locales/en.ts b/packages/phrases/src/locales/en.ts index 9ab018761..6f18ea72d 100644 --- a/packages/phrases/src/locales/en.ts +++ b/packages/phrases/src/locales/en.ts @@ -502,6 +502,12 @@ const translation = { appearance_dark: 'Dark mode', saved: 'Saved!', }, + session_expire: { + title: 'Session Expired', + subtitle: + 'Your session has expired and you have been disconnected. Click the button below to sign in admin console again.', + button: 'Sign in again', + }, }, }; diff --git a/packages/phrases/src/locales/zh-cn.ts b/packages/phrases/src/locales/zh-cn.ts index 1d45bb3ab..2de3ec5e3 100644 --- a/packages/phrases/src/locales/zh-cn.ts +++ b/packages/phrases/src/locales/zh-cn.ts @@ -497,6 +497,11 @@ const translation = { appearance_dark: '深色模式', saved: '已保存', }, + session_expire: { + title: '会话已过期', + subtitle: '由于会话过期,您已被登出. 请点击下方按钮重新登录到管理界面.', + button: '重新登录', + }, }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50fa100e0..76dfa2df0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -437,7 +437,7 @@ importers: specifiers: '@fontsource/roboto-mono': ^4.5.7 '@logto/phrases': ^0.1.0 - '@logto/react': ^0.1.5 + '@logto/react': ^0.1.7 '@logto/schemas': ^0.1.0 '@mdx-js/react': ^1.6.22 '@parcel/core': ^2.5.0 @@ -492,7 +492,7 @@ importers: devDependencies: '@fontsource/roboto-mono': 4.5.7 '@logto/phrases': link:../phrases - '@logto/react': 0.1.5_react@17.0.2 + '@logto/react': 0.1.7_react@17.0.2 '@logto/schemas': link:../schemas '@mdx-js/react': 1.6.22_react@17.0.2 '@parcel/core': 2.5.0 @@ -3667,7 +3667,6 @@ packages: pacote: 11.3.5 semver: 7.3.7 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -3836,7 +3835,6 @@ packages: whatwg-url: 8.7.0 yargs-parser: 20.2.4 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -4034,7 +4032,6 @@ packages: npm-registry-fetch: 9.0.0 npmlog: 4.1.2 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -4064,7 +4061,6 @@ packages: pify: 5.0.0 read-package-json: 3.0.1 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -4199,7 +4195,6 @@ packages: pacote: 11.3.5 semver: 7.3.7 transitivePeerDependencies: - - bluebird - encoding - supports-color dev: true @@ -4355,11 +4350,11 @@ packages: '@lezer/common': 0.15.12 dev: true - /@logto/browser/0.1.5: - resolution: {integrity: sha512-IKdovieQmI+iVcvLo55tIMtWlNqnnGA6KN+JBjSVXpfJNdo05saNlUaOzJc2AIAbR/dcDszNYogZIoAw3YO4BQ==} + /@logto/browser/0.1.7: + resolution: {integrity: sha512-toP/Fcqj+jWyaK25yFTxlFJ5UAErQr5mbL4vFHP+l9uR6UeLDLmGx9NuEVFKU52zuRIevGoZLRn5Q5XOGax9ig==} requiresBuild: true dependencies: - '@logto/js': 0.1.5 + '@logto/js': 0.1.7 '@silverhand/essentials': 1.1.7 jose: 4.6.0 lodash.get: 4.4.2 @@ -4367,8 +4362,8 @@ packages: superstruct: 0.15.4 dev: true - /@logto/js/0.1.5: - resolution: {integrity: sha512-zf/ERfvxhbQ9JgLJ8xhFPcTtoeUJbiZHZ3iP6msGda5X/mdCABlSJLlZI6gtrf3DRKKv1K5Z/2NIDeCFfOMNNw==} + /@logto/js/0.1.7: + resolution: {integrity: sha512-APtl1L+mQsv5FG01rMpqXHdLKa8fratxRSO77h5lumapW2a5qGg4P1BAhkiWCt8Gb6fw2JzW9XpkXKdpVa4MHw==} requiresBuild: true dependencies: '@silverhand/essentials': 1.1.7 @@ -4379,13 +4374,13 @@ packages: superstruct: 0.15.4 dev: true - /@logto/react/0.1.5_react@17.0.2: - resolution: {integrity: sha512-mPMiqE8IIvbnfgJiRGgyMHfqMpVKP/6lTA2N6Vxm0eBDEDjxl2anlfZe9Ey8Gk9L81UGC3/T5EFl/R22PZDqqQ==} + /@logto/react/0.1.7_react@17.0.2: + resolution: {integrity: sha512-zRg5uQZ0P1IdSA8nkMMRIY+BtRWF0rImS1Ec1Ku0LTWE315BdS/em0mVwDPqDcqlq8HMwyEorE19TXemnunK1Q==} requiresBuild: true peerDependencies: react: '>=16.8.0' dependencies: - '@logto/browser': 0.1.5 + '@logto/browser': 0.1.7 '@silverhand/essentials': 1.1.7 react: 17.0.2 dev: true @@ -4498,8 +4493,6 @@ packages: promise-retry: 2.0.1 semver: 7.3.7 which: 2.0.2 - transitivePeerDependencies: - - bluebird dev: true /@npmcli/installed-package-contents/1.0.7: @@ -5538,7 +5531,7 @@ packages: eslint-import-resolver-typescript: 2.5.0_rnagsyfcubvpoxo2ynj23pim7u eslint-plugin-consistent-default-export-name: 0.0.7 eslint-plugin-eslint-comments: 3.2.0_eslint@8.10.0 - eslint-plugin-import: 2.25.4_sidoke6kqbkbdht6nlmwbfnany + eslint-plugin-import: 2.25.4_eslint@8.10.0 eslint-plugin-no-use-extend-native: 0.5.0 eslint-plugin-node: 11.1.0_eslint@8.10.0 eslint-plugin-prettier: 3.4.1_6pitu4b2tqihty6rv5qeiyb35m @@ -5548,7 +5541,6 @@ packages: pkg-dir: 4.2.0 prettier: 2.5.1 transitivePeerDependencies: - - eslint-import-resolver-webpack - supports-color - typescript dev: true @@ -5570,7 +5562,7 @@ packages: eslint-import-resolver-typescript: 2.5.0_rnagsyfcubvpoxo2ynj23pim7u eslint-plugin-consistent-default-export-name: 0.0.7 eslint-plugin-eslint-comments: 3.2.0_eslint@8.10.0 - eslint-plugin-import: 2.25.4_sidoke6kqbkbdht6nlmwbfnany + eslint-plugin-import: 2.25.4_eslint@8.10.0 eslint-plugin-no-use-extend-native: 0.5.0 eslint-plugin-node: 11.1.0_eslint@8.10.0 eslint-plugin-prettier: 3.4.1_6pitu4b2tqihty6rv5qeiyb35m @@ -5580,7 +5572,6 @@ packages: pkg-dir: 4.2.0 prettier: 2.5.1 transitivePeerDependencies: - - eslint-import-resolver-webpack - supports-color - typescript dev: true @@ -5602,7 +5593,7 @@ packages: eslint-import-resolver-typescript: 2.5.0_rnagsyfcubvpoxo2ynj23pim7u eslint-plugin-consistent-default-export-name: 0.0.7 eslint-plugin-eslint-comments: 3.2.0_eslint@8.10.0 - eslint-plugin-import: 2.25.4_sidoke6kqbkbdht6nlmwbfnany + eslint-plugin-import: 2.25.4_eslint@8.10.0 eslint-plugin-no-use-extend-native: 0.5.0 eslint-plugin-node: 11.1.0_eslint@8.10.0 eslint-plugin-prettier: 3.4.1_6pitu4b2tqihty6rv5qeiyb35m @@ -5612,7 +5603,6 @@ packages: pkg-dir: 4.2.0 prettier: 2.5.1 transitivePeerDependencies: - - eslint-import-resolver-webpack - supports-color - typescript dev: true @@ -7665,8 +7655,6 @@ packages: qs: 6.9.7 raw-body: 2.4.3 type-is: 1.6.18 - transitivePeerDependencies: - - supports-color dev: true /bonjour-service/1.0.11: @@ -7842,8 +7830,6 @@ packages: ssri: 8.0.1 tar: 6.1.11 unique-filename: 1.1.1 - transitivePeerDependencies: - - bluebird dev: true /cache-content-type/1.0.1: @@ -8359,8 +8345,6 @@ packages: on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 - transitivePeerDependencies: - - supports-color dev: true /concat-map/0.0.1: @@ -8936,22 +8920,12 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true dependencies: ms: 2.1.3 @@ -9180,8 +9154,6 @@ packages: dependencies: address: 1.1.2 debug: 2.6.9 - transitivePeerDependencies: - - supports-color dev: true /detect-port/1.3.0: @@ -9191,8 +9163,6 @@ packages: dependencies: address: 1.1.2 debug: 2.6.9 - transitivePeerDependencies: - - supports-color dev: true /dezalgo/1.0.3: @@ -9671,8 +9641,6 @@ packages: dependencies: debug: 3.2.7 resolve: 1.22.0 - transitivePeerDependencies: - - supports-color dev: true /eslint-import-resolver-typescript/2.5.0_rnagsyfcubvpoxo2ynj23pim7u: @@ -9684,7 +9652,7 @@ packages: dependencies: debug: 4.3.3 eslint: 8.10.0 - eslint-plugin-import: 2.25.4_sidoke6kqbkbdht6nlmwbfnany + eslint-plugin-import: 2.25.4_eslint@8.10.0 glob: 7.2.0 is-glob: 4.0.3 resolve: 1.22.0 @@ -9693,31 +9661,12 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3_l62aq42yiamaj3cnpuf6avthf4: + /eslint-module-utils/2.7.3: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true dependencies: - '@typescript-eslint/parser': 5.14.0_fo4uz55zgcu432252zy2gvpvcu debug: 3.2.7 - eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.5.0_rnagsyfcubvpoxo2ynj23pim7u find-up: 2.1.0 - transitivePeerDependencies: - - supports-color dev: true /eslint-plugin-consistent-default-export-name/0.0.7: @@ -9752,24 +9701,19 @@ packages: ignore: 5.2.0 dev: true - /eslint-plugin-import/2.25.4_sidoke6kqbkbdht6nlmwbfnany: + /eslint-plugin-import/2.25.4_eslint@8.10.0: resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} engines: {node: '>=4'} peerDependencies: - '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true dependencies: - '@typescript-eslint/parser': 5.14.0_fo4uz55zgcu432252zy2gvpvcu array-includes: 3.1.4 array.prototype.flat: 1.2.5 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.10.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_l62aq42yiamaj3cnpuf6avthf4 + eslint-module-utils: 2.7.3 has: 1.0.3 is-core-module: 2.8.1 is-glob: 4.0.3 @@ -9777,10 +9721,6 @@ packages: object.values: 1.1.5 resolve: 1.22.0 tsconfig-paths: 3.13.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color dev: true /eslint-plugin-no-use-extend-native/0.5.0: @@ -10172,8 +10112,6 @@ packages: type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 - transitivePeerDependencies: - - supports-color dev: true /extend-shallow/2.0.1: @@ -10370,8 +10308,6 @@ packages: parseurl: 1.3.3 statuses: 1.5.0 unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color dev: true /find-cache-dir/3.3.2: @@ -13082,7 +13018,6 @@ packages: import-local: 3.1.0 npmlog: 4.1.2 transitivePeerDependencies: - - bluebird - encoding - supports-color dev: true @@ -13117,7 +13052,6 @@ packages: npm-package-arg: 8.1.5 npm-registry-fetch: 11.0.0 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -13131,7 +13065,6 @@ packages: semver: 7.3.7 ssri: 8.0.1 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -13500,7 +13433,6 @@ packages: socks-proxy-agent: 5.0.1 ssri: 8.0.1 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -13525,7 +13457,6 @@ packages: socks-proxy-agent: 6.1.1 ssri: 8.0.1 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -14598,7 +14529,6 @@ packages: minizlib: 2.1.2 npm-package-arg: 8.1.5 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -14615,7 +14545,6 @@ packages: minizlib: 2.1.2 npm-package-arg: 8.1.5 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -15054,7 +14983,6 @@ packages: ssri: 8.0.1 tar: 6.1.11 transitivePeerDependencies: - - bluebird - supports-color dev: true @@ -15447,8 +15375,6 @@ packages: async: 2.6.3 debug: 3.2.7 mkdirp: 0.5.5 - transitivePeerDependencies: - - supports-color dev: true /postcss-calc/8.2.4_postcss@8.4.12: @@ -16135,11 +16061,6 @@ packages: /promise-inflight/1.0.1: resolution: {integrity: sha1-mEcocL8igTL8vdhoEputEsPAKeM=} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true dev: true /promise-retry/2.0.1: @@ -16417,7 +16338,6 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - eslint - - supports-color - typescript - vue-template-compiler - webpack @@ -17512,8 +17432,6 @@ packages: on-finished: 2.3.0 range-parser: 1.2.1 statuses: 1.5.0 - transitivePeerDependencies: - - supports-color dev: true /serialize-error/7.0.1: @@ -17560,8 +17478,6 @@ packages: http-errors: 1.6.3 mime-types: 2.1.35 parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color dev: true /serve-static/1.14.2: @@ -17572,8 +17488,6 @@ packages: escape-html: 1.0.3 parseurl: 1.3.3 send: 0.17.2 - transitivePeerDependencies: - - supports-color dev: true /set-blocking/2.0.0: