Commit a09a0eedd29fdc9a9bd5414bd12c08e37c72982a

Authored by vben
1 parent be3a3ed6

perf: improve login logic

package.json
... ... @@ -13,7 +13,6 @@
13 13 "log": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
14 14 "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
15 15 "clean:lib": "npx rimraf node_modules",
16   - "typecheck": "vuedx-typecheck .",
17 16 "lint:eslint": "eslint \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
18 17 "lint:prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
19 18 "lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
... ... @@ -27,7 +26,7 @@
27 26 },
28 27 "dependencies": {
29 28 "@iconify/iconify": "^2.0.0-rc.6",
30   - "@vueuse/core": "^4.1.1",
  29 + "@vueuse/core": "^4.2.1",
31 30 "@zxcvbn-ts/core": "^0.2.0",
32 31 "ant-design-vue": "2.0.0",
33 32 "apexcharts": "^3.25.0",
... ... @@ -52,7 +51,7 @@
52 51 "devDependencies": {
53 52 "@commitlint/cli": "^11.0.0",
54 53 "@commitlint/config-conventional": "^11.0.0",
55   - "@iconify/json": "^1.1.306",
  54 + "@iconify/json": "^1.1.307",
56 55 "@ls-lint/ls-lint": "^1.9.2",
57 56 "@purge-icons/generated": "^0.7.0",
58 57 "@types/fs-extra": "^9.0.7",
... ... @@ -70,8 +69,6 @@
70 69 "@vitejs/plugin-vue": "^1.1.4",
71 70 "@vitejs/plugin-vue-jsx": "^1.1.0",
72 71 "@vue/compiler-sfc": "^3.0.5",
73   - "@vuedx/typecheck": "^0.6.3",
74   - "@vuedx/typescript-plugin-vue": "^0.6.3",
75 72 "autoprefixer": "^10.2.4",
76 73 "commitizen": "^4.2.3",
77 74 "conventional-changelog-cli": "^2.1.1",
... ... @@ -84,7 +81,7 @@
84 81 "esno": "^0.4.4",
85 82 "fs-extra": "^9.1.0",
86 83 "http-server": "^0.12.3",
87   - "husky": "^5.0.9",
  84 + "husky": "^5.1.0",
88 85 "is-ci": "^3.0.0",
89 86 "less": "^4.1.1",
90 87 "lint-staged": "^10.5.4",
... ... @@ -100,14 +97,14 @@
100 97 "typescript": "^4.1.5",
101 98 "vite": "2.0.1",
102 99 "vite-plugin-compression": "^0.2.1",
103   - "vite-plugin-html": "^2.0.0",
  100 + "vite-plugin-html": "^2.0.1",
104 101 "vite-plugin-imagemin": "^0.2.7",
105 102 "vite-plugin-mock": "^2.1.4",
106 103 "vite-plugin-purge-icons": "^0.7.0",
107   - "vite-plugin-pwa": "^0.5.2",
  104 + "vite-plugin-pwa": "^0.5.3",
108 105 "vite-plugin-style-import": "^0.7.3",
109 106 "vite-plugin-theme": "^0.4.3",
110   - "vite-plugin-windicss": "0.4.3",
  107 + "vite-plugin-windicss": "0.4.4",
111 108 "vue-eslint-parser": "^7.5.0",
112 109 "yargs": "^16.2.0"
113 110 },
... ...
src/components/CountDown/src/CountdownInput.vue
1 1 <template>
2   - <div :class="prefixCls">
3   - <AInput v-bind="$attrs" :size="size" v-model:value="state">
4   - <template #addonAfter>
5   - <CountButton :size="size" :count="count" :beforeStartFunc="sendCodeApi" />
6   - </template>
7   - </AInput>
8   - </div>
  2 + <AInput v-bind="$attrs" :class="prefixCls" :size="size">
  3 + <template #addonAfter>
  4 + <CountButton :size="size" :count="count" :beforeStartFunc="sendCodeApi" />
  5 + </template>
  6 + </AInput>
9 7 </template>
10 8 <script lang="ts">
11 9 import { defineComponent, PropType } from 'vue';
... ... @@ -32,7 +30,6 @@
32 30 },
33 31 setup(props) {
34 32 const { prefixCls } = useDesign('countdown-input');
35   -
36 33 const [state] = useRuleFormItem(props);
37 34 return { prefixCls, state };
38 35 },
... ...
src/design/var/breakpoint.less
... ... @@ -2,17 +2,32 @@
2 2 // ==============屏幕断点============
3 3 // =================================
4 4  
  5 +// Extra small screen / phone
  6 +@screen-xs: 480px;
  7 +@screen-xs-min: @screen-xs;
  8 +
5 9 // Small screen / tablet
6   -@screen-sm: 640px;
  10 +@screen-sm: 576px;
  11 +@screen-sm-min: @screen-sm;
7 12  
8 13 // Medium screen / desktop
9 14 @screen-md: 768px;
  15 +@screen-md-min: @screen-md;
10 16  
11 17 // Large screen / wide desktop
12   -@screen-lg: 1024px;
  18 +@screen-lg: 992px;
  19 +@screen-lg-min: @screen-lg;
13 20  
14 21 // Extra large screen / full hd
15   -@screen-xl: 1280px;
  22 +@screen-xl: 1200px;
  23 +@screen-xl-min: @screen-xl;
16 24  
17 25 // Extra extra large screen / large desktop
18   -@screen-2xl: 1536px;
  26 +@screen-2xl: 1600px;
  27 +@screen-2xl-min: @screen-2xl;
  28 +
  29 +@screen-xs-max: (@screen-sm-min - 1px);
  30 +@screen-sm-max: (@screen-md-min - 1px);
  31 +@screen-md-max: (@screen-lg-min - 1px);
  32 +@screen-lg-max: (@screen-xl-min - 1px);
  33 +@screen-xl-max: (@screen-2xl-min - 1px);
