diff --git a/console/package.json b/console/package.json index 6f5e0fe5da..6fa1199853 100644 --- a/console/package.json +++ b/console/package.json @@ -146,6 +146,7 @@ "@typescript-eslint/eslint-plugin": "^5.23.0", "@typescript-eslint/parser": "^5.23.0", "@typescript-eslint/typescript-estree": "^5.23.0", + "@vitejs/plugin-react": "^2.0.0", "babel-eslint": "^10.1.0", "craco-esbuild": "^0.3.3", "cypress": "^9.6.1", diff --git a/console/src/App.tsx b/console/src/App.tsx index fac03e48d4..0e8a4689cd 100644 --- a/console/src/App.tsx +++ b/console/src/App.tsx @@ -16,7 +16,6 @@ import '@/assets/fonts/iconfont.css' apiInit() const engine = new Styletron() const queryClient = new QueryClient() - export default function App(): any { // eslint-disable-next-line react-hooks/exhaustive-deps const sidebarData = useSidebar() diff --git a/console/src/api/ApiHeader.tsx b/console/src/api/ApiHeader.tsx index dc700c854c..b0ba0b9c5a 100644 --- a/console/src/api/ApiHeader.tsx +++ b/console/src/api/ApiHeader.tsx @@ -45,7 +45,7 @@ export default function ApiHeader() { } else { redirect = '/' } - if (location.pathname !== '/login' && location.pathname !== '/login/') { + if (!location.pathname.startsWith('/login')) { window.location.href = `${window.location.protocol}//${ window.location.host }/login?redirect=${encodeURIComponent(redirect)}` diff --git a/console/src/assets/logo_normal_en_gray.svg b/console/src/assets/logo_normal_en_gray.svg new file mode 100644 index 0000000000..3efa8aea6b --- /dev/null +++ b/console/src/assets/logo_normal_en_gray.svg @@ -0,0 +1,32 @@ + + + diff --git a/console/src/components/BaseNavTabs.tsx b/console/src/components/BaseNavTabs.tsx index a9000c769c..2f6302ef68 100644 --- a/console/src/components/BaseNavTabs.tsx +++ b/console/src/components/BaseNavTabs.tsx @@ -1,23 +1,27 @@ /* eslint-disable react/no-unused-prop-types */ import React, { useMemo } from 'react' -import { Tabs, Tab } from 'baseui/tabs-motion' +import { Tabs, Tab, TabsProps, TabProps } from 'baseui/tabs-motion' import { useHistory, useLocation } from 'react-router-dom' import _ from 'lodash' import { StatefulTooltip } from 'baseui/tooltip' import { AiOutlineQuestionCircle } from 'react-icons/ai' +import { mergeOverrides } from '@/utils/baseui' import { INavItem } from './BaseSidebar' export interface IComposedNavTabsProps { style?: React.CSSProperties navStyle?: React.CSSProperties + fill?: TabsProps['fill'] + tabsOverrides?: TabsProps['overrides'] + tabOverrides?: TabProps['overrides'] } export interface IBaseNavTabsProps extends IComposedNavTabsProps { navItems: INavItem[] } -export function BaseNavTabs({ navItems }: IBaseNavTabsProps) { +export function BaseNavTabs({ navItems, fill = 'intrinsic', tabsOverrides, tabOverrides }: IBaseNavTabsProps) { const history = useHistory() const location = useLocation() @@ -35,37 +39,43 @@ export function BaseNavTabs({ navItems }: IBaseNavTabsProps) { onChange={({ activeKey }) => { history.push(activeKey as string) }} - fill='intrinsic' + fill={fill} activateOnFocus - overrides={{ - TabHighlight: { - style: { - background: 'var(--color-brandPrimary)', + overrides={mergeOverrides( + { + TabHighlight: { + style: { + background: 'var(--color-brandPrimary)', + }, }, }, - }} + tabsOverrides + )} > {navItems.map((item) => { const Icon = item.icon return ( +
{Icon} {ctx.expanded && {item.title}}
@@ -140,12 +145,11 @@ export default function BaseSidebar({ navItems, style, title, icon, titleLink }: ...style, }} > - {title && icon && ( @@ -156,7 +160,6 @@ export default function BaseSidebar({ navItems, style, title, icon, titleLink }: overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', - color: 'var(--color-brandWhite)', }} > {title} @@ -175,8 +178,8 @@ export default function BaseSidebar({ navItems, style, title, icon, titleLink }: }, NavItemContainer: { style: { - height: 40, - padding: '5px 10px', + height: 38, + padding: '5px 8px', boxSizing: 'border-box', borderLeftWidth: '0', backgroundImage: 'none', @@ -193,11 +196,12 @@ export default function BaseSidebar({ navItems, style, title, icon, titleLink }: 'paddingBottom': '0', 'backgroundImage': 'none', 'borderLeftWidth': '0', - 'backgroundColor': 'var(--color-brandPrimary)', 'borderRadius': '8px', - 'color': 'var(--color-brandBgNavFont)', + 'color': '#2B65D9', + 'backgroundColor': '#F0F4FF', ':hover': { - color: 'var(--color-brandBgNavFont)', + color: '#2B65D9', + backgroundColor: '#F0F4FF', }, } @@ -210,10 +214,10 @@ export default function BaseSidebar({ navItems, style, title, icon, titleLink }: 'backgroundColor': 'none', 'backgroundImage': 'none', 'borderRadius': '8px', - 'color': 'var(--color-brandBgNavFontGray)', + 'color': 'rgba(2,16,43,0.60)', ':hover': { - color: 'var(--color-brandBgNavFont)', - backgroundColor: 'var(--color-brandPrimaryHover)', + color: '#2B65D9', + backgroundColor: '#F0F4FF', }, } }, @@ -232,46 +236,27 @@ export default function BaseSidebar({ navItems, style, title, icon, titleLink }:
-
-
- {ctx.expanded ? : } -
+ {ctx.expanded ? : }
diff --git a/console/src/components/Card/index.module.scss b/console/src/components/Card/index.module.scss index a09ef1ad72..4d6b18f81a 100644 --- a/console/src/components/Card/index.module.scss +++ b/console/src/components/Card/index.module.scss @@ -18,7 +18,6 @@ margin-bottom: 10px; display: flex; border-radius: 8px; - padding: 36px 28px; flex-direction: column; .card { @@ -43,7 +42,7 @@ align-items: center; display: flex; gap: 20px; - margin-bottom: 28px; + margin-bottom: 12px; // padding: 6px 0; } @@ -53,7 +52,7 @@ align-items: center; gap: 8px; flex-shrink: 0; - padding: 10px 0; + // padding: 10px 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; diff --git a/console/src/components/Card/index.tsx b/console/src/components/Card/index.tsx index 5f567f5178..52130ab6d1 100644 --- a/console/src/components/Card/index.tsx +++ b/console/src/components/Card/index.tsx @@ -18,7 +18,7 @@ const useStyles = createUseStyles({ return { 'background': props.theme.colors.backgroundPrimary, - 'marginTop': '100px', + 'marginTop': '12px', '& a': linkStyle, '& a:link': linkStyle, '& a:visited': linkStyle, @@ -127,8 +127,9 @@ export default function Card({ {title} diff --git a/console/src/components/Form/form.ts b/console/src/components/Form/form.ts index 248e41b391..c912fa2129 100755 --- a/console/src/components/Form/form.ts +++ b/console/src/components/Form/form.ts @@ -4,6 +4,7 @@ /* eslint-disable react/require-default-props */ import React, { ReactElement, ReactNode } from 'react' +// @ts-ignore import RcForm, { useForm as RcUseForm } from 'rc-field-form' import { FormProps as RcFormProps } from 'rc-field-form/es/Form' import { FieldProps as RcFieldProps } from 'rc-field-form/es/Field' diff --git a/console/src/components/Header/Logo.tsx b/console/src/components/Header/Logo.tsx index a5b6ddfd39..41ad7625ca 100644 --- a/console/src/components/Header/Logo.tsx +++ b/console/src/components/Header/Logo.tsx @@ -3,6 +3,7 @@ import { Link } from 'react-router-dom' import { useCurrentUser } from '@/hooks/useCurrentUser' import smallLogoImg from '@/assets/logo_small_en_white.svg' import normalLogoImg from '@/assets/logo_normal_en_white.svg' +import normalLogoGrayImg from '@/assets/logo_normal_en_gray.svg' import { IComposedComponentProps } from '@/theme' import { createUseStyles } from 'react-jss' import classNames from 'classnames' @@ -20,43 +21,63 @@ const useLogoStyles = createUseStyles({ }, }) +const normals = { + white: normalLogoImg, + gray: normalLogoGrayImg, +} + +const smalls = { + white: smallLogoImg, + gray: smallLogoImg, +} + export interface ILogoProps extends IComposedComponentProps { expanded?: boolean + kind?: 'gray' | 'white' } -export default function Logo({ expanded = true, className }: ILogoProps) { +export default function Logo({ expanded = true, className, kind = 'white', style }: ILogoProps) { // eslint-disable-next-line react-hooks/exhaustive-deps const { currentUser } = useCurrentUser() const styles = useLogoStyles() + const logo = React.useMemo(() => { + return ( + <> + logo + logo + + ) + }, [expanded, kind]) - // eslint-disable-next-line no-multi-assign - const Wrapper = currentUser ? Link : () => React.createElement('div') + if (currentUser) { + return
{logo}
+ } return ( - - logo - logo - + {logo} + ) } diff --git a/console/src/components/Header/index.tsx b/console/src/components/Header/index.tsx index 32135c515d..d031abe386 100644 --- a/console/src/components/Header/index.tsx +++ b/console/src/components/Header/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useState, useEffect } from 'react' +import React, { useCallback, useState, useContext } from 'react' import { useCurrentUser } from '@/hooks/useCurrentUser' import { setToken } from '@/api' import { Modal, ModalHeader, ModalBody } from 'baseui/modal' @@ -8,30 +8,30 @@ import useTranslation from '@/hooks/useTranslation' import { createUseStyles } from 'react-jss' import { IThemedStyleProps } from '@/theme' import { useCurrentThemeType } from '@/hooks/useCurrentThemeType' -import User from '@/domain/user/components/User' import { simulationJump } from '@/utils' import { BsChevronDown } from 'react-icons/bs' import { Link, useHistory } from 'react-router-dom' import PasswordForm from '@user/components/PasswordForm' import { IChangePasswordSchema } from '@user/schemas/user' import { changePassword } from '@user/services/user' +import { SidebarContext } from '@/contexts/SidebarContext' import { toaster } from 'baseui/toast' import { useCurrentUserRoles } from '@/hooks/useCurrentUserRoles' import IconFont from '../IconFont' +import Logo from './Logo' const useHeaderStyles = createUseStyles({ headerWrapper: { - padding: '0 32px 0 0', - position: 'absolute', - zIndex: 100, - top: 0, - right: 0, + padding: '0 20px 0 0', height: `${headerHeight}px`, - width: '50%', + width: '100%', display: 'flex', flexFlow: 'row nowrap', alignItems: 'center', color: 'var(--color-contentPrimary)', + backgroundColor: 'var(--color-brandBgNav)', + position: 'relative', + zIndex: 10, }, }) @@ -97,9 +97,9 @@ const useStyles = createUseStyles({ 'min-width': '140px', 'height': '100%', 'margin-left': '12px', - 'flex-direction': 'column', + 'padding': '10px 0 10px 0', + 'justifyContent': 'flex-end', - 'padding': '14px 0 14px 0', '&:hover': { '& $userMenu': { display: 'flex', @@ -107,16 +107,15 @@ const useStyles = createUseStyles({ }, }, userNameWrapper: { - 'height': '100%', 'display': 'flex', - 'color': 'var(--color-brandBgUserFont)', - 'backgroundColor': 'var(--color-brandBgUser)', + 'color': '#FFF', 'borderRadius': '20px', 'fontSize': '16px', 'padding': '7px 13px 7px 7px', 'align-items': 'center', - 'lineHeight': '40px', + 'height': '36px', 'gap': '9px', + 'backgroundColor': '#264480', }, userMenu: (props: IThemedStyleProps) => ({ 'position': 'absolute', @@ -173,6 +172,7 @@ export default function Header() { const themeType = useCurrentThemeType() const styles = useStyles({ theme, themeType }) const headerStyles = useHeaderStyles({ theme }) + const ctx = useContext(SidebarContext) // eslint-disable-next-line react-hooks/exhaustive-deps const { currentUser } = useCurrentUser() // eslint-disable-next-line react-hooks/exhaustive-deps @@ -192,7 +192,7 @@ export default function Header() { [t] ) - useEffect(() => { + React.useEffect(() => { if (!currentUserRole) { return } @@ -206,31 +206,14 @@ export default function Header() { return (
-
+ {currentUser && (
-
- - - -
-
- )} - {currentUser && ( -
-
- - - -
- {/*
- - - {t('Agent List')} - -
*/} + {t}
)} +
+ {currentUser && (
@@ -238,7 +221,6 @@ export default function Header() {
-
diff --git a/console/src/components/IconFont/index.tsx b/console/src/components/IconFont/index.tsx index d4beb222b6..6938276217 100644 --- a/console/src/components/IconFont/index.tsx +++ b/console/src/components/IconFont/index.tsx @@ -43,6 +43,7 @@ const iconTypes = [ 'more', 'a-sortasc', 'a-sortdesc', + 'email', ] interface IIconFontProps { diff --git a/console/src/components/Input/Input.tsx b/console/src/components/Input/Input.tsx index 454287b38c..302789b463 100644 --- a/console/src/components/Input/Input.tsx +++ b/console/src/components/Input/Input.tsx @@ -16,6 +16,8 @@ export default function Input({ size = 'compact', ...props }: IInputProps) { 'borderBottomWidth': '1px', 'borderLeftWidth': '1px', 'borderRightWidth': '1px', + 'paddingLeft': '0px', + 'paddingRight': '0px', ':hover': { borderColor: '#799EE8', }, diff --git a/console/src/components/data-table/data-custom-table.tsx b/console/src/components/data-table/data-custom-table.tsx index a79b56037f..c9c38385e9 100644 --- a/console/src/components/data-table/data-custom-table.tsx +++ b/console/src/components/data-table/data-custom-table.tsx @@ -12,7 +12,7 @@ import { LocaleContext } from './locales' import { IStore } from './store' // consider pulling this out to a prop if useful. -const HEADER_ROW_HEIGHT = 54 +const HEADER_ROW_HEIGHT = 44 const IS_BROWSER = true type HeaderContextT = { diff --git a/console/src/consts/index.ts b/console/src/consts/index.ts index 01fca2ecc9..ed569cdfc2 100644 --- a/console/src/consts/index.ts +++ b/console/src/consts/index.ts @@ -1,6 +1,6 @@ -export const headerHeight = 68 +export const headerHeight = 56 export const sidebarExpandedWidth = 200 -export const sidebarFoldedWidth = 80 +export const sidebarFoldedWidth = 68 export const textVariant = 'smallPlus' export const dateFormat = 'YYYY-MM-DD' export const dateWithZeroTimeFormat = 'YYYY-MM-DD 00:00:00' diff --git a/console/src/domain/user/schemas/user.tsx b/console/src/domain/user/schemas/user.tsx index 8200abb8f2..4042cb5d8f 100644 --- a/console/src/domain/user/schemas/user.tsx +++ b/console/src/domain/user/schemas/user.tsx @@ -22,6 +22,7 @@ export interface IRegisterUserSchema { export interface ILoginUserSchema { userName: string userPwd: string + agreement: boolean } export interface IUpdateUserSchema { diff --git a/console/src/i18n/locales.ts b/console/src/i18n/locales.ts index 0c6687a49d..324cb8aa9d 100644 --- a/console/src/i18n/locales.ts +++ b/console/src/i18n/locales.ts @@ -481,6 +481,24 @@ const locales0 = { 'Edit': { en: 'Edit', }, + 'emailPlaceholder': { + en: 'yours@example.com', + }, + 'passwordPlaceholder': { + en: 'your password', + }, + 'logIn': { + en: 'Log in', + }, + 'signUp': { + en: 'Sign up', + }, + 'agreePolicy': { + en: 'I agree to <1>Terms of Service and <3>Privacy Policy', + }, + 'alreadyHaveAccount': { + en: 'Already have an account?', + }, } export const locales: { [key in keyof typeof locales0]: ILocaleItem } = locales0 diff --git a/console/src/pages/BaseLayout.tsx b/console/src/pages/BaseLayout.tsx index fb70cbacc4..a766fae683 100644 --- a/console/src/pages/BaseLayout.tsx +++ b/console/src/pages/BaseLayout.tsx @@ -2,8 +2,6 @@ import React from 'react' import { Breadcrumbs } from 'baseui/breadcrumbs' import { useHistory } from 'react-router-dom' import { IComposedSidebarProps, INavItem } from '@/components/BaseSidebar' -import Header from '@/components/Header' -import { headerHeight } from '@/consts' import { createUseStyles } from 'react-jss' const useMainStyles = createUseStyles({ @@ -11,9 +9,8 @@ const useMainStyles = createUseStyles({ display: 'flex', flexFlow: 'row nowrap', justifyContent: 'space-between', - height: '100vh', - width: '100vw', position: 'relative', + flex: '1', }, mainContentWrapper: { overflowY: 'auto', @@ -24,7 +21,7 @@ const useMainStyles = createUseStyles({ flexDirection: 'column', }, mainContent: { - padding: '28px', + padding: '12px 20px', border: '8px', boxSizing: 'border-box', minWidth: '792px', @@ -64,11 +61,9 @@ export default function BaseLayout({ > {Sidebar && }
-
diff --git a/console/src/pages/Home/LoginNew.tsx b/console/src/pages/Home/LoginNew.tsx new file mode 100644 index 0000000000..2752bff325 --- /dev/null +++ b/console/src/pages/Home/LoginNew.tsx @@ -0,0 +1,218 @@ +import Card from '@/components/Card' +import { createForm } from '@/components/Form' +import useTranslation from '@/hooks/useTranslation' +import { ILoginUserSchema } from '@user/schemas/user' +import { loginUser } from '@user/services/user' +import qs from 'qs' +import React, { useCallback, useState } from 'react' +import { Link, useHistory, useLocation } from 'react-router-dom' +import Button from '@/components/Button' +import IconFont from '@/components/IconFont' +import Logo from '@/components/Header/Logo' +import Input from '@/components/Input' +import { BaseNavTabs } from '@/components/BaseNavTabs' +import { INavItem } from '@/components/BaseSidebar' +import { Checkbox } from 'baseui/checkbox' +import { Trans } from 'react-i18next' +import LoginLayout from './LoginLayout' +import './login.scss' + +const { Form, FormItem } = createForm() + +export default function LoginNew() { + const [t] = useTranslation() + const location = useLocation() + const history = useHistory() + const [isLoading, setIsLoading] = useState(false) + + const handleFinish = useCallback( + async (data: ILoginUserSchema) => { + setIsLoading(true) + try { + await loginUser(data) + const search = qs.parse(location.search, { ignoreQueryPrefix: true }) + let { redirect } = search + if (redirect && typeof redirect === 'string') { + redirect = decodeURI(redirect) + } else { + redirect = '/' + } + history.push(redirect) + } finally { + setIsLoading(false) + } + }, + [history, location.search] + ) + + const navItems: INavItem[] = React.useMemo(() => { + const items = [ + { + title: t('logIn'), + path: '/login', + pattern: '/\\/login\\/?', + }, + { + title: t('signUp'), + path: '/signup', + pattern: '/\\/signup\\/?', + }, + ] + return items + }, [t]) + + return ( + +
+
+ +
+ +
+ { + return { + 'paddingBottom': '12px', + 'paddingTop': '12px', + 'color': $isActive ? '#02102B' : 'rgba(2,16,43,0.60)', + ':hover': { + color: '#02102B', + }, + } + }, + }, + }} + /> + +
+
+ + } + /> + + + } + overrides={{ + MaskToggleHideIcon: () => , + MaskToggleShowIcon: () => , + }} + type='password' + placeholder={t('passwordPlaceholder')} + /> + +
+ + + +
+

+ + I agree to Terms of Service and + Privacy Policy + +

+

+ + I agree to Terms of Service and + Privacy Policy + + {t('logIn')} +

+
+
+ +
+ +
+
+
+
+
+
+
+
+ ) +} diff --git a/console/src/pages/Home/login.scss b/console/src/pages/Home/login.scss new file mode 100644 index 0000000000..dc567bec4f --- /dev/null +++ b/console/src/pages/Home/login.scss @@ -0,0 +1,13 @@ + +// for login only +form .agreement a { + font-size: 12px; + padding: 0 4px; + text-decoration: none; + } + + form .agreement p { + font-size: 12px; + line-height: 14px; + margin-bottom: 7px; + } \ No newline at end of file diff --git a/console/src/pages/Project/ProjectSidebar.tsx b/console/src/pages/Project/ProjectSidebar.tsx index e2e54e4b3b..7fc3e0c691 100644 --- a/console/src/pages/Project/ProjectSidebar.tsx +++ b/console/src/pages/Project/ProjectSidebar.tsx @@ -21,20 +21,20 @@ export default function ProjectSidebar({ style }: IComposedSidebarProps) { { title: t('Models'), path: `/projects/${projectId}/models`, - icon: , + icon: , activePathPattern: /\/(models)\/?/, }, { title: t('Datasets'), path: `/projects/${projectId}/datasets`, activePathPattern: /\/(datasets)\/?/, - icon: , + icon: , }, { title: t('Runtimes'), path: `/projects/${projectId}/runtimes`, activePathPattern: /\/(runtimes|new_runtime)\/?/, - icon: , + icon: , }, // { // title: t('Job'), @@ -46,7 +46,7 @@ export default function ProjectSidebar({ style }: IComposedSidebarProps) { title: t('Evaluations'), path: `/projects/${projectId}/evaluations`, activePathPattern: /\/(evaluations|new_job)\/?/, - icon: , + icon: , }, ] }, [project, projectId, t]) diff --git a/console/src/routes.tsx b/console/src/routes.tsx index 028e04c37e..2e57bbb4fe 100644 --- a/console/src/routes.tsx +++ b/console/src/routes.tsx @@ -40,10 +40,18 @@ import JobDAG from './pages/Job/JobDAG' import ProjectEvaluations from './pages/Project/Evaluations' import EvaluationOverviewLayout from './pages/Evaluation/EvaluationOverviewLayout' import EvaluationResults from './pages/Evaluation/EvaluationResults' +import Header from './components/Header' +import { useCurrentUser } from './hooks/useCurrentUser' +import LoginNew from './pages/Home/LoginNew' const useStyles = createUseStyles({ root: ({ theme }: IThemedStyleProps) => ({ - background: 'var(--color-brandRootBackground)', + // background: 'var(--color-brandRootBackground)', + display: 'flex', + flexFlow: 'column nowrap', + height: '100vh', + width: '100vw', + position: 'relative', color: 'var(--color-contentPrimary)', ...Object.entries(theme.colors).reduce((p, [k, v]) => { return { @@ -58,11 +66,14 @@ const Routes = () => { const themeType = useCurrentThemeType() const [, theme] = useStyletron() const styles = useStyles({ theme, themeType }) + // eslint-disable-next-line react-hooks/exhaustive-deps + const { currentUser } = useCurrentUser() return (
+ {currentUser &&
} {/* setting */} @@ -212,6 +223,8 @@ const Routes = () => { {/* other */} + + diff --git a/console/src/styles/_global.scss b/console/src/styles/_global.scss index ea91d2e32d..259a06b086 100644 --- a/console/src/styles/_global.scss +++ b/console/src/styles/_global.scss @@ -206,4 +206,3 @@ table { border-collapse: separate; } right: 5px; } - diff --git a/console/vite.config.ts b/console/vite.config.ts new file mode 100644 index 0000000000..13398af065 --- /dev/null +++ b/console/vite.config.ts @@ -0,0 +1,56 @@ +import { defineConfig } from 'vite' +import svgrPlugin from 'vite-plugin-svgr' +import path from 'path' +import { visualizer } from 'rollup-plugin-visualizer' +import react from '@vitejs/plugin-react' +import dns from 'dns' +dns.setDefaultResultOrder('verbatim') + +// https://vitejs.dev/config/ +export default defineConfig({ + server: { + proxy: { + '/api/v1/log/online': { + changeOrigin: true, + target: + (process.env.PROXY ?? '').replace('https', 'wss').replace('http', 'ws') || 'ws://127.0.0.1:8082', + ws: true, + }, + '/api': { + target: process.env.PROXY || 'http://127.0.0.1:8082', + // pathRewrite: {'/api/v1': '/'}, + changeOrigin: true, + secure: false, + }, + }, + }, + build: { + outDir: 'build', + rollupOptions: { + // plugins: [visualizer()], + }, + }, + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + '@user': path.resolve(__dirname, './src/domain/user'), + '@project': path.resolve(__dirname, './src/domain/project'), + '@model': path.resolve(__dirname, './src/domain/model'), + '@job': path.resolve(__dirname, './src/domain/job'), + '@dataset': path.resolve(__dirname, './src/domain/dataset'), + '@runtime': path.resolve(__dirname, './src/domain/runtime'), + '@base': path.resolve(__dirname, './src/domain/base'), + }, + }, + plugins: [ + react({ + exclude: /\.stories\.(t|j)sx?$/, + }), + svgrPlugin({ + svgrOptions: { + icon: true, + // ...svgr options (https://react-svgr.com/docs/options/) + }, + }), + ], +}) diff --git a/console/yarn.lock b/console/yarn.lock index bdfc0254c6..130dec8666 100644 --- a/console/yarn.lock +++ b/console/yarn.lock @@ -30,11 +30,23 @@ dependencies: "@babel/highlight" "^7.16.7" +"@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": version "7.17.7" resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== +"@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== + "@babel/core@7.12.3": version "7.12.3" resolved "https://registry.npmmirror.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" @@ -100,6 +112,27 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/core@^7.18.6": + version "7.18.10" + resolved "https://registry.npmmirror.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" + integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + "@babel/generator@^7.12.1", "@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.17.9": version "7.17.9" resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" @@ -109,6 +142,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.18.10": + version "7.18.12" + resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" + integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== + dependencies: + "@babel/types" "^7.18.10" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -116,6 +158,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" @@ -134,6 +183,16 @@ browserslist "^4.17.5" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6", "@babel/helper-create-class-features-plugin@^7.17.9": version "7.17.9" resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" @@ -203,6 +262,11 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" @@ -218,6 +282,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.17.0" +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" @@ -225,6 +297,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" @@ -239,6 +318,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": version "7.17.7" resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" @@ -253,6 +339,20 @@ "@babel/traverse" "^7.17.3" "@babel/types" "^7.17.0" +"@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" @@ -275,6 +375,11 @@ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== +"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" @@ -302,6 +407,13 @@ dependencies: "@babel/types" "^7.17.0" +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" @@ -316,16 +428,38 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + "@babel/helper-wrap-function@^7.16.8": version "7.16.8" resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" @@ -345,6 +479,15 @@ "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": version "7.17.9" resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" @@ -354,11 +497,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9", "@babel/parser@^7.7.0": version "7.17.9" resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== +"@babel/parser@^7.18.10", "@babel/parser@^7.18.11": + version "7.18.11" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" + integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" @@ -633,6 +790,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -910,6 +1074,27 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.16.7" +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx-self@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" + integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-source@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz#06e9ae8a14d2bc19ce6e3c447d842032a50598fc" + integrity sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.16.7": version "7.17.3" resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" @@ -921,6 +1106,17 @@ "@babel/plugin-syntax-jsx" "^7.16.7" "@babel/types" "^7.17.0" +"@babel/plugin-transform-react-jsx@^7.18.6": + version "7.18.10" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz#ea47b2c4197102c196cbd10db9b3bb20daa820f1" + integrity sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.18.10" + "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" @@ -1185,6 +1381,15 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/template@^7.18.10", "@babel/template@^7.18.6": + version "7.18.10" + resolved "https://registry.npmmirror.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": version "7.17.9" resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" @@ -1201,6 +1406,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.9": + version "7.18.11" + resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" + integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.11" + "@babel/types" "^7.18.10" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.11", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.17.0" resolved "https://registry.npmmirror.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" @@ -1209,6 +1430,15 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9": + version "7.18.10" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" + integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.npmmirror.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -1782,11 +2012,25 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.5" resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.11" resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" @@ -1800,6 +2044,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mapbox/geojson-rewind@^0.5.0": version "0.5.1" resolved "https://registry.npmmirror.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz#adbe16dc683eb40e90934c51a5e28c7bbf44f4e1" @@ -4363,6 +4615,19 @@ rehype "~12.0.1" rehype-sanitize "~5.0.1" +"@vitejs/plugin-react@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-2.0.0.tgz#12decd097773a00620e44b780b1d2c00df101449" + integrity sha512-zHkRR+X4zqEPNBbKV2FvWSxK7Q6crjMBVIAYroSU8Nbb4M3E5x4qOiLoqJBHtXgr27kfednXjkwr3lr8jS6Wrw== + dependencies: + "@babel/core" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-jsx-self" "^7.18.6" + "@babel/plugin-transform-react-jsx-source" "^7.18.6" + magic-string "^0.26.2" + react-refresh "^0.14.0" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -5718,7 +5983,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.14.2, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.5, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.6.2, browserslist@^4.6.4: +browserslist@4.14.2, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.5, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.20.2, browserslist@^4.6.2, browserslist@^4.6.4: version "4.20.2" resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== @@ -13245,6 +13510,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.26.2: + version "0.26.2" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -16951,6 +17223,11 @@ react-refresh@^0.11.0: resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + react-refresh@^0.8.3: version "0.8.3" resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"