... ...
src/hooks/component/useFormItem.ts
... ... @@ -17,7 +17,7 @@ export function useRuleFormItem&lt;T extends Indexable&gt;(
17 17  
18 18 const defaultState = readonly(innerState);
19 19  
20   - const setState = (val: UnwrapRef<T[keyof T]>) => {
  20 + const setState = (val: UnwrapRef<T[keyof T]>): void => {
21 21 innerState.value = val as T[keyof T];
22 22 };
23 23  
... ...
src/hooks/web/useECharts.ts
1 1 import { useTimeoutFn } from '/@/hooks/core/useTimeout';
2 2 import { tryOnUnmounted } from '/@/utils/helper/vueHelper';
3 3 import { unref, Ref, nextTick } from 'vue';
4   -import type { EChartsType, EChartsOption } from 'echarts';
  4 +import type { EChartsOption } from 'echarts';
5 5 import { useDebounce } from '/@/hooks/core/useDebounce';
6 6 import { useEventListener } from '/@/hooks/event/useEventListener';
7 7 import { useBreakpoint } from '/@/hooks/event/useBreakpoint';
... ... @@ -12,7 +12,7 @@ export function useECharts(
12 12 elRef: Ref<HTMLDivElement>,
13 13 theme: 'light' | 'dark' | 'default' = 'light'
14 14 ) {
15   - let chartInstance: Nullable<EChartsType> = null;
  15 + let chartInstance: echarts.ECharts | null = null;
16 16 let resizeFn: Fn = resize;
17 17 let removeResizeFn: Fn = () => {};
18 18  
... ...
src/hooks/web/useHeight.ts deleted 100644 → 0
1   -import { Ref, ref, onMounted, nextTick } from 'vue';
2   -import { useRect } from '/@/hooks/web/useRect';
3   -export const useHeight = (element: Element | Ref<Element>) => {
4   - const height = ref();
5   -
6   - onMounted(() => {
7   - nextTick(() => {
8   - height.value = useRect(element).height;
9   - });
10   - });
11   -
12   - return height;
13   -};
src/hooks/web/useI18n.ts
... ... @@ -11,23 +11,24 @@ type I18nGlobalTranslation = {
11 11  
12 12 type I18nTranslationRestParameters = [string, any];
13 13  
  14 +function getKey(namespace: string | undefined, key: string) {
  15 + if (!namespace) {
  16 + return key;
  17 + }
  18 + if (key.startsWith(namespace)) {
  19 + return key;
  20 + }
  21 + return `${namespace}.${key}`;
  22 +}
  23 +
14 24 export function useI18n(
15 25 namespace?: string
16 26 ): {
17 27 t: I18nGlobalTranslation;
18 28 } {
19   - function getKey(key: string) {
20   - if (!namespace) {
21   - return key;
22   - }
23   - if (key.startsWith(namespace)) {
24   - return key;
25   - }
26   - return `${namespace}.${key}`;
27   - }
28 29 const normalFn = {
29 30 t: (key: string) => {
30   - return getKey(key);
  31 + return getKey(namespace, key);
31 32 },
32 33 };
33 34  
... ... @@ -39,7 +40,7 @@ export function useI18n(
39 40  
40 41 const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => {
41 42 if (!key) return '';
42   - return t(getKey(key), ...(arg as I18nTranslationRestParameters));
  43 + return t(getKey(namespace, key), ...(arg as I18nTranslationRestParameters));
43 44 };
44 45 return {
45 46 ...methods,
... ...
src/hooks/web/useRect.ts deleted 100644 → 0
1   -import { Ref, unref } from 'vue';
2   -import { isWindow } from '/@/utils/is';
3   -
4   -export const useRect = (elementRef: (Element | Window) | Ref<Element | Window | undefined>) => {
5   - const element = unref(elementRef);
6   -
7   - if (isWindow(element)) {
8   - const width = element.innerWidth;
9   - const height = element.innerHeight;
10   -
11   - return {
12   - top: 0,
13   - left: 0,
14   - right: width,
15   - bottom: height,
16   - width,
17   - height,
18   - };
19   - }
20   -
21   - if (element && element.getBoundingClientRect) {
22   - return element.getBoundingClientRect();
23   - }
24   -
25   - return {
26   - top: 0,
27   - left: 0,
28   - right: 0,
29   - bottom: 0,
30   - width: 0,
31   - height: 0,
32   - };
33   -};
src/layouts/default/header/components/user-dropdown/index.vue
1 1 <template>
2 2 <Dropdown placement="bottomLeft" :overlayClassName="`${prefixCls}-dropdown-overlay`">
3   - <span :class="[prefixCls, `${prefixCls}--${theme}`]">
  3 + <span :class="[prefixCls, `${prefixCls}--${theme}`]" class="flex">
4 4 <img :class="`${prefixCls}__header`" :src="headerImg" />
5   - <span :class="`${prefixCls}__info`">
6   - <span :class="`${prefixCls}__name`" class="truncate">{{ getUserInfo.realName }}</span>
  5 + <span :class="`${prefixCls}__info hidden md:block`">
  6 + <span :class="`${prefixCls}__name `" class="truncate">
  7 + {{ getUserInfo.realName }}
  8 + </span>
7 9 </span>
8 10 </span>
9 11  
... ... @@ -121,9 +123,7 @@
121 123 @prefix-cls: ~'@{namespace}-header-user-dropdown';
122 124  
123 125 .@{prefix-cls} {
124   - display: flex;
125 126 height: @header-height;
126   - min-width: 100px;
127 127 padding: 0 0 0 10px;
128 128 padding-right: 10px;
129 129 overflow: hidden;
... ...
src/main.ts
... ... @@ -16,6 +16,7 @@ import { isDevMode } from &#39;/@/utils/env&#39;;
16 16  
17 17 const app = createApp(App);
18 18  
  19 +// Register global components
19 20 registerGlobComp(app);
20 21  
21 22 // Multilingual configuration
... ...
src/router/constant.ts
... ... @@ -2,7 +2,9 @@ import type { AppRouteRecordRaw } from &#39;/@/router/types&#39;;
2 2 import ParentLayout from '/@/layouts/page/ParentView.vue';
3 3 import { t } from '/@/hooks/web/useI18n';
4 4  
5   -const EXCEPTION_COMPONENT = () => import('../views/sys/exception/Exception.vue');
  5 +export const REDIRECT_NAME = 'Redirect';
  6 +
  7 +export const EXCEPTION_COMPONENT = () => import('../views/sys/exception/Exception.vue');
6 8  
7 9 /**
8 10 * @description: default layout
... ... @@ -44,8 +46,6 @@ export const PAGE_NOT_FOUND_ROUTE: AppRouteRecordRaw = {
44 46 ],
45 47 };
46 48  
47   -export const REDIRECT_NAME = 'Redirect';
48   -
49 49 export const REDIRECT_ROUTE: AppRouteRecordRaw = {
50 50 path: '/redirect',
51 51 name: REDIRECT_NAME,
... ...
src/router/guard/httpGuard.ts
... ... @@ -2,6 +2,10 @@ import type { Router } from &#39;vue-router&#39;;
2 2 import { useProjectSetting } from '/@/hooks/setting';
3 3 import { AxiosCanceler } from '/@/utils/http/axios/axiosCancel';
4 4  
  5 +/**
  6 + * The interface used to close the current page to complete the request when the route is switched
  7 + * @param router
  8 + */
5 9 export function createHttpGuard(router: Router) {
6 10 const { removeAllHttpPending } = useProjectSetting();
7 11 let axiosCanceler: Nullable<AxiosCanceler>;
... ...
src/router/guard/messageGuard.ts
... ... @@ -4,6 +4,10 @@ import { Modal, notification } from &#39;ant-design-vue&#39;;
4 4  
5 5 import { warn } from '/@/utils/log';
6 6  
  7 +/**
  8 + * Used to close the message instance when the route is switched
  9 + * @param router
  10 + */
7 11 export function createMessageGuard(router: Router) {
8 12 const { closeMessageOnSwitch } = useProjectSetting();
9 13  
... ...
src/router/index.ts
... ... @@ -6,7 +6,6 @@ import { createRouter, createWebHashHistory } from &#39;vue-router&#39;;
6 6 import { createGuard } from './guard/';
7 7  
8 8 import { basicRoutes } from './routes/';
9   -import { scrollBehavior } from './scrollBehavior';
10 9 import { REDIRECT_NAME } from './constant';
11 10  
12 11 // app router
... ... @@ -14,7 +13,7 @@ const router = createRouter({
14 13 history: createWebHashHistory(),
15 14 routes: (basicRoutes as unknown) as RouteRecordRaw[],
16 15 strict: true,
17   - scrollBehavior: scrollBehavior,
  16 + scrollBehavior: () => ({ left: 0, top: 0 }),
18 17 });
19 18  
20 19 // reset router
... ...
src/router/scrollBehavior.ts deleted 100644 → 0
1   -// see https://github.com/vuejs/vue-router-next/blob/master/playground/scrollWaiter.ts
2   -import type { RouteLocationNormalized } from 'vue-router';
3   -// class ScrollQueue {
4   -// private resolve: (() => void) | null = null;
5   -// private promise: Promise<any> | null = null;
6   -
7   -// add() {
8   -// this.promise = new Promise((resolve) => {
9   -// this.resolve = resolve as () => void;
10   -// });
11   -// }
12   -
13   -// flush() {
14   -// this.resolve && this.resolve();
15   -// this.resolve = null;
16   -// this.promise = null;
17   -// }
18   -
19   -// async wait() {
20   -// await this.promise;
21   -// }
22   -// }
23   -// const scrollWaiter = new ScrollQueue();
24   -
25   -/**
26   - * Handles the scroll behavior on route navigation
27   - *
28   - * @param {object} to Route object of next page
29   - * @param {object} from Route object of previous page
30   - * @param {object} savedPosition Used by popstate navigations
31   - * @returns {(object|boolean)} Scroll position or `false`
32   - */
33   -// @ts-ignore
34   -export async function scrollBehavior(to, from, savedPosition) {
35   - // await scrollWaiter.wait();
36   - // Use predefined scroll behavior if defined, defaults to no scroll behavior
37   - const behavior = 'smooth';
38   - // Returning the `savedPosition` (if available) will result in a native-like
39   - // behavior when navigating with back/forward buttons
40   - if (savedPosition) {
41   - return { ...savedPosition, behavior };
42   - }
43   -
44   - // Scroll to anchor by returning the selector
45   - if (to.hash) {
46   - return { el: decodeURI(to.hash), behavior };
47   - }
48   -
49   - // Check if any matched route config has meta that discourages scrolling to top
50   - if (to.matched.some((m: RouteLocationNormalized) => m.meta.scrollToTop === false)) {
51   - // Leave scroll as it is
52   - return false;
53   - }
54   -
55   - // Always scroll to top
56   - return { left: 0, top: 0, behavior };
57   -}
src/router/types.ts
... ... @@ -89,12 +89,5 @@ export interface MenuModule {
89 89 menu: Menu;
90 90 }
91 91  
92   -// interface RouteModule {
93   -// layout: AppRouteRecordRaw;
94   -// routes: AppRouteRecordRaw[];
95   -// children?: AppRouteRecordRaw[];
96   -// component?: Component;
97   -// }
98   -
99 92 // export type AppRouteModule = RouteModule | AppRouteRecordRaw;
100 93 export type AppRouteModule = AppRouteRecordRaw;
... ...
src/store/index.ts
1 1 import type { App } from 'vue';
2   -import {
3   - createStore,
4   - // createLogger, Plugin
5   -} from 'vuex';
  2 +import { createStore } from 'vuex';
6 3 import { config } from 'vuex-module-decorators';
7 4 import { isDevMode } from '/@/utils/env';
8 5  
9 6 config.rawError = true;
10   -const isDev = isDevMode();
11   -// const plugins: Plugin<any>[] = isDev ? [createLogger()] : [];
12 7  
13 8 const store = createStore({
14   - // modules: {},
15   - strict: isDev,
16   - // plugins,
  9 + strict: isDevMode(),
17 10 });
18 11  
19 12 export function setupStore(app: App<Element>) {
... ...
src/utils/encryption/aesEncryption.ts
1 1 import CryptoES from 'crypto-es';
  2 +
2 3 export interface EncryptionParams {
3 4 key: string;
4 5 iv: string;
5 6 }
  7 +
6 8 export class Encryption {
7 9 private key;
8 10  
... ... @@ -16,7 +18,7 @@ export class Encryption {
16 18  
17 19 get getOptions(): CryptoES.lib.CipherCfg {
18 20 return {
19   - mode: CryptoES.mode.CBC as any,
  21 + mode: CryptoES.mode.CBC,
20 22 padding: CryptoES.pad.Pkcs7,
21 23 iv: this.iv,
22 24 };
... ...
src/views/sys/login/ForgetPasswordForm.vue
1 1 <template>
2   - <Form class="p-4" :model="formData" :rules="getFormRules" ref="formRef">
3   - <FormItem name="account" class="enter-x">
4   - <Input size="large" v-model:value="formData.account" :placeholder="t('sys.login.userName')" />
5   - </FormItem>
  2 + <template v-if="getShow">
  3 + <LoginFormTitle class="enter-x" />
  4 + <Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef">
  5 + <FormItem name="account" class="enter-x">
  6 + <Input
  7 + size="large"
  8 + v-model:value="formData.account"
  9 + :placeholder="t('sys.login.userName')"
  10 + />
  11 + </FormItem>
6 12  
7   - <FormItem name="mobile" class="enter-x">
8   - <Input size="large" v-model:value="formData.mobile" :placeholder="t('sys.login.mobile')" />
9   - </FormItem>
10   - <FormItem name="sms" class="enter-x">
11   - <CountdownInput
12   - size="large"
13   - v-model:value="formData.sms"
14   - :placeholder="t('sys.login.smsCode')"
15   - />
16   - </FormItem>
  13 + <FormItem name="mobile" class="enter-x">
  14 + <Input size="large" v-model:value="formData.mobile" :placeholder="t('sys.login.mobile')" />
  15 + </FormItem>
  16 + <FormItem name="sms" class="enter-x">
  17 + <CountdownInput
  18 + size="large"
  19 + v-model:value="formData.sms"
  20 + :placeholder="t('sys.login.smsCode')"
  21 + />
  22 + </FormItem>
17 23  
18   - <FormItem class="enter-x">
19   - <Button
20   - type="primary"
21   - size="large"
22   - block
23   - @click="handleReset"
24   - :loading="loading"
25   - class="enter-x"
26   - >
27   - {{ t('common.resetText') }}
28   - </Button>
29   - <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">
30   - {{ t('sys.login.backSignIn') }}
31   - </Button>
32   - </FormItem>
33   - </Form>
  24 + <FormItem class="enter-x">
  25 + <Button type="primary" size="large" block @click="handleReset" :loading="loading">
  26 + {{ t('common.resetText') }}
  27 + </Button>
  28 + <Button size="large" block class="mt-4" @click="handleBackLogin">
  29 + {{ t('sys.login.backSignIn') }}
  30 + </Button>
  31 + </FormItem>
  32 + </Form>
  33 + </template>
34 34 </template>
35 35 <script lang="ts">
36   - import { defineComponent, reactive, ref } from 'vue';
  36 + import { defineComponent, reactive, ref, computed, unref } from 'vue';
37 37  
  38 + import LoginFormTitle from './LoginFormTitle.vue';
38 39 import { Form, Input, Button } from 'ant-design-vue';
39 40 import { CountdownInput } from '/@/components/CountDown';
40 41  
41 42 import { useI18n } from '/@/hooks/web/useI18n';
42   - import { LoginStateEnum, useLoginState, useFormRules, useFormValid } from './useLogin';
  43 + import { useLoginState, useFormRules, useFormValid, LoginStateEnum } from './useLogin';
43 44  
44 45 export default defineComponent({
45 46 name: 'ForgetPasswordForm',
... ... @@ -49,10 +50,11 @@
49 50 FormItem: Form.Item,
50 51 Input,
51 52 CountdownInput,
  53 + LoginFormTitle,
52 54 },
53 55 setup() {
54 56 const { t } = useI18n();
55   - const { setLoginState } = useLoginState();
  57 + const { handleBackLogin, getLoginState } = useLoginState();
56 58 const { getFormRules } = useFormRules();
57 59  
58 60 const formRef = ref<any>(null);
... ... @@ -66,16 +68,14 @@
66 68  
67 69 const { validForm } = useFormValid(formRef);
68 70  
  71 + const getShow = computed(() => unref(getLoginState) === LoginStateEnum.RESET_PASSWORD);
  72 +
69 73 async function handleReset() {
70 74 const data = await validForm();
71 75 if (!data) return;
72 76 console.log(data);
73 77 }
74 78  
75   - function handleBackLogin() {
76   - setLoginState(LoginStateEnum.LOGIN);
77   - }
78   -
79 79 return {
80 80 t,
81 81 formRef,
... ... @@ -84,6 +84,7 @@
84 84 handleReset,
85 85 loading,
86 86 handleBackLogin,
  87 + getShow,
87 88 };
88 89 },
89 90 });
... ...
src/views/sys/login/Login.vue
... ... @@ -9,7 +9,7 @@
9 9 <AppLogo :alwaysShowTitle="true" />
10 10 </span>
11 11  
12   - <div class="container relative h-full py-2 mx-auto sm:px-10">
  12 + <div class="container relative h-full py-2 mx-auto sm:px-10 -enter-x">
13 13 <div class="flex h-full">
14 14 <div class="hidden xl:flex xl:flex-col xl:w-6/12 min-h-full mr-4 pl-4">
15 15 <AppLogo class="-enter-x" />
... ... @@ -31,14 +31,11 @@
31 31 <div
32 32 class="my-auto mx-auto xl:ml-20 bg-white xl:bg-transparent px-5 py-8 sm:px-8 xl:p-0 rounded-md shadow-md xl:shadow-none w-full sm:w-3/4 lg:w-2/4 xl:w-auto enter-x relative"
33 33 >
34   - <h2 class="font-bold text-2xl xl:text-3xl enter-x text-center xl:text-left mb-6">
35   - {{ getFormTitle }}
36   - </h2>
37   - <LoginForm v-show="getShowLogin" />
38   - <ForgetPasswordForm v-if="getShowResetPassword" />
39   - <RegisterForm v-if="getShowRegister" />
40   - <MobileForm v-if="getShowMobile" />
41   - <QrCodeForm v-if="getShowQrCode" />
  34 + <LoginForm />
  35 + <ForgetPasswordForm />
  36 + <RegisterForm />
  37 + <MobileForm />
  38 + <QrCodeForm />
42 39 </div>
43 40 </div>
44 41 </div>
... ... @@ -59,7 +56,6 @@
59 56 import { useGlobSetting, useProjectSetting } from '/@/hooks/setting';
60 57 import { useI18n } from '/@/hooks/web/useI18n';
61 58 import { useDesign } from '/@/hooks/web/useDesign';
62   - import { useShowLoginForm, useFormTitle } from './useLogin';
63 59  
64 60 export default defineComponent({
65 61 name: 'Login',
... ... @@ -74,7 +70,6 @@
74 70 },
75 71 setup() {
76 72 const globSetting = useGlobSetting();
77   - const { getFormTitle } = useFormTitle();
78 73 const { prefixCls } = useDesign('login');
79 74 const { locale } = useProjectSetting();
80 75 const { t } = useI18n();
... ... @@ -84,8 +79,6 @@
84 79 prefixCls,
85 80 title: computed(() => globSetting?.title ?? ''),
86 81 showLocale: computed(() => locale.show),
87   - getFormTitle,
88   - ...useShowLoginForm(),
89 82 };
90 83 },
91 84 });
... ...
src/views/sys/login/LoginForm.vue
1 1 <template>
2   - <Form class="p-4" :model="formData" :rules="getFormRules" ref="formRef">
  2 + <LoginFormTitle v-show="getShow" class="enter-x" />
  3 + <Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef" v-show="getShow">
3 4 <FormItem name="account" class="enter-x">
4 5 <Input size="large" v-model:value="formData.account" :placeholder="t('sys.login.userName')" />
5 6 </FormItem>
... ... @@ -32,14 +33,7 @@
32 33 </ARow>
33 34  
34 35 <FormItem class="enter-x">
35   - <Button
36   - type="primary"
37   - size="large"
38   - block
39   - @click="handleLogin"
40   - :loading="loading"
41   - class="enter-x"
42   - >
  36 + <Button type="primary" size="large" block @click="handleLogin" :loading="loading">
43 37 {{ t('sys.login.loginButton') }}
44 38 </Button>
45 39 <!-- <Button size="large" class="mt-4 enter-x" block @click="handleRegister">
... ... @@ -64,7 +58,7 @@
64 58 </ACol>
65 59 </ARow>
66 60  
67   - <Divider>{{ t('sys.login.otherSignIn') }}</Divider>
  61 + <Divider class="enter-x">{{ t('sys.login.otherSignIn') }}</Divider>
68 62  
69 63 <div class="flex justify-evenly enter-x" :class="`${prefixCls}-sign-in-way`">
70 64 <GithubFilled />
... ... @@ -76,7 +70,7 @@
76 70 </Form>
77 71 </template>
78 72 <script lang="ts">
79   - import { defineComponent, reactive, ref, toRaw } from 'vue';
  73 + import { defineComponent, reactive, ref, toRaw, unref, computed } from 'vue';
80 74  
81 75 import { Checkbox, Form, Input, Row, Col, Button, Divider } from 'ant-design-vue';
82 76 import {
... ... @@ -86,6 +80,7 @@
86 80 GoogleCircleFilled,
87 81 TwitterCircleFilled,
88 82 } from '@ant-design/icons-vue';
  83 + import LoginFormTitle from './LoginFormTitle.vue';
89 84  
90 85 import { useI18n } from '/@/hooks/web/useI18n';
91 86 import { useMessage } from '/@/hooks/web/useMessage';
... ... @@ -97,15 +92,16 @@
97 92 export default defineComponent({
98 93 name: 'LoginForm',
99 94 components: {
  95 + [Col.name]: Col,
  96 + [Row.name]: Row,
100 97 Checkbox,
101 98 Button,
102 99 Form,
103 100 FormItem: Form.Item,
104 101 Input,
105 102 Divider,
  103 + LoginFormTitle,
106 104 InputPassword: Input.Password,
107   - [Col.name]: Col,
108   - [Row.name]: Row,
109 105 GithubFilled,
110 106 WechatFilled,
111 107 AlipayCircleFilled,
... ... @@ -117,7 +113,7 @@
117 113 const { notification } = useMessage();
118 114 const { prefixCls } = useDesign('login');
119 115  
120   - const { setLoginState } = useLoginState();
  116 + const { setLoginState, getLoginState } = useLoginState();
121 117 const { getFormRules } = useFormRules();
122 118  
123 119 const formRef = ref<any>(null);
... ... @@ -131,6 +127,8 @@
131 127  
132 128 const { validForm } = useFormValid(formRef);
133 129  
  130 + const getShow = computed(() => unref(getLoginState) === LoginStateEnum.LOGIN);
  131 +
134 132 async function handleLogin() {
135 133 const data = await validForm();
136 134 if (!data) return;
... ... @@ -165,6 +163,7 @@
165 163 loading,
166 164 setLoginState,
167 165 LoginStateEnum,
  166 + getShow,
168 167 };
169 168 },
170 169 });
... ...
src/views/sys/login/LoginFormTitle.vue 0 → 100644
  1 +<template>
  2 + <h2 class="font-bold text-2xl xl:text-3xl enter-x text-center xl:text-left mb-6">
  3 + {{ getFormTitle }}
  4 + </h2>
  5 +</template>
  6 +<script lang="ts">
  7 + import { defineComponent, computed, unref } from 'vue';
  8 +
  9 + import { useI18n } from '/@/hooks/web/useI18n';
  10 + import { LoginStateEnum, useLoginState } from './useLogin';
  11 +
  12 + export default defineComponent({
  13 + name: 'LoginFormTitle',
  14 + setup() {
  15 + const { t } = useI18n();
  16 +
  17 + const { getLoginState } = useLoginState();
  18 +
  19 + const getFormTitle = computed(() => {
  20 + const titleObj = {
  21 + [LoginStateEnum.RESET_PASSWORD]: t('sys.login.forgetFormTitle'),
  22 + [LoginStateEnum.LOGIN]: t('sys.login.signInFormTitle'),
  23 + [LoginStateEnum.REGISTER]: t('sys.login.signUpFormTitle'),
  24 + [LoginStateEnum.MOBILE]: t('sys.login.mobileSignInFormTitle'),
  25 + [LoginStateEnum.QR_CODE]: t('sys.login.qrSignInFormTitle'),
  26 + };
  27 + return titleObj[unref(getLoginState)];
  28 + });
  29 +
  30 + return {
  31 + getFormTitle,
  32 + };
  33 + },
  34 + });
  35 +</script>
... ...
src/views/sys/login/MobileForm.vue
1 1 <template>
2   - <Form class="p-4" :model="formData" :rules="getFormRules" ref="formRef">
3   - <FormItem name="mobile" class="enter-x">
4   - <Input size="large" v-model:value="formData.mobile" :placeholder="t('sys.login.mobile')" />
5   - </FormItem>
6   - <FormItem name="sms" class="enter-x">
7   - <CountdownInput
8   - size="large"
9   - v-model:value="formData.sms"
10   - :placeholder="t('sys.login.smsCode')"
11   - />
12   - </FormItem>
  2 + <template v-if="getShow">
  3 + <LoginFormTitle class="enter-x" />
  4 + <Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef">
  5 + <FormItem name="mobile" class="enter-x">
  6 + <Input size="large" v-model:value="formData.mobile" :placeholder="t('sys.login.mobile')" />
  7 + </FormItem>
  8 + <FormItem name="sms" class="enter-x">
  9 + <CountdownInput
  10 + size="large"
  11 + v-model:value="formData.sms"
  12 + :placeholder="t('sys.login.smsCode')"
  13 + />
  14 + </FormItem>
13 15  
14   - <FormItem class="enter-x">
15   - <Button
16   - type="primary"
17   - size="large"
18   - block
19   - @click="handleLogin"
20   - :loading="loading"
21   - class="enter-x"
22   - >
23   - {{ t('sys.login.loginButton') }}
24   - </Button>
25   - <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">
26   - {{ t('sys.login.backSignIn') }}
27   - </Button>
28   - </FormItem>
29   - </Form>
  16 + <FormItem class="enter-x">
  17 + <Button type="primary" size="large" block @click="handleLogin" :loading="loading">
  18 + {{ t('sys.login.loginButton') }}
  19 + </Button>
  20 + <Button size="large" block class="mt-4" @click="handleBackLogin">
  21 + {{ t('sys.login.backSignIn') }}
  22 + </Button>
  23 + </FormItem>
  24 + </Form>
  25 + </template>
30 26 </template>
31 27 <script lang="ts">
32   - import { defineComponent, reactive, ref } from 'vue';
  28 + import { defineComponent, reactive, ref, computed, unref } from 'vue';
33 29  
34 30 import { Form, Input, Button } from 'ant-design-vue';
35 31 import { CountdownInput } from '/@/components/CountDown';
  32 + import LoginFormTitle from './LoginFormTitle.vue';
36 33  
37 34 import { useI18n } from '/@/hooks/web/useI18n';
38   - import { LoginStateEnum, useLoginState, useFormRules, useFormValid } from './useLogin';
  35 + import { useLoginState, useFormRules, useFormValid, LoginStateEnum } from './useLogin';
39 36  
40 37 export default defineComponent({
41 38 name: 'MobileForm',
... ... @@ -45,10 +42,11 @@
45 42 FormItem: Form.Item,
46 43 Input,
47 44 CountdownInput,
  45 + LoginFormTitle,
48 46 },
49 47 setup() {
50 48 const { t } = useI18n();
51   - const { setLoginState } = useLoginState();
  49 + const { handleBackLogin, getLoginState } = useLoginState();
52 50 const { getFormRules } = useFormRules();
53 51  
54 52 const formRef = ref<any>(null);
... ... @@ -61,16 +59,14 @@
61 59  
62 60 const { validForm } = useFormValid(formRef);
63 61  
  62 + const getShow = computed(() => unref(getLoginState) === LoginStateEnum.MOBILE);
  63 +
64 64 async function handleLogin() {
65 65 const data = await validForm();
66 66 if (!data) return;
67 67 console.log(data);
68 68 }
69 69  
70   - function handleBackLogin() {
71   - setLoginState(LoginStateEnum.LOGIN);
72   - }
73   -
74 70 return {
75 71 t,
76 72 formRef,
... ... @@ -79,6 +75,7 @@
79 75 handleLogin,
80 76 loading,
81 77 handleBackLogin,
  78 + getShow,
82 79 };
83 80 },
84 81 });
... ...
src/views/sys/login/QrCodeForm.vue
1 1 <template>
2   - <div class="enter-x min-w-64 min-h-64">
3   - <QrCode :value="qrCodeUrl" class="enter-x flex justify-center xl:justify-start" :width="280" />
4   - <Divider>{{ t('sys.login.scanSign') }}</Divider>
5   - <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">
6   - {{ t('sys.login.backSignIn') }}
7   - </Button>
8   - </div>
  2 + <template v-if="getShow">
  3 + <LoginFormTitle class="enter-x" />
  4 + <div class="enter-x min-w-64 min-h-64">
  5 + <QrCode
  6 + :value="qrCodeUrl"
  7 + class="enter-x flex justify-center xl:justify-start"
  8 + :width="280"
  9 + />
  10 + <Divider class="enter-x">{{ t('sys.login.scanSign') }}</Divider>
  11 + <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">
  12 + {{ t('sys.login.backSignIn') }}
  13 + </Button>
  14 + </div>
  15 + </template>
9 16 </template>
10 17 <script lang="ts">
11   - import { defineComponent } from 'vue';
  18 + import { defineComponent, computed, unref } from 'vue';
12 19  
  20 + import LoginFormTitle from './LoginFormTitle.vue';
13 21 import { Button, Divider } from 'ant-design-vue';
  22 + import { QrCode } from '/@/components/Qrcode/index';
14 23  
15 24 import { useI18n } from '/@/hooks/web/useI18n';
16   - import { LoginStateEnum, useLoginState } from './useLogin';
17   - import { QrCode } from '/@/components/Qrcode/index';
  25 + import { useLoginState, LoginStateEnum } from './useLogin';
  26 +
18 27 const qrCodeUrl = 'https://vvbin.cn/next/login';
19 28 export default defineComponent({
20 29 name: 'QrCodeForm',
... ... @@ -22,18 +31,19 @@
22 31 Button,
23 32 QrCode,
24 33 Divider,
  34 + LoginFormTitle,
25 35 },
26 36 setup() {
27 37 const { t } = useI18n();
28   - const { setLoginState } = useLoginState();
  38 + const { handleBackLogin, getLoginState } = useLoginState();
  39 +
  40 + const getShow = computed(() => unref(getLoginState) === LoginStateEnum.QR_CODE);
29 41  
30   - function handleBackLogin() {
31   - setLoginState(LoginStateEnum.LOGIN);
32   - }
33 42 return {
34 43 t,
35 44 handleBackLogin,
36 45 qrCodeUrl,
  46 + getShow,
37 47 };
38 48 },
39 49 });
... ...
src/views/sys/login/RegisterForm.vue
1 1 <template>
2   - <Form class="p-4" :model="formData" :rules="getFormRules" ref="formRef">
3   - <FormItem name="account" class="enter-x">
4   - <Input size="large" v-model:value="formData.account" :placeholder="t('sys.login.userName')" />
5   - </FormItem>
6   - <FormItem name="mobile" class="enter-x">
7   - <Input size="large" v-model:value="formData.mobile" :placeholder="t('sys.login.mobile')" />
8   - </FormItem>
9   - <FormItem name="sms" class="enter-x">
10   - <CountdownInput
11   - size="large"
12   - v-model:value="formData.sms"
13   - :placeholder="t('sys.login.smsCode')"
14   - />
15   - </FormItem>
16   - <FormItem name="password" class="enter-x">
17   - <StrengthMeter
18   - size="large"
19   - v-model:value="formData.password"
20   - :placeholder="t('sys.login.password')"
21   - />
22   - </FormItem>
23   - <FormItem name="confirmPassword" class="enter-x">
24   - <InputPassword
25   - size="large"
26   - visibilityToggle
27   - v-model:value="formData.confirmPassword"
28   - :placeholder="t('sys.login.confirmPassword')"
29   - />
30   - </FormItem>
  2 + <template v-if="getShow">
  3 + <LoginFormTitle class="enter-x" />
  4 + <Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef">
  5 + <FormItem name="account" class="enter-x">
  6 + <Input
  7 + size="large"
  8 + v-model:value="formData.account"
  9 + :placeholder="t('sys.login.userName')"
  10 + />
  11 + </FormItem>
  12 + <FormItem name="mobile" class="enter-x">
  13 + <Input size="large" v-model:value="formData.mobile" :placeholder="t('sys.login.mobile')" />
  14 + </FormItem>
  15 + <FormItem name="sms" class="enter-x">
  16 + <CountdownInput
  17 + size="large"
  18 + v-model:value="formData.sms"
  19 + :placeholder="t('sys.login.smsCode')"
  20 + />
  21 + </FormItem>
  22 + <FormItem name="password" class="enter-x">
  23 + <StrengthMeter
  24 + size="large"
  25 + v-model:value="formData.password"
  26 + :placeholder="t('sys.login.password')"
  27 + />
  28 + </FormItem>
  29 + <FormItem name="confirmPassword" class="enter-x">
  30 + <InputPassword
  31 + size="large"
  32 + visibilityToggle
  33 + v-model:value="formData.confirmPassword"
  34 + :placeholder="t('sys.login.confirmPassword')"
  35 + />
  36 + </FormItem>
31 37  
32   - <FormItem class="enter-x" name="policy">
33   - <!-- No logic, you need to deal with it yourself -->
34   - <Checkbox v-model:checked="formData.policy" size="small">
35   - {{ t('sys.login.policy') }}
36   - </Checkbox>
37   - </FormItem>
  38 + <FormItem class="enter-x" name="policy">
  39 + <!-- No logic, you need to deal with it yourself -->
  40 + <Checkbox v-model:checked="formData.policy" size="small">
  41 + {{ t('sys.login.policy') }}
  42 + </Checkbox>
  43 + </FormItem>
38 44  
39   - <Button
40   - type="primary"
41   - size="large"
42   - block
43   - @click="handleReset"
44   - :loading="loading"
45   - class="enter-x"
46   - >
47   - {{ t('sys.login.registerButton') }}
48   - </Button>
49   - <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">
50   - {{ t('sys.login.backSignIn') }}
51   - </Button>
52   - </Form>
  45 + <Button
  46 + type="primary"
  47 + class="enter-x"
  48 + size="large"
  49 + block
  50 + @click="handleReset"
  51 + :loading="loading"
  52 + >
  53 + {{ t('sys.login.registerButton') }}
  54 + </Button>
  55 + <Button size="large" block class="enter-x mt-4" @click="handleBackLogin">
  56 + {{ t('sys.login.backSignIn') }}
  57 + </Button>
  58 + </Form>
  59 + </template>
53 60 </template>
54 61 <script lang="ts">
55   - import { defineComponent, reactive, ref } from 'vue';
  62 + import { defineComponent, reactive, ref, unref, computed } from 'vue';
56 63  
  64 + import LoginFormTitle from './LoginFormTitle.vue';
57 65 import { Form, Input, Button, Checkbox } from 'ant-design-vue';
58 66 import { StrengthMeter } from '/@/components/StrengthMeter';
59 67 import { CountdownInput } from '/@/components/CountDown';
60 68  
61 69 import { useI18n } from '/@/hooks/web/useI18n';
62   - import { LoginStateEnum, useLoginState, useFormRules, useFormValid } from './useLogin';
  70 + import { useLoginState, useFormRules, useFormValid, LoginStateEnum } from './useLogin';
63 71  
64 72 export default defineComponent({
65 73 name: 'RegisterPasswordForm',
... ... @@ -72,10 +80,11 @@
72 80 Checkbox,
73 81 StrengthMeter,
74 82 CountdownInput,
  83 + LoginFormTitle,
75 84 },
76 85 setup() {
77 86 const { t } = useI18n();
78   - const { setLoginState } = useLoginState();
  87 + const { handleBackLogin, getLoginState } = useLoginState();
79 88  
80 89 const formRef = ref<any>(null);
81 90 const loading = ref(false);
... ... @@ -92,16 +101,14 @@
92 101 const { getFormRules } = useFormRules(formData);
93 102 const { validForm } = useFormValid(formRef);
94 103  
  104 + const getShow = computed(() => unref(getLoginState) === LoginStateEnum.REGISTER);
  105 +
95 106 async function handleReset() {
96 107 const data = await validForm();
97 108 if (!data) return;
98 109 console.log(data);
99 110 }
100 111  
101   - function handleBackLogin() {
102   - setLoginState(LoginStateEnum.LOGIN);
103   - }
104   -
105 112 return {
106 113 t,
107 114 formRef,
... ... @@ -110,6 +117,7 @@
110 117 handleReset,
111 118 loading,
112 119 handleBackLogin,
  120 + getShow,
113 121 };
114 122 },
115 123 });
... ...
src/views/sys/login/useLogin.ts
... ... @@ -12,22 +12,6 @@ export enum LoginStateEnum {
12 12  
13 13 const currentState = ref(LoginStateEnum.LOGIN);
14 14  
15   -export function useFormTitle() {
16   - const { t } = useI18n();
17   -
18   - const getFormTitle = computed(() => {
19   - const titleObj = {
20   - [LoginStateEnum.RESET_PASSWORD]: t('sys.login.forgetFormTitle'),
21   - [LoginStateEnum.LOGIN]: t('sys.login.signInFormTitle'),
22   - [LoginStateEnum.REGISTER]: t('sys.login.signUpFormTitle'),
23   - [LoginStateEnum.MOBILE]: t('sys.login.mobileSignInFormTitle'),
24   - [LoginStateEnum.QR_CODE]: t('sys.login.qrSignInFormTitle'),
25   - };
26   - return titleObj[unref(currentState)];
27   - });
28   - return { getFormTitle };
29   -}
30   -
31 15 export function useLoginState() {
32 16 function setLoginState(state: LoginStateEnum) {
33 17 currentState.value = state;
... ... @@ -35,19 +19,11 @@ export function useLoginState() {
35 19  
36 20 const getLoginState = computed(() => currentState.value);
37 21  
38   - return { setLoginState, getLoginState };
39   -}
40   -
41   -export function useShowLoginForm() {
42   - const getShowLogin = computed(() => unref(currentState) === LoginStateEnum.LOGIN);
43   - const getShowResetPassword = computed(
44   - () => unref(currentState) === LoginStateEnum.RESET_PASSWORD
45   - );
46   - const getShowRegister = computed(() => unref(currentState) === LoginStateEnum.REGISTER);
47   - const getShowMobile = computed(() => unref(currentState) === LoginStateEnum.MOBILE);
48   - const getShowQrCode = computed(() => unref(currentState) === LoginStateEnum.QR_CODE);
  22 + function handleBackLogin() {
  23 + setLoginState(LoginStateEnum.LOGIN);
  24 + }
49 25  
50   - return { getShowLogin, getShowResetPassword, getShowRegister, getShowMobile, getShowQrCode };
  26 + return { setLoginState, getLoginState, handleBackLogin };
51 27 }
52 28  
53 29 export function useFormValid<T extends Object = any>(formRef: Ref<any>) {
... ... @@ -96,6 +72,7 @@ export function useFormRules(formData?: Recordable) {
96 72 mobile: mobileFormRule,
97 73 };
98 74 switch (unref(currentState)) {
  75 + // register form rules
99 76 case LoginStateEnum.REGISTER:
100 77 return {
101 78 account: accountFormRule,
... ... @@ -106,13 +83,19 @@ export function useFormRules(formData?: Recordable) {
106 83 policy: [{ validator: validatePolicy, trigger: 'change' }],
107 84 ...mobileRule,
108 85 };
  86 +
  87 + // reset password form rules
109 88 case LoginStateEnum.RESET_PASSWORD:
110 89 return {
111 90 account: accountFormRule,
112 91 ...mobileRule,
113 92 };
  93 +
  94 + // mobile form rules
114 95 case LoginStateEnum.MOBILE:
115 96 return mobileRule;
  97 +
  98 + // login form rules
116 99 default:
117 100 return {
118 101 account: accountFormRule,
... ...
tsconfig.json
... ... @@ -25,11 +25,6 @@
25 25 "/@/*": ["src/*"]
26 26 }
27 27 },
28   - "plugins": [
29   - {
30   - "name": "@vuedx/typescript-plugin-vue"
31   - }
32   - ],
33 28 "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
34 29 "exclude": ["node_modules", "dist", "**/*.js"]
35 30 }
... ...
windi.config.ts
... ... @@ -10,14 +10,13 @@ export default defineConfig({
10 10 extend: {
11 11 colors,
12 12 },
13   -
14   - // screen: {
15   - // sm: '576px',
16   - // md: '768px',
17   - // lg: '992px',
18   - // xl: '1200px',
19   - // '2xl': '1600px',
20   - // },
  13 + screens: {
  14 + sm: '576px',
  15 + md: '768px',
  16 + lg: '992px',
  17 + xl: '1200px',
  18 + '2xl': '1600px',
  19 + },
21 20 },
22 21 });
23 22  
... ...
yarn.lock
... ... @@ -67,7 +67,7 @@
67 67 semver "^5.4.1"
68 68 source-map "^0.5.0"
69 69  
70   -"@babel/generator@^7.12.1", "@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
  70 +"@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
71 71 version "7.12.11"
72 72 resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
73 73 integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
... ... @@ -278,12 +278,7 @@
278 278 chalk "^2.0.0"
279 279 js-tokens "^4.0.0"
280 280  
281   -"@babel/parser@7.12.3":
282   - version "7.12.3"
283   - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd"
284   - integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==
285   -
286   -"@babel/parser@^7.12.0", "@babel/parser@^7.12.1", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7":
  281 +"@babel/parser@^7.12.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
287 282 version "7.12.11"
288 283 resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
289 284 integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
... ... @@ -862,21 +857,6 @@
862 857 "@babel/parser" "^7.12.7"
863 858 "@babel/types" "^7.12.7"
864 859  
865   -"@babel/traverse@7.12.1":
866   - version "7.12.1"
867   - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e"
868   - integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==
869   - dependencies:
870   - "@babel/code-frame" "^7.10.4"
871   - "@babel/generator" "^7.12.1"
872   - "@babel/helper-function-name" "^7.10.4"
873   - "@babel/helper-split-export-declaration" "^7.11.0"
874   - "@babel/parser" "^7.12.1"
875   - "@babel/types" "^7.12.1"
876   - debug "^4.1.0"
877   - globals "^11.1.0"
878   - lodash "^4.17.19"
879   -
880 860 "@babel/traverse@^7.0.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5":
881 861 version "7.12.12"
882 862 resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
... ... @@ -892,15 +872,6 @@
892 872 globals "^11.1.0"
893 873 lodash "^4.17.19"
894 874  
895   -"@babel/types@7.12.1":
896   - version "7.12.1"
897   - resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae"
898   - integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==
899   - dependencies:
900   - "@babel/helper-validator-identifier" "^7.10.4"
901   - lodash "^4.17.19"
902   - to-fast-properties "^2.0.0"
903   -
904 875 "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4":
905 876 version "7.12.12"
906 877 resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
... ... @@ -1112,20 +1083,10 @@
1112 1083 dependencies:
1113 1084 cross-fetch "^3.0.6"
1114 1085  
1115   -"@iconify/json@^1.1.306":
1116   - version "1.1.306"
1117   - resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.306.tgz#cad12ad858a61689009c12d3d2df0fde6a202bb9"
1118   - integrity sha512-OT1H/non+J8i9BBery8VhXn2JJeUMr8iKA166wsW74UWgez2HsPnkNNdtQmZxIuAyL6FuHQ+WvDi18uD9eAo0Q==
1119   -
1120   -"@intlify/core-base@9.0.0-beta.16":
1121   - version "9.0.0-beta.16"
1122   - resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.0.0-beta.16.tgz#ab35802b982f52db20d4758d020c2dcd1724e7f9"
1123   - integrity sha512-PJLDVYy3x8Mf9+XtWljEfk4Lo6mudopYlRvB89NQR3TkR+Tqkbcsegj09XdXpTKBYiq+yQrlZKZ0KEHb7l5Zuw==
1124   - dependencies:
1125   - "@intlify/message-compiler" "9.0.0-beta.16"
1126   - "@intlify/message-resolver" "9.0.0-beta.16"
1127   - "@intlify/runtime" "9.0.0-beta.16"
1128   - "@intlify/shared" "9.0.0-beta.16"
  1086 +"@iconify/json@^1.1.307":
  1087 + version "1.1.307"
  1088 + resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.307.tgz#db97e8faba1183e0411471dafe210deba0cc1fe2"
  1089 + integrity sha512-2hyKd4DKGWNtQ9CNC4s7tRzMHyDai3GnARC26nGZo7f4/r86FTspvjCEbqpbuM5spJ1fn5jx00Iv4Qee89ooRA==
1129 1090  
1130 1091 "@intlify/core-base@9.0.0-rc.2":
1131 1092 version "9.0.0-rc.2"
... ... @@ -1137,22 +1098,6 @@
1137 1098 "@intlify/runtime" "9.0.0-rc.2"
1138 1099 "@intlify/shared" "9.0.0-rc.2"
1139 1100  
1140   -"@intlify/core@^9.0.0-beta.15":
1141   - version "9.0.0-beta.16"
1142   - resolved "https://registry.npmjs.org/@intlify/core/-/core-9.0.0-beta.16.tgz#d74d4678868b37b641bdf999552b237d84dacb88"
1143   - integrity sha512-tPXf9rr+ZzG1zXgdLo8rCO2jws6eIXzJSaTvgnanZpfyyMKE+T8Ra5vVu3f/Sm0J7flT+z/Q3kLfnbpOMQ1UiQ==
1144   - dependencies:
1145   - "@intlify/core-base" "9.0.0-beta.16"
1146   -
1147   -"@intlify/message-compiler@9.0.0-beta.16":
1148   - version "9.0.0-beta.16"
1149   - resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.0.0-beta.16.tgz#359993251a303f148b3a325eca055cdbaf0cd95f"
1150   - integrity sha512-dE4UZsbVl5TKogYdfrJ6nQKdin1R4XMKVBVa9dE1A8HVvVHBSLy6iQiYpcw8TwcEHIa+rFjuuHuh+IdN3eCw+g==
1151   - dependencies:
1152   - "@intlify/message-resolver" "9.0.0-beta.16"
1153   - "@intlify/shared" "9.0.0-beta.16"
1154   - source-map "0.6.1"
1155   -
1156 1101 "@intlify/message-compiler@9.0.0-rc.2":
1157 1102 version "9.0.0-rc.2"
1158 1103 resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.0.0-rc.2.tgz#b2ea4852af26f62e850c36157c4b8c03e7a072f4"
... ... @@ -1162,25 +1107,11 @@
1162 1107 "@intlify/shared" "9.0.0-rc.2"
1163 1108 source-map "0.6.1"
1164 1109  
1165   -"@intlify/message-resolver@9.0.0-beta.16":
1166   - version "9.0.0-beta.16"
1167   - resolved "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.0.0-beta.16.tgz#f8960344201050d17560f8d01f63e3cd0b9bf59c"
1168   - integrity sha512-xwjsFuDDYEv7g1KE5QZRbrPgfsrNsDhYLtNYR7Tn4inzbmB6ipak2UlDzDcQGLieSFbe1WwAoNL0IXy4sUKboQ==
1169   -
1170 1110 "@intlify/message-resolver@9.0.0-rc.2":
1171 1111 version "9.0.0-rc.2"
1172 1112 resolved "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.0.0-rc.2.tgz#d6f5eac6dc594ebb1c5e2f68a94fd9e5429c4a15"
1173 1113 integrity sha512-CNRrIflQmq3aZWsyGu3mfR9d+xA7W0t5HZQeSh+YR9IBHxNg+2uWbYhGDab87yzovIGOnUSO9yxUdD8gBBmR9Q==
1174 1114  
1175   -"@intlify/runtime@9.0.0-beta.16":
1176   - version "9.0.0-beta.16"
1177   - resolved "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.0.0-beta.16.tgz#6a210a5b0984f9e295025e3dde5262108e0e69d9"
1178   - integrity sha512-py+stHrbkBoEB2OsBB+rySevR+54uhybF54LToGjErr740R/AVuOVTJEKRS/LF9VvinGZZTu/WVOXcPpMfqt8Q==
1179   - dependencies:
1180   - "@intlify/message-compiler" "9.0.0-beta.16"
1181   - "@intlify/message-resolver" "9.0.0-beta.16"
1182   - "@intlify/shared" "9.0.0-beta.16"
1183   -
1184 1115 "@intlify/runtime@9.0.0-rc.2":
1185 1116 version "9.0.0-rc.2"
1186 1117 resolved "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.0.0-rc.2.tgz#20f83a2f57a7789a9588e42a2cf5163f6f13255b"
... ... @@ -1190,11 +1121,6 @@
1190 1121 "@intlify/message-resolver" "9.0.0-rc.2"
1191 1122 "@intlify/shared" "9.0.0-rc.2"
1192 1123  
1193   -"@intlify/shared@9.0.0-beta.16":
1194   - version "9.0.0-beta.16"
1195   - resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.0.0-beta.16.tgz#51a80ca4705c93cb14c8f06398dfc550df09d67d"
1196   - integrity sha512-A7GSOovcZn/NMoAmDc8FG9uRcFv6iygriK8+C6HFeOnMQ9X+T9f5A9bPtXhCOCiRpQm9SUtGqXedxO5Y8rz9/A==
1197   -
1198 1124 "@intlify/shared@9.0.0-rc.2":
1199 1125 version "9.0.0-rc.2"
1200 1126 resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.0.0-rc.2.tgz#31f53616fe515e8629f39c179f217ca562d06256"
... ... @@ -1301,74 +1227,6 @@
1301 1227 estree-walker "^2.0.1"
1302 1228 picomatch "^2.2.2"
1303 1229  
1304   -"@sentry/core@5.30.0":
1305   - version "5.30.0"
1306   - resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3"
1307   - integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==
1308   - dependencies:
1309   - "@sentry/hub" "5.30.0"
1310   - "@sentry/minimal" "5.30.0"
1311   - "@sentry/types" "5.30.0"
1312   - "@sentry/utils" "5.30.0"
1313   - tslib "^1.9.3"
1314   -
1315   -"@sentry/hub@5.30.0":
1316   - version "5.30.0"
1317   - resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100"
1318   - integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==
1319   - dependencies:
1320   - "@sentry/types" "5.30.0"
1321   - "@sentry/utils" "5.30.0"
1322   - tslib "^1.9.3"
1323   -
1324   -"@sentry/minimal@5.30.0":
1325   - version "5.30.0"
1326   - resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b"
1327   - integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==
1328   - dependencies:
1329   - "@sentry/hub" "5.30.0"
1330   - "@sentry/types" "5.30.0"
1331   - tslib "^1.9.3"
1332   -
1333   -"@sentry/node@^5.30.0":
1334   - version "5.30.0"
1335   - resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48"
1336   - integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==
1337   - dependencies:
1338   - "@sentry/core" "5.30.0"
1339   - "@sentry/hub" "5.30.0"
1340   - "@sentry/tracing" "5.30.0"
1341   - "@sentry/types" "5.30.0"
1342   - "@sentry/utils" "5.30.0"
1343   - cookie "^0.4.1"
1344   - https-proxy-agent "^5.0.0"
1345   - lru_map "^0.3.3"
1346   - tslib "^1.9.3"
1347   -
1348   -"@sentry/tracing@5.30.0":
1349   - version "5.30.0"
1350   - resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f"
1351   - integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==
1352   - dependencies:
1353   - "@sentry/hub" "5.30.0"
1354   - "@sentry/minimal" "5.30.0"
1355   - "@sentry/types" "5.30.0"
1356   - "@sentry/utils" "5.30.0"
1357   - tslib "^1.9.3"
1358   -
1359   -"@sentry/types@5.30.0":
1360   - version "5.30.0"
1361   - resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402"
1362   - integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==
1363   -
1364   -"@sentry/utils@5.30.0":
1365   - version "5.30.0"
1366   - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980"
1367   - integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==
1368   - dependencies:
1369   - "@sentry/types" "5.30.0"
1370   - tslib "^1.9.3"
1371   -
1372 1230 "@simonwep/pickr@~1.8.0":
1373 1231 version "1.8.0"
1374 1232 resolved "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.8.0.tgz#adbff9a4f7f0e59dec9946508c5e481b7abae0f8"
... ... @@ -1405,11 +1263,6 @@
1405 1263 ejs "^2.6.1"
1406 1264 magic-string "^0.25.0"
1407 1265  
1408   -"@types/braces@*":
1409   - version "3.0.0"
1410   - resolved "https://registry.npmjs.org/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb"
1411   - integrity sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw==
1412   -
1413 1266 "@types/estree@0.0.39":
1414 1267 version "0.0.39"
1415 1268 resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
... ... @@ -1511,13 +1364,6 @@
1511 1364 dependencies:
1512 1365 "@types/unist" "*"
1513 1366  
1514   -"@types/micromatch@^4.0.1":
1515   - version "4.0.1"
1516   - resolved "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.1.tgz#9381449dd659fc3823fd2a4190ceacc985083bc7"
1517   - integrity sha512-my6fLBvpY70KattTNzYOK6KU1oR1+UCz9ug/JbcF5UrEmeCt9P7DV2t7L8+t18mMPINqGQCE4O8PLOPbI84gxw==
1518   - dependencies:
1519   - "@types/braces" "*"
1520   -
1521 1367 "@types/minimatch@*", "@types/minimatch@^3.0.3":
1522 1368 version "3.0.3"
1523 1369 resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
... ... @@ -1729,7 +1575,7 @@
1729 1575 html-tags "^3.1.0"
1730 1576 svg-tags "^1.0.0"
1731 1577  
1732   -"@vue/compiler-core@3.0.5", "@vue/compiler-core@^3.0.0", "@vue/compiler-core@^3.0.1", "@vue/compiler-core@^3.0.2":
  1578 +"@vue/compiler-core@3.0.5":
1733 1579 version "3.0.5"
1734 1580 resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.0.5.tgz#a6e54cabe9536e74c6513acd2649f311af1d43ac"
1735 1581 integrity sha512-iFXwk2gmU/GGwN4hpBwDWWMLvpkIejf/AybcFtlQ5V1ur+5jwfBaV0Y1RXoR6ePfBPJixtKZ3PmN+M+HgMAtfQ==
... ... @@ -1812,134 +1658,25 @@
1812 1658 resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.0.5.tgz#c131d88bd6713cc4d93b3bb1372edb1983225ff0"
1813 1659 integrity sha512-gYsNoGkWejBxNO6SNRjOh/xKeZ0H0V+TFzaPzODfBjkAIb0aQgBuixC1brandC/CDJy1wYPwSoYrXpvul7m6yw==
1814 1660  
1815   -"@vuedx/analyze@0.6.3":
1816   - version "0.6.3"
1817   - resolved "https://registry.npmjs.org/@vuedx/analyze/-/analyze-0.6.3.tgz#f7f367ea1a1b10e22212a4f2f89d5781f17f3c84"
1818   - integrity sha512-LiQ7Ppw4nEr5qjth+gg1m48yXD7usOcAygUU10lLwfRRlDZevxAdZRcNuC0vBOXUG3xbl6CSDXnAMeWFdlUiyw==
1819   - dependencies:
1820   - "@babel/code-frame" "^7.10.4"
1821   - "@babel/generator" "^7.12.1"
1822   - "@babel/parser" "^7.12.3"
1823   - "@babel/template" "^7.12.7"
1824   - "@babel/traverse" "7.12.1"
1825   - "@babel/types" "7.12.1"
1826   - "@types/micromatch" "^4.0.1"
1827   - "@vuedx/compiler-sfc" "0.6.2"
1828   - "@vuedx/compiler-tsx" "0.6.3"
1829   - "@vuedx/projectconfig" "0.6.2"
1830   - "@vuedx/shared" "0.6.2"
1831   - "@vuedx/template-ast-types" "0.6.2"
1832   - cli-highlight "^2.1.4"
1833   - commander "^6.1.0"
1834   - fast-glob "^3.2.4"
1835   - hash-sum "^2.0.0"
1836   - micromatch "^4.0.2"
1837   -
1838   -"@vuedx/compiler-sfc@0.6.2":
1839   - version "0.6.2"
1840   - resolved "https://registry.npmjs.org/@vuedx/compiler-sfc/-/compiler-sfc-0.6.2.tgz#f9a0d66eb48be839d363364ed4cd96967929f3cb"
1841   - integrity sha512-mJehCyO6BJiHCLPfVQQZb7RliuwBh7voGkrF27SkA3yhv44VSDaMbDIX2VRm3utl1CacFEVdNFqB9QYviZByfg==
1842   - dependencies:
1843   - "@vue/compiler-core" "^3.0.2"
1844   - lru-cache "^6.0.0"
1845   - source-map "^0.6.1"
1846   -
1847   -"@vuedx/compiler-tsx@0.6.3":
1848   - version "0.6.3"
1849   - resolved "https://registry.npmjs.org/@vuedx/compiler-tsx/-/compiler-tsx-0.6.3.tgz#d5ed641ee5c90baf3a04962f47e8c9d31d318b9a"
1850   - integrity sha512-H1SSgUHQXWoTnrIxvl9uXGMUqKlWjNddp8xc+EAg7BRQ4F7kFzHTzOsafG5xzrqnmZujj8cLUknG123rWgsxIg==
1851   - dependencies:
1852   - "@babel/parser" "7.12.3"
1853   - "@babel/types" "7.12.1"
1854   - "@vue/compiler-core" "^3.0.1"
1855   - "@vuedx/shared" "0.6.2"
1856   - "@vuedx/template-ast-types" "0.6.2"
1857   -
1858   -"@vuedx/projectconfig@0.6.2":
1859   - version "0.6.2"
1860   - resolved "https://registry.npmjs.org/@vuedx/projectconfig/-/projectconfig-0.6.2.tgz#4c7c32fc76a5a0cb2a8a8b4c4530183d7b70decc"
1861   - integrity sha512-qoekczmYpg4bOHMUduGgwGEWYq2CZL9HfztNzSPaJnErTBc4VNFnCBLsAtFPLkILASh6vzE2m/EpIzSpMW5mJQ==
1862   -
1863   -"@vuedx/shared@0.6.2":
1864   - version "0.6.2"
1865   - resolved "https://registry.npmjs.org/@vuedx/shared/-/shared-0.6.2.tgz#ada493a0af75306e37ac19fe8e836f1ce07c8745"
1866   - integrity sha512-xCXK+X5iDXkNfLglxFGFeEtqSWlopU8Cj6dGgMABWlee7HVDl47A4sj5oQpKuTjwRJHyE+BYtgGxtf1eLee5Yg==
1867   - dependencies:
1868   - "@sentry/node" "^5.30.0"
1869   - node-unique-machine-id "^1.1.0"
1870   - uuid "^8.3.2"
1871   -
1872   -"@vuedx/template-ast-types@0.6.2":
1873   - version "0.6.2"
1874   - resolved "https://registry.npmjs.org/@vuedx/template-ast-types/-/template-ast-types-0.6.2.tgz#8932b665abfed4593a0bdbfa91ed788056876770"
1875   - integrity sha512-TY3IesmF6/XbZnlLnImE30MXVJeXpMh8F5ZKZeeVDIvDWmPDZ6fC8DbDj1GycZtx77C85yZRnJJqq5v0AED4aw==
1876   - dependencies:
1877   - "@vue/compiler-core" "^3.0.0"
1878   -
1879   -"@vuedx/typecheck@^0.6.3":
1880   - version "0.6.3"
1881   - resolved "https://registry.npmjs.org/@vuedx/typecheck/-/typecheck-0.6.3.tgz#d66b8dcfa8d7d37ccfa196d019c8a5cc8bc7fc4d"
1882   - integrity sha512-1WfUI+bqg1O8Vklz24EZdsUE6ak4QCxtV6gWrUw+VUbep7ANhZM4RkaMsDFWVdeb2dip9ROrO8ESBrsIViPT8Q==
1883   - dependencies:
1884   - "@vuedx/shared" "0.6.2"
1885   - "@vuedx/typescript-plugin-vue" "0.6.3"
1886   - "@vuedx/vue-virtual-textdocument" "0.6.3"
1887   - chalk "^4.1.0"
1888   - fast-glob "^3.2.4"
1889   - minimist "^1.2.5"
1890   - resolve-from "^5.0.0"
1891   - typescript "^4.0.3"
1892   -
1893   -"@vuedx/typescript-plugin-vue@0.6.3", "@vuedx/typescript-plugin-vue@^0.6.3":
1894   - version "0.6.3"
1895   - resolved "https://registry.npmjs.org/@vuedx/typescript-plugin-vue/-/typescript-plugin-vue-0.6.3.tgz#cc2d99bdc0abbde9bb5909341c47715af00539a3"
1896   - integrity sha512-zAhXM9LDVYvjAMnTiqf6yZcJXXh1rQrH3JhcmQNmlxk26sRysfa/VWNC8qkfq9vcOKRf1eQusH4g+Vov6qPGig==
1897   - dependencies:
1898   - "@intlify/core" "^9.0.0-beta.15"
1899   - "@vuedx/analyze" "0.6.3"
1900   - "@vuedx/compiler-sfc" "0.6.2"
1901   - "@vuedx/projectconfig" "0.6.2"
1902   - "@vuedx/shared" "0.6.2"
1903   - "@vuedx/template-ast-types" "0.6.2"
1904   - "@vuedx/vue-virtual-textdocument" "0.6.3"
1905   - de-indent "^1.0.2"
1906   - json5 "^2.1.3"
1907   - quick-lru "^5.1.1"
1908   - vscode-uri "^2.1.2"
1909   - vscode-web-custom-data "^0.3.2"
1910   -
1911   -"@vuedx/vue-virtual-textdocument@0.6.3":
1912   - version "0.6.3"
1913   - resolved "https://registry.npmjs.org/@vuedx/vue-virtual-textdocument/-/vue-virtual-textdocument-0.6.3.tgz#750484d93378b47ead5f6e319e32d33160ed5658"
1914   - integrity sha512-FN5h4GsIcYAIfFbal0+1ryddDgpxMx/gxGE5QYinbwj5PwILZzyAUt//drQfppIHzCL+TJuZSml7fAod5tYvQA==
1915   - dependencies:
1916   - "@vuedx/analyze" "0.6.3"
1917   - "@vuedx/compiler-sfc" "0.6.2"
1918   - "@vuedx/compiler-tsx" "0.6.3"
1919   - "@vuedx/shared" "0.6.2"
1920   - source-map "^0.6.1"
1921   - vscode-languageserver-textdocument "^1.0.1"
1922   - vscode-uri "^2.1.2"
1923   -
1924   -"@vueuse/core@^4.1.1":
1925   - version "4.1.1"
1926   - resolved "https://registry.npmjs.org/@vueuse/core/-/core-4.1.1.tgz#9136952bc435dfc42263959bea8dac35965bac43"
1927   - integrity sha512-a+fu7FUHDzLpgcOGwbgyNZXLbm85NHEf4jkPkyqTtqHEHqU4aVbdyM0Vzl90PpFEDe92pJjoYJnZEQQgq9nEHw==
  1661 +"@vueuse/core@^4.2.1":
  1662 + version "4.2.1"
  1663 + resolved "https://registry.npmjs.org/@vueuse/core/-/core-4.2.1.tgz#ac72801c67f26315723d4d244e843c28047f7bc4"
  1664 + integrity sha512-V8KohPwbIN9t5ZWfqB+TJhzM2iwrugq78t6I1QwoGdaw9fdbQfHJiiaf83MGxgYO2B9IwVtuYc4Vjd9X/0Kppg==
1928 1665 dependencies:
1929   - "@vueuse/shared" "4.1.1"
  1666 + "@vueuse/shared" "4.2.1"
1930 1667 vue-demi latest
1931 1668  
1932   -"@vueuse/shared@4.1.1":
1933   - version "4.1.1"
1934   - resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-4.1.1.tgz#58e4333d5ab45927e25578fad83bc81cecfea475"
1935   - integrity sha512-M1bNwOaJZypu/AUYKrOU87pQLRp8VgMYHQyL1hVc6V3hi3ZcUBSjZuyFVaUdxGk0OeA0NPzHoYbByTMrpxElug==
  1669 +"@vueuse/shared@4.2.1":
  1670 + version "4.2.1"
  1671 + resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-4.2.1.tgz#67e3229e7df68e2c4225d0086537e3a972fe89eb"
  1672 + integrity sha512-lSrzRHRzdqf4LTczeTrVmRd4cmJ6D1u77fJ2E9gksfKHZs+zwSZku7EiAqVj/g1nqZglTu5Z4y6aE6dp3YLYWw==
1936 1673 dependencies:
1937 1674 vue-demi latest
1938 1675  
1939   -"@windicss/plugin-utils@0.4.3":
1940   - version "0.4.3"
1941   - resolved "https://registry.npmjs.org/@windicss/plugin-utils/-/plugin-utils-0.4.3.tgz#84e85fd3cd6eaf54ca72cae276f9cf0610f45e56"
1942   - integrity sha512-ilddLED+sZQIA9rOwE5eYwdBEBWKREvAVkkiAOOTNf7oDcP/a1cxT3f/nE4tgfhz+MC/FKcy7NkfrqfXRdEQaQ==
  1676 +"@windicss/plugin-utils@0.4.4":
  1677 + version "0.4.4"
  1678 + resolved "https://registry.npmjs.org/@windicss/plugin-utils/-/plugin-utils-0.4.4.tgz#fd18565a23df7896d8a4550bcecad631311db538"
  1679 + integrity sha512-qQHtNPt0eI2K2lsFHBN5y/rbC3ndXgR+PZuKdj2oirQLKMXFyU70+GdeMShi3OkZXAwGqN08MvdoiTsC2jGEMQ==
1943 1680 dependencies:
1944 1681 esbuild "^0.8.49"
1945 1682 esbuild-register "^2.0.0"
... ... @@ -1983,13 +1720,6 @@ adler-32@~1.2.0:
1983 1720 exit-on-epipe "~1.0.1"
1984 1721 printj "~1.1.0"
1985 1722  
1986   -agent-base@6:
1987   - version "6.0.2"
1988   - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
1989   - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
1990   - dependencies:
1991   - debug "4"
1992   -
1993 1723 aggregate-error@^3.0.0:
1994 1724 version "3.1.0"
1995 1725 resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
... ... @@ -2097,11 +1827,6 @@ ant-design-vue@2.0.0:
2097 1827 vue-types "^3.0.0"
2098 1828 warning "^4.0.0"
2099 1829  
2100   -any-promise@^1.0.0:
2101   - version "1.3.0"
2102   - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
2103   - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
2104   -
2105 1830 anymatch@~3.1.1:
2106 1831 version "3.1.1"
2107 1832 resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
... ... @@ -2755,18 +2480,6 @@ cli-cursor@^3.1.0:
2755 2480 dependencies:
2756 2481 restore-cursor "^3.1.0"
2757 2482  
2758   -cli-highlight@^2.1.4:
2759   - version "2.1.10"
2760   - resolved "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.10.tgz#26a087da9209dce4fcb8cf5427dc97cd96ac173a"
2761   - integrity sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw==
2762   - dependencies:
2763   - chalk "^4.0.0"
2764   - highlight.js "^10.0.0"
2765   - mz "^2.4.0"
2766   - parse5 "^5.1.1"
2767   - parse5-htmlparser2-tree-adapter "^6.0.0"
2768   - yargs "^16.0.0"
2769   -
2770 2483 cli-truncate@^2.1.0:
2771 2484 version "2.1.0"
2772 2485 resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
... ... @@ -2895,7 +2608,7 @@ commander@^4.1.1:
2895 2608 resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
2896 2609 integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
2897 2610  
2898   -commander@^6.1.0, commander@^6.2.0:
  2611 +commander@^6.2.0:
2899 2612 version "6.2.1"
2900 2613 resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
2901 2614 integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
... ... @@ -3179,11 +2892,6 @@ convert-source-map@^1.7.0:
3179 2892 dependencies:
3180 2893 safe-buffer "~5.1.1"
3181 2894  
3182   -cookie@^0.4.1:
3183   - version "0.4.1"
3184   - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
3185   - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
3186   -
3187 2895 copy-anything@^2.0.1:
3188 2896 version "2.0.1"
3189 2897 resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.1.tgz#2afbce6da684bdfcbec93752fa762819cb480d9a"
... ... @@ -3394,11 +3102,6 @@ dayjs@^1.10.4:
3394 3102 resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
3395 3103 integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
3396 3104  
3397   -de-indent@^1.0.2:
3398   - version "1.0.2"
3399   - resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
3400   - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
3401   -
3402 3105 debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
3403 3106 version "2.6.9"
3404 3107 resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
... ... @@ -3406,13 +3109,6 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
3406 3109 dependencies:
3407 3110 ms "2.0.0"
3408 3111  
3409   -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1:
3410   - version "4.3.1"
3411   - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
3412   - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
3413   - dependencies:
3414   - ms "2.1.2"
3415   -
3416 3112 debug@^3.1.1, debug@^3.2.6:
3417 3113 version "3.2.7"
3418 3114 resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
... ... @@ -3420,6 +3116,13 @@ debug@^3.1.1, debug@^3.2.6:
3420 3116 dependencies:
3421 3117 ms "^2.1.1"
3422 3118  
  3119 +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1:
  3120 + version "4.3.1"
  3121 + resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
  3122 + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
  3123 + dependencies:
  3124 + ms "2.1.2"
  3125 +
3423 3126 debug@^4.3.2:
3424 3127 version "4.3.2"
3425 3128 resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
... ... @@ -3726,10 +3429,10 @@ ejs@^2.6.1:
3726 3429 resolved "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
3727 3430 integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
3728 3431  
3729   -ejs@^3.1.5:
3730   - version "3.1.5"
3731   - resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b"
3732   - integrity sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==
  3432 +ejs@^3.1.6:
  3433 + version "3.1.6"
  3434 + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a"
  3435 + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==
3733 3436 dependencies:
3734 3437 jake "^10.6.1"
3735 3438  
... ... @@ -4216,7 +3919,7 @@ fast-diff@^1.1.2:
4216 3919 resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
4217 3920 integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
4218 3921  
4219   -fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.5:
  3922 +fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.5:
4220 3923 version "3.2.5"
4221 3924 resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
4222 3925 integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
... ... @@ -4966,11 +4669,6 @@ header-case@^2.0.4:
4966 4669 capital-case "^1.0.4"
4967 4670 tslib "^2.0.3"
4968 4671  
4969   -highlight.js@^10.0.0:
4970   - version "10.5.0"
4971   - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.5.0.tgz#3f09fede6a865757378f2d9ebdcbc15ba268f98f"
4972   - integrity sha512-xTmvd9HiIHR6L53TMC7TKolEj65zG1XU+Onr8oi86mYa+nLcIbxTTWkpW7CsEwv/vK7u1zb8alZIMLDqqN6KTw==
4973   -
4974 4672 homedir-polyfill@^1.0.1:
4975 4673 version "1.0.3"
4976 4674 resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
... ... @@ -5066,23 +4764,15 @@ http-server@^0.12.3:
5066 4764 secure-compare "3.0.1"
5067 4765 union "~0.5.0"
5068 4766  
5069   -https-proxy-agent@^5.0.0:
5070   - version "5.0.0"
5071   - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
5072   - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
5073   - dependencies:
5074   - agent-base "6"
5075   - debug "4"
5076   -
5077 4767 human-signals@^1.1.1:
5078 4768 version "1.1.1"
5079 4769 resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
5080 4770 integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
5081 4771  
5082   -husky@^5.0.9:
5083   - version "5.0.9"
5084   - resolved "https://registry.npmjs.org/husky/-/husky-5.0.9.tgz#6d38706643d66ed395bcd4ee952d02e3f15eb3a3"
5085   - integrity sha512-0SjcaY21a+IRdx7p7r/X33Vc09UR2m8SbP8yfkhUX2/jAmwcz+GR7i9jXkp2pP3GfX23JhMkVP6SWwXB18uXtg==
  4772 +husky@^5.1.0:
  4773 + version "5.1.0"
  4774 + resolved "https://registry.npmjs.org/husky/-/husky-5.1.0.tgz#68b1148523acc838af0655ead71bf4671adb9f93"
  4775 + integrity sha512-Os0EY2haOO+59YZSwMiUDsHY43RFwBVIRStHcnnT8/kvA+sFfaA/YS4uLFRiymXYgQl6E6TQTt3y4v/Z2ctEtw==
5086 4776  
5087 4777 iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
5088 4778 version "0.4.24"
... ... @@ -5738,7 +5428,7 @@ json5@^1.0.1:
5738 5428 dependencies:
5739 5429 minimist "^1.2.0"
5740 5430  
5741   -json5@^2.1.2, json5@^2.1.3:
  5431 +json5@^2.1.2:
5742 5432 version "2.1.3"
5743 5433 resolved "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
5744 5434 integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
... ... @@ -6092,11 +5782,6 @@ lru-cache@^6.0.0:
6092 5782 dependencies:
6093 5783 yallist "^4.0.0"
6094 5784  
6095   -lru_map@^0.3.3:
6096   - version "0.3.3"
6097   - resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
6098   - integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=
6099   -
6100 5785 magic-string@^0.25.0, magic-string@^0.25.7:
6101 5786 version "0.25.7"
6102 5787 resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
... ... @@ -6449,15 +6134,6 @@ mute-stream@0.0.7:
6449 6134 resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
6450 6135 integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
6451 6136  
6452   -mz@^2.4.0:
6453   - version "2.7.0"
6454   - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
6455   - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
6456   - dependencies:
6457   - any-promise "^1.0.0"
6458   - object-assign "^4.0.1"
6459   - thenify-all "^1.0.0"
6460   -
6461 6137 nanoid@^3.0.1, nanoid@^3.1.20:
6462 6138 version "3.1.20"
6463 6139 resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
... ... @@ -6532,13 +6208,6 @@ node-releases@^1.1.69:
6532 6208 resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08"
6533 6209 integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==
6534 6210  
6535   -node-unique-machine-id@^1.1.0:
6536   - version "1.1.0"
6537   - resolved "https://registry.npmjs.org/node-unique-machine-id/-/node-unique-machine-id-1.1.0.tgz#dbd9351da927cfc0e85a663a55e8644da384b746"
6538   - integrity sha512-uJtdcFelVD08XdvxYWYzMYprSTPYl9CYiQbyGYbjXZcMZtLRlEqNUs+C/va/81DNgExsMHL5g0YDYQFS0pENRQ==
6539   - dependencies:
6540   - uuid "^3.3.3"
6541   -
6542 6211 normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
6543 6212 version "2.5.0"
6544 6213 resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
... ... @@ -6973,23 +6642,6 @@ parse-passwd@^1.0.0:
6973 6642 resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
6974 6643 integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
6975 6644  
6976   -parse5-htmlparser2-tree-adapter@^6.0.0:
6977   - version "6.0.1"
6978   - resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
6979   - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
6980   - dependencies:
6981   - parse5 "^6.0.1"
6982   -
6983   -parse5@^5.1.1:
6984   - version "5.1.1"
6985   - resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
6986   - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
6987   -
6988   -parse5@^6.0.1:
6989   - version "6.0.1"
6990   - resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
6991   - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
6992   -
6993 6645 parseurl@~1.3.3:
6994 6646 version "1.3.3"
6995 6647 resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
... ... @@ -7428,11 +7080,6 @@ quick-lru@^4.0.1:
7428 7080 resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
7429 7081 integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
7430 7082  
7431   -quick-lru@^5.1.1:
7432   - version "5.1.1"
7433   - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
7434   - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
7435   -
7436 7083 randombytes@^2.1.0:
7437 7084 version "2.1.0"
7438 7085 resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
... ... @@ -8724,20 +8371,6 @@ text-table@^0.2.0:
8724 8371 resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
8725 8372 integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
8726 8373  
8727   -thenify-all@^1.0.0:
8728   - version "1.6.0"
8729   - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
8730   - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
8731   - dependencies:
8732   - thenify ">= 3.1.0 < 4"
8733   -
8734   -"thenify@>= 3.1.0 < 4":
8735   - version "3.3.1"
8736   - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
8737   - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
8738   - dependencies:
8739   - any-promise "^1.0.0"
8740   -
8741 8374 through2@^2.0.0, through2@^2.0.2:
8742 8375 version "2.0.5"
8743 8376 resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
... ... @@ -8873,7 +8506,7 @@ tslib@2.0.3:
8873 8506 resolved "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
8874 8507 integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
8875 8508  
8876   -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
  8509 +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
8877 8510 version "1.14.1"
8878 8511 resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
8879 8512 integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
... ... @@ -8944,11 +8577,6 @@ typedarray-to-buffer@^3.1.5:
8944 8577 dependencies:
8945 8578 is-typedarray "^1.0.0"
8946 8579  
8947   -typescript@^4.0.3:
8948   - version "4.1.3"
8949   - resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
8950   - integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
8951   -
8952 8580 typescript@^4.1.5:
8953 8581 version "4.1.5"
8954 8582 resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72"
... ... @@ -9158,16 +8786,11 @@ utils-merge@1.0.1:
9158 8786 resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
9159 8787 integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
9160 8788  
9161   -uuid@^3.0.1, uuid@^3.3.2, uuid@^3.3.3:
  8789 +uuid@^3.0.1, uuid@^3.3.2:
9162 8790 version "3.4.0"
9163 8791 resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
9164 8792 integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
9165 8793  
9166   -uuid@^8.3.2:
9167   - version "8.3.2"
9168   - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
9169   - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
9170   -
9171 8794 v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0:
9172 8795 version "2.2.0"
9173 8796 resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
... ... @@ -9215,12 +8838,12 @@ vite-plugin-compression@^0.2.1:
9215 8838 debug "^4.3.2"
9216 8839 fs-extra "^9.1.0"
9217 8840  
9218   -vite-plugin-html@^2.0.0:
9219   - version "2.0.0"
9220   - resolved "https://registry.npmjs.org/vite-plugin-html/-/vite-plugin-html-2.0.0.tgz#de39b99ce7df4d0e1234bfae5c23215647d71a28"
9221   - integrity sha512-6nfzAcMp345FRI5WTHOq11O585nlJ2ELwFarhZEi/yvrR1FauhDcFOGGL67/IKiTruYZaatZ3xnFg5BIxK6/7w==
  8841 +vite-plugin-html@^2.0.1:
  8842 + version "2.0.1"
  8843 + resolved "https://registry.npmjs.org/vite-plugin-html/-/vite-plugin-html-2.0.1.tgz#6a8fa9a705024aa47e03b9b990c650773e2bd29b"
  8844 + integrity sha512-qmoPTTkajxCuctxoAreIF9JW6HjrUr6hKJWLHnwRPoBd9SNzcyDwI6cW4gd4DQy2zHcQA7dD8LzgmT1Qz0vvgw==
9222 8845 dependencies:
9223   - ejs "^3.1.5"
  8846 + ejs "^3.1.6"
9224 8847 fs-extra "^9.1.0"
9225 8848 html-minifier-terser "^5.1.1"
9226 8849  
... ... @@ -9274,10 +8897,10 @@ vite-plugin-purge-icons@^0.7.0:
9274 8897 "@purge-icons/generated" "^0.7.0"
9275 8898 rollup-plugin-purge-icons "^0.7.0"
9276 8899  
9277   -vite-plugin-pwa@^0.5.2:
9278   - version "0.5.2"
9279   - resolved "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.5.2.tgz#48131ebadc0c98c34a543dbf1bb1c86aeef532e0"
9280   - integrity sha512-4SHKxYhd5sCF/ebbgxGYlN91UHlylzh7C32a5+Y2c2vbrWzw5x62ZxsYzolQzBosdOim4Ez+e/dX4hmP3BCmow==
  8900 +vite-plugin-pwa@^0.5.3:
  8901 + version "0.5.3"
  8902 + resolved "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.5.3.tgz#60d97d62335846144c8e6b6a911704d6c0f75171"
  8903 + integrity sha512-xGh0gIgzczvYNj8ED5HhpJ2iT5kMiieim2qI8kT/3+rfo83hTyuzhEICkljIbhausvOaGxtzLKWE8RS6cUg0Fw==
9281 8904 dependencies:
9282 8905 debug "^4.3.2"
9283 8906 fast-glob "^3.2.5"
... ... @@ -9307,12 +8930,12 @@ vite-plugin-theme@^0.4.3:
9307 8930 es-module-lexer "^0.3.26"
9308 8931 tinycolor2 "^1.4.2"
9309 8932  
9310   -vite-plugin-windicss@0.4.3:
9311   - version "0.4.3"
9312   - resolved "https://registry.npmjs.org/vite-plugin-windicss/-/vite-plugin-windicss-0.4.3.tgz#f86e5a3b78882caa3cdd50cba2b08770e2d627c8"
9313   - integrity sha512-Lnv6OhcYzcJvecTs4LIpMSfo54rSewkHrW85IVwy8hacR0krY319jXr5nwiDpSTp6HM3QJhoJ4zxHF+t5Q+Nwg==
  8933 +vite-plugin-windicss@0.4.4:
  8934 + version "0.4.4"
  8935 + resolved "https://registry.npmjs.org/vite-plugin-windicss/-/vite-plugin-windicss-0.4.4.tgz#fd13fba5b55211f34768f5acfadfd743f95c24a6"
  8936 + integrity sha512-VDQn4cO+cq7sEV2yD1n+Mg6sN4TiFZwdeuteN7uDk6gintbUAMNHyoFyZUF0Z0/vYN4Ca62HvXlXdTgheE4QYg==
9314 8937 dependencies:
9315   - "@windicss/plugin-utils" "0.4.3"
  8938 + "@windicss/plugin-utils" "0.4.4"
9316 8939 windicss "^2.1.15"
9317 8940  
9318 8941 vite@2.0.1:
... ... @@ -9327,21 +8950,6 @@ vite@2.0.1:
9327 8950 optionalDependencies:
9328 8951 fsevents "~2.3.1"
9329 8952  
9330   -vscode-languageserver-textdocument@^1.0.1:
9331   - version "1.0.1"
9332   - resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f"
9333   - integrity sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==
9334   -
9335   -vscode-uri@^2.1.2:
9336   - version "2.1.2"
9337   - resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
9338   - integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
9339   -
9340   -vscode-web-custom-data@^0.3.2:
9341   - version "0.3.2"
9342   - resolved "https://registry.npmjs.org/vscode-web-custom-data/-/vscode-web-custom-data-0.3.2.tgz#62a5a924397d8056c5524ff0ff8f14eb815b7066"
9343   - integrity sha512-GGZ99dJbARyh6rv03dXZImGlP5WvNG382A3nIt0yX1uyqBa558L/klHWcgEJzcVkG4t16OQWwPedMR3JkeD2Qg==
9344   -
9345 8953 vue-demi@latest:
9346 8954 version "0.6.0"
9347 8955 resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.6.0.tgz#e314282f704cb449119b9fd002cbbc0e39f591fe"
... ... @@ -9773,7 +9381,7 @@ yargs@^15.1.0:
9773 9381 y18n "^4.0.0"
9774 9382 yargs-parser "^18.1.2"
9775 9383  
9776   -yargs@^16.0.0, yargs@^16.0.3, yargs@^16.2.0:
  9384 +yargs@^16.0.3, yargs@^16.2.0:
9777 9385 version "16.2.0"
9778 9386 resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
9779 9387 integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
... ...