From 2d330ce82990de6dd0db34fad31ef38389aa2681 Mon Sep 17 00:00:00 2001 From: sa0ChunLuyu Date: Tue, 27 Dec 2022 20:53:54 +0800 Subject: [PATCH] no message --- admin/src/router/index.js | 96 +- normal/.gitignore | 24 + normal/README.md | 14 + normal/index.html | 56 + normal/package.json | 31 + normal/pnpm-lock.yaml | 1875 +++++++++++++++++ normal/public/favicon.png | Bin 0 -> 9104 bytes normal/src/App.vue | 53 + normal/src/api/index.js | 53 + normal/src/components/Breadcrumb.vue | 30 + normal/src/components/Icon.vue | 29 + normal/src/components/Logo.vue | 94 + normal/src/components/Menu.vue | 100 + normal/src/components/Mounting.vue | 13 + normal/src/components/User.vue | 63 + normal/src/components/dev/Api.vue | 23 + normal/src/components/dev/IconPark.vue | 28 + normal/src/components/dev/RouterParams.vue | 20 + normal/src/components/dev/RouterPush.vue | 19 + normal/src/components/dev/RouterQuery.vue | 34 + .../src/components/dev/SonFather/Father.vue | 32 + .../dev/SonFather/components/Son.vue | 35 + normal/src/components/dev/Store.vue | 52 + normal/src/components/dev/StyleVBind.vue | 21 + normal/src/components/dev/UnoCSS.vue | 17 + normal/src/components/dev/UseMessage.vue | 21 + normal/src/composables/dark.js | 2 + normal/src/composables/fullscreen.js | 3 + normal/src/composables/index.js | 2 + normal/src/layouts/404.vue | 9 + normal/src/layouts/default.vue | 116 + normal/src/layouts/login.vue | 7 + normal/src/main.js | 14 + normal/src/pages/[...all].vue | 26 + normal/src/pages/dev/[name].vue | 49 + normal/src/pages/index.vue | 24 + normal/src/pages/login.vue | 188 ++ normal/src/router/index.js | 68 + normal/src/store/index.js | 17 + normal/src/styles/main.css | 11 + normal/src/tool/axios.js | 30 + normal/src/tool/color.js | 13 + normal/src/tool/favicon.js | 10 + normal/vite.config.js | 26 + 44 files changed, 3400 insertions(+), 48 deletions(-) create mode 100644 normal/.gitignore create mode 100644 normal/README.md create mode 100644 normal/index.html create mode 100644 normal/package.json create mode 100644 normal/pnpm-lock.yaml create mode 100644 normal/public/favicon.png create mode 100644 normal/src/App.vue create mode 100644 normal/src/api/index.js create mode 100644 normal/src/components/Breadcrumb.vue create mode 100644 normal/src/components/Icon.vue create mode 100644 normal/src/components/Logo.vue create mode 100644 normal/src/components/Menu.vue create mode 100644 normal/src/components/Mounting.vue create mode 100644 normal/src/components/User.vue create mode 100644 normal/src/components/dev/Api.vue create mode 100644 normal/src/components/dev/IconPark.vue create mode 100644 normal/src/components/dev/RouterParams.vue create mode 100644 normal/src/components/dev/RouterPush.vue create mode 100644 normal/src/components/dev/RouterQuery.vue create mode 100644 normal/src/components/dev/SonFather/Father.vue create mode 100644 normal/src/components/dev/SonFather/components/Son.vue create mode 100644 normal/src/components/dev/Store.vue create mode 100644 normal/src/components/dev/StyleVBind.vue create mode 100644 normal/src/components/dev/UnoCSS.vue create mode 100644 normal/src/components/dev/UseMessage.vue create mode 100644 normal/src/composables/dark.js create mode 100644 normal/src/composables/fullscreen.js create mode 100644 normal/src/composables/index.js create mode 100644 normal/src/layouts/404.vue create mode 100644 normal/src/layouts/default.vue create mode 100644 normal/src/layouts/login.vue create mode 100644 normal/src/main.js create mode 100755 normal/src/pages/[...all].vue create mode 100644 normal/src/pages/dev/[name].vue create mode 100644 normal/src/pages/index.vue create mode 100644 normal/src/pages/login.vue create mode 100644 normal/src/router/index.js create mode 100644 normal/src/store/index.js create mode 100755 normal/src/styles/main.css create mode 100644 normal/src/tool/axios.js create mode 100644 normal/src/tool/color.js create mode 100644 normal/src/tool/favicon.js create mode 100644 normal/vite.config.js diff --git a/admin/src/router/index.js b/admin/src/router/index.js index 6623078..c60a765 100644 --- a/admin/src/router/index.js +++ b/admin/src/router/index.js @@ -5,69 +5,69 @@ import {ConfigGetAction, $response, AdminStatusAction} from "~/api" import {reGetAdmin} from "~/tool/info" import {$favicon} from "~/tool/favicon" import { - useStore, useSaveTokenType, useSessionToken, useToken, useRouterActive + useStore, useSaveTokenType, useSessionToken, useToken, useRouterActive } from '~/store' const no_login_list = ['login', '404']; const $router_active = useRouterActive() const router = createRouter({ - history: createWebHashHistory(import.meta.env.BASE_URL), routes: setupLayouts(generatedRoutes) + history: createWebHashHistory(import.meta.env.BASE_URL), routes: setupLayouts(generatedRoutes) }) const updateRouterActive = (matched) => { - matched.shift() - const last = matched[matched.length - 1] - if (no_login_list.indexOf(last.name) !== -1) return - setTimeout(() => { - $router_active.value = matched.map((item) => { - return { - title: 'title' in item.meta ? item.meta.title : item.name, - key: item.name - } - }) + matched.shift() + const last = matched[matched.length - 1] + if (no_login_list.indexOf(last.name) !== -1) return + setTimeout(() => { + $router_active.value = matched.map((item) => { + return { + title: 'title' in item.meta ? item.meta.title : item.name, + key: item.name + } }) + }) } router.beforeEach(async (to, from, next) => { - window.$loading.start() - const $store = useStore() - if (!$store.config) { - const response = await ConfigGetAction(['Logo', 'Favicon', 'Login欢迎图片', '网站名称']) - $response(response, () => { - $store.config = response.data - }) - $favicon($store.config['Favicon']) + window.$loading.start() + const $store = useStore() + if (!$store.config) { + const response = await ConfigGetAction(['Logo', 'Favicon', 'Login欢迎图片', '网站名称']) + $response(response, () => { + $store.config = response.data + }) + $favicon($store.config['Favicon']) + } + document.title = ('title' in to.meta && to.meta.title !== '首页') ? `${to.meta.title} ${$store.config['网站名称']}` : $store.config['网站名称'] + if (no_login_list.indexOf(to.name) === -1) { + const $save_token_type = useSaveTokenType() + let $token; + if ($save_token_type.value === 'local') { + $token = useToken() + } else { + $token = useSessionToken() } - document.title = ('title' in to.meta && to.meta.title !== '首页') ? `${to.meta.title} ${$store.config['网站名称']}` : $store.config['网站名称'] - if (no_login_list.indexOf(to.name) === -1) { - const $save_token_type = useSaveTokenType() - let $token; - if ($save_token_type.value === 'local') { - $token = useToken() - } else { - $token = useSessionToken() - } - if ($token.value === '') { - next('/login?f=' + encodeURIComponent(to.fullPath)) - setTimeout(() => { - window.$loading.finish() - }) - } else { - const response = await AdminStatusAction() - $response(response, () => { - if (!$store.admin_info) reGetAdmin() - updateRouterActive(to.matched.map(item => item)) - next() - }, next) - setTimeout(() => { - window.$loading.finish() - }) - } + if ($token.value === '') { + next('/login?f=' + encodeURIComponent(to.fullPath)) + setTimeout(() => { + window.$loading.finish() + }) } else { + const response = await AdminStatusAction() + $response(response, () => { + if (!$store.admin_info) reGetAdmin() + updateRouterActive(to.matched.map(item => item)) next() - setTimeout(() => { - window.$loading.finish() - }) + }, next) + setTimeout(() => { + window.$loading.finish() + }) } + } else { + next() + setTimeout(() => { + window.$loading.finish() + }) + } }) export default router diff --git a/normal/.gitignore b/normal/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/normal/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/normal/README.md b/normal/README.md new file mode 100644 index 0000000..05ad1aa --- /dev/null +++ b/normal/README.md @@ -0,0 +1,14 @@ +# Vue 3 + Vite + +```bash +pnpm i +# If you don't have pnpm installed, run: npm install -g pnpm +pnpm dev +pnpm build +``` + +This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` + + +
+ + + + diff --git a/normal/package.json b/normal/package.json new file mode 100644 index 0000000..5c41a81 --- /dev/null +++ b/normal/package.json @@ -0,0 +1,31 @@ +{ + "private": true, + "name": "lu-code-vue-user", + "packageManager": "pnpm@7.0.0", + "version": "0.0.0", + "scripts": { + "dev": "vite --port 3333 --open", + "build": "vite build" + }, + "dependencies": { + "@icon-park/vue-next": "^1.4.2", + "@vueuse/core": "^8.4.2", + "animate.css": "^4.1.1", + "axios": "^0.26.1", + "naive-ui": "^2.34.3", + "normalize.css": "^8.0.1", + "pinia": "^2.0.14", + "vue": "^3.2.33", + "vue-router": "^4.0.15" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^2.3.3", + "pnpm": "^7.0.1", + "unocss": "^0.33.2", + "unplugin-auto-import": "^0.7.1", + "unplugin-vue-components": "^0.19.5", + "vite": "^2.9.9", + "vite-plugin-pages": "^0.23.0", + "vite-plugin-vue-layouts": "^0.6.0" + } +} diff --git a/normal/pnpm-lock.yaml b/normal/pnpm-lock.yaml new file mode 100644 index 0000000..d5791ad --- /dev/null +++ b/normal/pnpm-lock.yaml @@ -0,0 +1,1875 @@ +lockfileVersion: 5.4 + +specifiers: + '@icon-park/vue-next': ^1.4.2 + '@vitejs/plugin-vue': ^2.3.3 + '@vueuse/core': ^8.4.2 + animate.css: ^4.1.1 + axios: ^0.26.1 + naive-ui: ^2.34.3 + normalize.css: ^8.0.1 + pinia: ^2.0.14 + pnpm: ^7.0.1 + unocss: ^0.33.2 + unplugin-auto-import: ^0.7.1 + unplugin-vue-components: ^0.19.5 + vite: ^2.9.9 + vite-plugin-pages: ^0.23.0 + vite-plugin-vue-layouts: ^0.6.0 + vue: ^3.2.33 + vue-router: ^4.0.15 + +dependencies: + '@icon-park/vue-next': 1.4.2_vue@3.2.45 + '@vueuse/core': 8.9.4_vue@3.2.45 + animate.css: 4.1.1 + axios: 0.26.1 + naive-ui: 2.34.3_vue@3.2.45 + normalize.css: 8.0.1 + pinia: 2.0.28_vue@3.2.45 + vue: 3.2.45 + vue-router: 4.1.6_vue@3.2.45 + +devDependencies: + '@vitejs/plugin-vue': 2.3.4_vite@2.9.15+vue@3.2.45 + pnpm: 7.20.0 + unocss: 0.33.5_vite@2.9.15 + unplugin-auto-import: 0.7.2_tz26lugnys4zsg624icbm2tdye + unplugin-vue-components: 0.19.9_vite@2.9.15+vue@3.2.45 + vite: 2.9.15 + vite-plugin-pages: 0.23.0_vite@2.9.15 + vite-plugin-vue-layouts: 0.6.0_t2n4ylcd3qv6ffis2sifdiddkq + +packages: + + /@antfu/install-pkg/0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/utils/0.5.2: + resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} + dev: true + + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + /@babel/parser/7.20.7: + resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.20.7 + + /@babel/types/7.20.7: + resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@css-render/plugin-bem/0.15.12_css-render@0.15.12: + resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==} + peerDependencies: + css-render: ~0.15.12 + dependencies: + css-render: 0.15.12 + dev: false + + /@css-render/vue3-ssr/0.15.12_vue@3.2.45: + resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==} + peerDependencies: + vue: ^3.0.11 + dependencies: + vue: 3.2.45 + dev: false + + /@emotion/hash/0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@icon-park/vue-next/1.4.2_vue@3.2.45: + resolution: {integrity: sha512-+QklF255wkfBOabY+xw6FAI0Bwln/RhdwCunNy/9sKdKuChtaU67QZqU67KGAvZUTeeBgsL+yaHHxqfQeGZXEQ==} + engines: {node: '>= 8.0.0', npm: '>= 5.0.0'} + peerDependencies: + vue: 3.x + dependencies: + vue: 3.2.45 + dev: false + + /@iconify/types/1.1.0: + resolution: {integrity: sha512-Jh0llaK2LRXQoYsorIH8maClebsnzTcve+7U3rQUSnC11X4jtPnFuyatqFLvMxZ8MLG8dB4zfHsbPfuvxluONw==} + dev: true + + /@iconify/utils/1.0.33: + resolution: {integrity: sha512-vGeAqo7aGPxOQmGdVoXFUOuyN+0V7Lcrx2EvaiRjxUD1x6Om0Tvq2bdm7E24l2Pz++4S0mWMCVFXe/17EtKImQ==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.5.2 + '@iconify/types': 1.1.0 + debug: 4.3.4 + kolorist: 1.6.0 + local-pkg: 0.4.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@juggle/resize-observer/3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + dev: false + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.14.0 + dev: true + + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: true + + /@types/katex/0.14.0: + resolution: {integrity: sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==} + dev: false + + /@types/lodash-es/4.17.6: + resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} + dependencies: + '@types/lodash': 4.14.191 + dev: false + + /@types/lodash/4.14.191: + resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} + dev: false + + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true + + /@types/web-bluetooth/0.0.14: + resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==} + + /@unocss/cli/0.33.5: + resolution: {integrity: sha512-zijL36Km7mrb4auJv6rbsQwBlvP68omLko9Whv4lFx9dJ0H7FqIABxKODGIOGSnKhkOf63qRWihdftdmVQeyCA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@unocss/config': 0.33.5 + '@unocss/core': 0.33.5 + '@unocss/preset-uno': 0.33.5 + cac: 6.7.14 + chokidar: 3.5.3 + colorette: 2.0.19 + consola: 2.15.3 + fast-glob: 3.2.12 + pathe: 0.3.9 + perfect-debounce: 0.1.3 + dev: true + + /@unocss/config/0.33.5: + resolution: {integrity: sha512-hK+56VYP3/GlP361dBo3myM9nXVQJkEQwSxZZuOvbENFYGvZos9WhTHhMqDrwYIZCUis87HsoCHfXmFDO+opag==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.33.5 + unconfig: 0.3.7 + dev: true + + /@unocss/core/0.33.5: + resolution: {integrity: sha512-VN3XMYM0kCIC8Z07P3/gDm9aZtkXBMaA3BG+C8PhdKhDTGTbFneprXIye46lv7JvKrVo70Uxvq/RhYfxFnaQOg==} + dev: true + + /@unocss/inspector/0.33.5: + resolution: {integrity: sha512-S8N9jA1Yq9zlmSw3pQHoFQz3sP5rjR+/BSvLetg9GCZ4c8Vapw2A+aUkx821HggUGC4/i/8yusfefZ3KWl+Ylw==} + dependencies: + gzip-size: 6.0.0 + sirv: 2.0.2 + dev: true + + /@unocss/preset-attributify/0.33.5: + resolution: {integrity: sha512-ARtNylVRvCvJA3l/G3SwBEgG28tAGTRWVnjxYQpw9ke31SuNv3fuCsSLrpZzmtIvDwJMT5m2sgn1zkO9VqC6wA==} + dependencies: + '@unocss/core': 0.33.5 + dev: true + + /@unocss/preset-icons/0.33.5: + resolution: {integrity: sha512-fJMXN8IceVS6x+HbwLEcbfA1SC8qGi1s3MJNj6u/d1HyNlDLhSFZnSneAK/EnxfZJ+/dhv1zi16wFdZCXbrHkw==} + dependencies: + '@iconify/utils': 1.0.33 + '@unocss/core': 0.33.5 + ohmyfetch: 0.4.21 + transitivePeerDependencies: + - supports-color + dev: true + + /@unocss/preset-mini/0.33.5: + resolution: {integrity: sha512-1fQU18tnArSflrP6B+wQYB7HxP0Q4k/JmMzjII/lSr9q0k6M7W5dyIwSb0q9ENEajTDOiP4/e3Xj9g/jfeP3+A==} + dependencies: + '@unocss/core': 0.33.5 + dev: true + + /@unocss/preset-typography/0.33.5: + resolution: {integrity: sha512-T4Oggdzoqa9/wFbBc29GUCKsWclMiYYb3msYllH1sJFV1toG6q/xNQIA1OK63D4vRarkxd49IRKyHr4Cruc0Qw==} + dependencies: + '@unocss/core': 0.33.5 + dev: true + + /@unocss/preset-uno/0.33.5: + resolution: {integrity: sha512-0oB1t38jHwguejh8Jf5V1qh+SmQBYRr6Wqee4eKuajhFeNhyOnKNjjlIYyVL6bjkmaSkT3f7/xU+jMyPRiH6Cg==} + dependencies: + '@unocss/core': 0.33.5 + '@unocss/preset-mini': 0.33.5 + '@unocss/preset-wind': 0.33.5 + dev: true + + /@unocss/preset-web-fonts/0.33.5: + resolution: {integrity: sha512-ehpzw6paEtpmazCNO1GzEwd2T1+hHs4dUNRt+7NNjKa/B9D09GIHfkkIDBhjQd1dIDrqj66+p2EmeHhMzo4+Ng==} + dependencies: + '@unocss/core': 0.33.5 + ohmyfetch: 0.4.21 + dev: true + + /@unocss/preset-wind/0.33.5: + resolution: {integrity: sha512-fsVtoqOIhWjXheblzVkoP3o7HChbotlQyf9NsRhiC4FgTneGenG9oLJf9EjT5BBVPvByou44STQ5xKjvIFizqQ==} + dependencies: + '@unocss/core': 0.33.5 + '@unocss/preset-mini': 0.33.5 + dev: true + + /@unocss/reset/0.33.5: + resolution: {integrity: sha512-I7UCZE/cxILb0osq90cLqXZXL9mUnuDh1O7D8SwSXiRXLUAiOxTYPsUSyQ4Fp/w58CV7xXPUNn2Rio/KmVscfQ==} + dev: true + + /@unocss/scope/0.33.5: + resolution: {integrity: sha512-RSwWZY+VhC2lPNcLDBBuTnQ59TcsRLGb++z44RSd4BqpZbnz0mmrRNn7uOZXhLJEM5w6QByWSoRno8ax1peDhA==} + dev: true + + /@unocss/transformer-compile-class/0.33.5: + resolution: {integrity: sha512-7MJvfKfrvvlRZqIBwSJXLbonsrTrhSwco5iUEn8ihL6fm+yfwnfkhqhKcJ+zdbAs9TZz4bAiveYQbocUBuj9gQ==} + dependencies: + '@unocss/core': 0.33.5 + dev: true + + /@unocss/transformer-directives/0.33.5: + resolution: {integrity: sha512-bx5JRX5X2ukRr8b5B2uLoxeDLI9HcpivcjFERuLsseJ8VMtNQ81qdOUAYyg37RGJmbbq4Tl6rShD/Lm+4CNyew==} + dependencies: + '@unocss/core': 0.33.5 + css-tree: 2.3.1 + dev: true + + /@unocss/transformer-variant-group/0.33.5: + resolution: {integrity: sha512-0otRA8y6gOM8M52f4/5b0qkYayZkN6JZ8//8Znuxa5wO9lXnnxel3cLsLdxE5MLL2gyf7zC+4C0nwRlRFQSfDw==} + dependencies: + '@unocss/core': 0.33.5 + dev: true + + /@unocss/vite/0.33.5_vite@2.9.15: + resolution: {integrity: sha512-q2Wc+/vCwIlarK3FfmdM3c9OwwmoiUjzMtdgK8Y6qNIq/26S7pEk5upplhswR6M9kjqjDbIQOKgaVrhQFlLeVQ==} + peerDependencies: + vite: ^2.9.0 + dependencies: + '@rollup/pluginutils': 4.2.1 + '@unocss/config': 0.33.5 + '@unocss/core': 0.33.5 + '@unocss/inspector': 0.33.5 + '@unocss/scope': 0.33.5 + '@unocss/transformer-directives': 0.33.5 + magic-string: 0.26.7 + vite: 2.9.15 + dev: true + + /@vitejs/plugin-vue/2.3.4_vite@2.9.15+vue@3.2.45: + resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==} + engines: {node: '>=12.0.0'} + peerDependencies: + vite: ^2.5.10 + vue: ^3.2.25 + dependencies: + vite: 2.9.15 + vue: 3.2.45 + dev: true + + /@vue/compiler-core/3.2.45: + resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==} + dependencies: + '@babel/parser': 7.20.7 + '@vue/shared': 3.2.45 + estree-walker: 2.0.2 + source-map: 0.6.1 + + /@vue/compiler-dom/3.2.45: + resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==} + dependencies: + '@vue/compiler-core': 3.2.45 + '@vue/shared': 3.2.45 + + /@vue/compiler-sfc/3.2.45: + resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==} + dependencies: + '@babel/parser': 7.20.7 + '@vue/compiler-core': 3.2.45 + '@vue/compiler-dom': 3.2.45 + '@vue/compiler-ssr': 3.2.45 + '@vue/reactivity-transform': 3.2.45 + '@vue/shared': 3.2.45 + estree-walker: 2.0.2 + magic-string: 0.25.9 + postcss: 8.4.20 + source-map: 0.6.1 + + /@vue/compiler-ssr/3.2.45: + resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==} + dependencies: + '@vue/compiler-dom': 3.2.45 + '@vue/shared': 3.2.45 + + /@vue/devtools-api/6.4.5: + resolution: {integrity: sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==} + + /@vue/reactivity-transform/3.2.45: + resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==} + dependencies: + '@babel/parser': 7.20.7 + '@vue/compiler-core': 3.2.45 + '@vue/shared': 3.2.45 + estree-walker: 2.0.2 + magic-string: 0.25.9 + + /@vue/reactivity/3.2.45: + resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==} + dependencies: + '@vue/shared': 3.2.45 + + /@vue/runtime-core/3.2.45: + resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==} + dependencies: + '@vue/reactivity': 3.2.45 + '@vue/shared': 3.2.45 + + /@vue/runtime-dom/3.2.45: + resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==} + dependencies: + '@vue/runtime-core': 3.2.45 + '@vue/shared': 3.2.45 + csstype: 2.6.21 + + /@vue/server-renderer/3.2.45_vue@3.2.45: + resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==} + peerDependencies: + vue: 3.2.45 + dependencies: + '@vue/compiler-ssr': 3.2.45 + '@vue/shared': 3.2.45 + vue: 3.2.45 + + /@vue/shared/3.2.45: + resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} + + /@vueuse/core/8.9.4_vue@3.2.45: + resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + '@types/web-bluetooth': 0.0.14 + '@vueuse/metadata': 8.9.4 + '@vueuse/shared': 8.9.4_vue@3.2.45 + vue: 3.2.45 + vue-demi: 0.13.11_vue@3.2.45 + + /@vueuse/metadata/8.9.4: + resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==} + + /@vueuse/shared/8.9.4_vue@3.2.45: + resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + vue: 3.2.45 + vue-demi: 0.13.11_vue@3.2.45 + + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /animate.css/4.1.1: + resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==} + dev: false + + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /async-validator/4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + dev: false + + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axios/0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + dependencies: + follow-redirects: 1.15.2 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /busboy/1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.3 + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true + + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-render/0.15.12: + resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==} + dependencies: + '@emotion/hash': 0.8.0 + csstype: 3.0.11 + dev: false + + /css-tree/2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /csstype/2.6.21: + resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} + + /csstype/3.0.11: + resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} + dev: false + + /date-fns-tz/1.3.7_date-fns@2.29.3: + resolution: {integrity: sha512-1t1b8zyJo+UI8aR+g3iqr5fkUHWpd58VBx8J/ZSQ+w7YrGlw80Ag4sA86qkfCXRBLmMc4I2US+aPMd4uKvwj5g==} + peerDependencies: + date-fns: '>=2.0.0' + dependencies: + date-fns: 2.29.3 + dev: false + + /date-fns/2.29.3: + resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} + engines: {node: '>=0.11'} + dev: false + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-equal/2.1.0: + resolution: {integrity: sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==} + dependencies: + call-bind: 1.0.2 + es-get-iterator: 1.1.2 + get-intrinsic: 1.1.3 + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.9 + dev: true + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /defu/6.1.1: + resolution: {integrity: sha512-aA964RUCsBt0FGoNIlA3uFgo2hO+WWC0fiC6DBps/0SFzkKcYoM/3CzVLIa5xSsrFjdioMdYgAIbwo80qp2MoA==} + dev: true + + /destr/1.2.2: + resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} + dev: true + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /es-get-iterator/1.1.2: + resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + dev: true + + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /evtd/0.2.4: + resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} + dev: false + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fastq/1.14.0: + resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + dependencies: + reusify: 1.0.4 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /follow-redirects/1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /get-intrinsic/1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /gzip-size/6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /highlight.js/11.7.0: + resolution: {integrity: sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==} + engines: {node: '>=12.0.0'} + dev: false + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /is-arguments/1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + dev: true + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-map/2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-set/2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /is-weakmap/2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakset/2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + dev: true + + /isarray/2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jiti/1.16.0: + resolution: {integrity: sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==} + hasBin: true + dev: true + + /json5/2.2.2: + resolution: {integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /kolorist/1.6.0: + resolution: {integrity: sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==} + dev: true + + /local-pkg/0.4.2: + resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + engines: {node: '>=14'} + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es/4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + + /magic-string/0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /mdn-data/2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch/5.1.2: + resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /naive-ui/2.34.3_vue@3.2.45: + resolution: {integrity: sha512-fUMr0dzb/iGsOTWgoblPVobY5X5dihQ1eam5dA+H74oyLYAvgX4pL96xQFPBLIYqvyRFBAsN85kHN5pLqdtpxA==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@css-render/plugin-bem': 0.15.12_css-render@0.15.12 + '@css-render/vue3-ssr': 0.15.12_vue@3.2.45 + '@types/katex': 0.14.0 + '@types/lodash': 4.14.191 + '@types/lodash-es': 4.17.6 + async-validator: 4.2.5 + css-render: 0.15.12 + date-fns: 2.29.3 + date-fns-tz: 1.3.7_date-fns@2.29.3 + evtd: 0.2.4 + highlight.js: 11.7.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + seemly: 0.3.6 + treemate: 0.3.11 + vdirs: 0.1.8_vue@3.2.45 + vooks: 0.2.12_vue@3.2.45 + vue: 3.2.45 + vueuc: 0.4.51_vue@3.2.45 + dev: false + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /node-fetch-native/0.1.8: + resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==} + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize.css/8.0.1: + resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} + dev: false + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: true + + /object-is/1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + dev: true + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /ohmyfetch/0.4.21: + resolution: {integrity: sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==} + dependencies: + destr: 1.2.2 + node-fetch-native: 0.1.8 + ufo: 0.8.6 + undici: 5.14.0 + dev: true + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /pathe/0.3.9: + resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} + dev: true + + /perfect-debounce/0.1.3: + resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pinia/2.0.28_vue@3.2.45: + resolution: {integrity: sha512-YClq9DkqCblq9rlyUual7ezMu/iICWdBtfJrDt4oWU9Zxpijyz7xB2xTwx57DaBQ96UGvvTMORzALr+iO5PVMw==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.4.5 + vue: 3.2.45 + vue-demi: 0.13.11_vue@3.2.45 + dev: false + + /pnpm/7.20.0: + resolution: {integrity: sha512-klGp+P0sxw1f6OYwJtl0PcoYiIHVhMZdh9e2B8maUmzOGmAj0NL9jKaKPfIX4kKfyQcWeADm46Z+4CKtabZqSw==} + engines: {node: '>=14.6'} + hasBin: true + dev: true + + /postcss/8.4.20: + resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rollup/2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /seemly/0.3.6: + resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==} + dev: false + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sirv/2.0.2: + resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.0 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + /streamsearch/1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /totalist/3.0.0: + resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + engines: {node: '>=6'} + dev: true + + /treemate/0.3.11: + resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} + dev: false + + /ufo/0.8.6: + resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} + dev: true + + /unconfig/0.3.7: + resolution: {integrity: sha512-1589b7oGa8ILBYpta7TndM5mLHLzHUqBfhszeZxuUBrjO/RoQ52VGVWsS3w0C0GLNxO9RPmqkf6BmIvBApaRdA==} + dependencies: + '@antfu/utils': 0.5.2 + defu: 6.1.1 + jiti: 1.16.0 + dev: true + + /undici/5.14.0: + resolution: {integrity: sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ==} + engines: {node: '>=12.18'} + dependencies: + busboy: 1.6.0 + dev: true + + /unocss/0.33.5_vite@2.9.15: + resolution: {integrity: sha512-aSWxGP6LHWv9eKc0WrmuLnOG2V8jkYd6zvsvB3LhZtCBWFXHPJ25T+zZP1szLbejPgSVJVVpJhnIAjJOFXRM9g==} + engines: {node: '>=14'} + dependencies: + '@unocss/cli': 0.33.5 + '@unocss/core': 0.33.5 + '@unocss/preset-attributify': 0.33.5 + '@unocss/preset-icons': 0.33.5 + '@unocss/preset-mini': 0.33.5 + '@unocss/preset-typography': 0.33.5 + '@unocss/preset-uno': 0.33.5 + '@unocss/preset-web-fonts': 0.33.5 + '@unocss/preset-wind': 0.33.5 + '@unocss/reset': 0.33.5 + '@unocss/transformer-compile-class': 0.33.5 + '@unocss/transformer-directives': 0.33.5 + '@unocss/transformer-variant-group': 0.33.5 + '@unocss/vite': 0.33.5_vite@2.9.15 + transitivePeerDependencies: + - supports-color + - vite + dev: true + + /unplugin-auto-import/0.7.2_tz26lugnys4zsg624icbm2tdye: + resolution: {integrity: sha512-VzaYUa2VByUT70WSFlOXoovyWuwC/8ePKQUC9fhU+BRmvTC7qhCVgChH/NieWMEVgyT+HhacxM+W7xMEOmA+MA==} + engines: {node: '>=14'} + peerDependencies: + '@vueuse/core': '*' + peerDependenciesMeta: + '@vueuse/core': + optional: true + dependencies: + '@antfu/utils': 0.5.2 + '@rollup/pluginutils': 4.2.1 + '@vueuse/core': 8.9.4_vue@3.2.45 + local-pkg: 0.4.2 + magic-string: 0.26.7 + resolve: 1.22.1 + unplugin: 0.6.3_vite@2.9.15 + transitivePeerDependencies: + - esbuild + - rollup + - vite + - webpack + dev: true + + /unplugin-vue-components/0.19.9_vite@2.9.15+vue@3.2.45: + resolution: {integrity: sha512-i5mZtg85euPWZrGswFkoa9pf4WjKCP5qOjnwOyg3KOKVzFjnP3osCdrunQMjtoMKehTdz1vV6baZH8bZR4PNgg==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@babel/traverse': ^7.15.4 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@babel/traverse': + optional: true + dependencies: + '@antfu/utils': 0.5.2 + '@rollup/pluginutils': 4.2.1 + chokidar: 3.5.3 + debug: 4.3.4 + fast-glob: 3.2.12 + local-pkg: 0.4.2 + magic-string: 0.26.7 + minimatch: 5.1.2 + resolve: 1.22.1 + unplugin: 0.7.2_vite@2.9.15 + vue: 3.2.45 + transitivePeerDependencies: + - esbuild + - rollup + - supports-color + - vite + - webpack + dev: true + + /unplugin/0.6.3_vite@2.9.15: + resolution: {integrity: sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==} + peerDependencies: + esbuild: '>=0.13' + rollup: ^2.50.0 + vite: ^2.3.0 + webpack: 4 || 5 + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + chokidar: 3.5.3 + vite: 2.9.15 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.4.6 + dev: true + + /unplugin/0.7.2_vite@2.9.15: + resolution: {integrity: sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==} + peerDependencies: + esbuild: '>=0.13' + rollup: ^2.50.0 + vite: ^2.3.0 || ^3.0.0-0 + webpack: 4 || 5 + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + acorn: 8.8.1 + chokidar: 3.5.3 + vite: 2.9.15 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.4.6 + dev: true + + /vdirs/0.1.8_vue@3.2.45: + resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} + peerDependencies: + vue: ^3.0.11 + dependencies: + evtd: 0.2.4 + vue: 3.2.45 + dev: false + + /vite-plugin-pages/0.23.0_vite@2.9.15: + resolution: {integrity: sha512-KEfW6WBfACCjMXoQY0mLEzfifwCTq6FlvvtXs2XSEe9Pd4QadZTNzHOPKHDsKpVXysRzbYxE8/c/Ao9+nXsQ7w==} + peerDependencies: + '@vue/compiler-sfc': ^3.0.0 + vite: ^2.0.0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.4 + deep-equal: 2.1.0 + fast-glob: 3.2.12 + json5: 2.2.2 + local-pkg: 0.4.2 + picocolors: 1.0.0 + vite: 2.9.15 + yaml: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-vue-layouts/0.6.0_t2n4ylcd3qv6ffis2sifdiddkq: + resolution: {integrity: sha512-7QX7o/NpCfs+hyXphwYfmPqAEQ6qd4uXsvI0VsovjGT2eCoEE5dMdP6L+uqqNWY4uqv7oCvtinecZmbzZv/9Rg==} + peerDependencies: + vite: ^2.5.0 + vue: ^2.6.12 || ^3.2.4 + vue-router: ^3.5.1 || ^ 4.0.11 + dependencies: + '@vue/compiler-sfc': 3.2.45 + debug: 4.3.4 + fast-glob: 3.2.12 + vite: 2.9.15 + vue: 3.2.45 + vue-router: 4.1.6_vue@3.2.45 + transitivePeerDependencies: + - supports-color + dev: true + + /vite/2.9.15: + resolution: {integrity: sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==} + engines: {node: '>=12.2.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + dependencies: + esbuild: 0.14.54 + postcss: 8.4.20 + resolve: 1.22.1 + rollup: 2.77.3 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vooks/0.2.12_vue@3.2.45: + resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==} + peerDependencies: + vue: ^3.0.0 + dependencies: + evtd: 0.2.4 + vue: 3.2.45 + dev: false + + /vue-demi/0.13.11_vue@3.2.45: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.2.45 + + /vue-router/4.1.6_vue@3.2.45: + resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.4.5 + vue: 3.2.45 + + /vue/3.2.45: + resolution: {integrity: sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==} + dependencies: + '@vue/compiler-dom': 3.2.45 + '@vue/compiler-sfc': 3.2.45 + '@vue/runtime-dom': 3.2.45 + '@vue/server-renderer': 3.2.45_vue@3.2.45 + '@vue/shared': 3.2.45 + + /vueuc/0.4.51_vue@3.2.45: + resolution: {integrity: sha512-pLiMChM4f+W8czlIClGvGBYo656lc2Y0/mXFSCydcSmnCR1izlKPGMgiYBGjbY9FDkFG8a2HEVz7t0DNzBWbDw==} + peerDependencies: + vue: ^3.0.11 + dependencies: + '@css-render/vue3-ssr': 0.15.12_vue@3.2.45 + '@juggle/resize-observer': 3.4.0 + css-render: 0.15.12 + evtd: 0.2.4 + seemly: 0.3.6 + vdirs: 0.1.8_vue@3.2.45 + vooks: 0.2.12_vue@3.2.45 + vue: 3.2.45 + dev: false + + /webpack-sources/3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules/0.4.6: + resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} + dev: true + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-collection/1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /yaml/2.2.0: + resolution: {integrity: sha512-auf7Gi6QwO7HW//GA9seGvTXVGWl1CM/ADWh1+RxtXr6XOxnT65ovDl9fTi4e0monEyJxCHqDpF6QnFDXmJE4g==} + engines: {node: '>= 14'} + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/normal/public/favicon.png b/normal/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..9a6c5cb351fa7fba8d026f8984584cdf20f548f2 GIT binary patch literal 9104 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 literal 0 HcmV?d00001 diff --git a/normal/src/App.vue b/normal/src/App.vue new file mode 100644 index 0000000..cec4473 --- /dev/null +++ b/normal/src/App.vue @@ -0,0 +1,53 @@ + + + diff --git a/normal/src/api/index.js b/normal/src/api/index.js new file mode 100644 index 0000000..3f59f17 --- /dev/null +++ b/normal/src/api/index.js @@ -0,0 +1,53 @@ +import {$post} from '~/tool/axios' +import {useConfig, useSessionToken, useSaveTokenType, useToken} from "~/store"; +import $router from "~/router"; + +const $save_token_type = useSaveTokenType() +const $session_token = useSessionToken() +const $token = useToken() +const $config = useConfig() +const admin_api = 'Admin' +export const yo = async (data) => await $post({url: `${$config.value.api.url}/api/yo`, data}, true) +export const ConfigGetAction = async (label_arr) => await $post({ + url: `${$config.value.api.url}/api/${admin_api}/Config/get`, data: {label_arr} +}, true) +export const $headers = () => { + let $token + if ($save_token_type.value === 'local') { + $token = useToken() + } else { + $token = useSessionToken() + } + return { + 'Authorization': 'Bearer ' + $token.value + } +} +export const $image = (path) => { + const path_ret = ['http://', 'https://', ';base64,'] + for (let i = 0; i < path_ret.length; i++) { + if (path.indexOf(path_ret[i]) !== -1) { + return path + } + } + return `${$config.value.api.url}${path}` +} +export const $base64 = (file) => { + let reader = new FileReader() + reader.readAsDataURL(file) + return new Promise(resolve => (reader.onloadend = () => resolve(reader.result))) +} +export const $response = (res, then, next = false) => { + if (res) { + if ($config.value.api.login.indexOf(res.code) !== -1) { + $session_token.value = null + $token.value = null + if (!!next) { + next('/login') + } else { + $router.push('/login') + } + } + if (res.code !== $config.value.api.success) return window.$message().error(res.message) + then() + } +} diff --git a/normal/src/components/Breadcrumb.vue b/normal/src/components/Breadcrumb.vue new file mode 100644 index 0000000..dcafa7a --- /dev/null +++ b/normal/src/components/Breadcrumb.vue @@ -0,0 +1,30 @@ + + diff --git a/normal/src/components/Icon.vue b/normal/src/components/Icon.vue new file mode 100644 index 0000000..4dfdfa5 --- /dev/null +++ b/normal/src/components/Icon.vue @@ -0,0 +1,29 @@ + + + diff --git a/normal/src/components/Logo.vue b/normal/src/components/Logo.vue new file mode 100644 index 0000000..1a02c28 --- /dev/null +++ b/normal/src/components/Logo.vue @@ -0,0 +1,94 @@ + + + + diff --git a/normal/src/components/Menu.vue b/normal/src/components/Menu.vue new file mode 100644 index 0000000..9d28f55 --- /dev/null +++ b/normal/src/components/Menu.vue @@ -0,0 +1,100 @@ + + diff --git a/normal/src/components/Mounting.vue b/normal/src/components/Mounting.vue new file mode 100644 index 0000000..a0a993e --- /dev/null +++ b/normal/src/components/Mounting.vue @@ -0,0 +1,13 @@ + + diff --git a/normal/src/components/User.vue b/normal/src/components/User.vue new file mode 100644 index 0000000..2195dbd --- /dev/null +++ b/normal/src/components/User.vue @@ -0,0 +1,63 @@ + + + diff --git a/normal/src/components/dev/Api.vue b/normal/src/components/dev/Api.vue new file mode 100644 index 0000000..dd3660b --- /dev/null +++ b/normal/src/components/dev/Api.vue @@ -0,0 +1,23 @@ + + diff --git a/normal/src/components/dev/IconPark.vue b/normal/src/components/dev/IconPark.vue new file mode 100644 index 0000000..aa1e76e --- /dev/null +++ b/normal/src/components/dev/IconPark.vue @@ -0,0 +1,28 @@ + + diff --git a/normal/src/components/dev/RouterParams.vue b/normal/src/components/dev/RouterParams.vue new file mode 100644 index 0000000..462ae23 --- /dev/null +++ b/normal/src/components/dev/RouterParams.vue @@ -0,0 +1,20 @@ + + diff --git a/normal/src/components/dev/RouterPush.vue b/normal/src/components/dev/RouterPush.vue new file mode 100644 index 0000000..015c2df --- /dev/null +++ b/normal/src/components/dev/RouterPush.vue @@ -0,0 +1,19 @@ + + diff --git a/normal/src/components/dev/RouterQuery.vue b/normal/src/components/dev/RouterQuery.vue new file mode 100644 index 0000000..b220b1d --- /dev/null +++ b/normal/src/components/dev/RouterQuery.vue @@ -0,0 +1,34 @@ + + diff --git a/normal/src/components/dev/SonFather/Father.vue b/normal/src/components/dev/SonFather/Father.vue new file mode 100644 index 0000000..e962d85 --- /dev/null +++ b/normal/src/components/dev/SonFather/Father.vue @@ -0,0 +1,32 @@ + + diff --git a/normal/src/components/dev/SonFather/components/Son.vue b/normal/src/components/dev/SonFather/components/Son.vue new file mode 100644 index 0000000..fce6895 --- /dev/null +++ b/normal/src/components/dev/SonFather/components/Son.vue @@ -0,0 +1,35 @@ + + diff --git a/normal/src/components/dev/Store.vue b/normal/src/components/dev/Store.vue new file mode 100644 index 0000000..4f7da06 --- /dev/null +++ b/normal/src/components/dev/Store.vue @@ -0,0 +1,52 @@ + + diff --git a/normal/src/components/dev/StyleVBind.vue b/normal/src/components/dev/StyleVBind.vue new file mode 100644 index 0000000..7c3a31a --- /dev/null +++ b/normal/src/components/dev/StyleVBind.vue @@ -0,0 +1,21 @@ + + + diff --git a/normal/src/components/dev/UnoCSS.vue b/normal/src/components/dev/UnoCSS.vue new file mode 100644 index 0000000..29b2112 --- /dev/null +++ b/normal/src/components/dev/UnoCSS.vue @@ -0,0 +1,17 @@ + + + diff --git a/normal/src/components/dev/UseMessage.vue b/normal/src/components/dev/UseMessage.vue new file mode 100644 index 0000000..b91f785 --- /dev/null +++ b/normal/src/components/dev/UseMessage.vue @@ -0,0 +1,21 @@ + + diff --git a/normal/src/composables/dark.js b/normal/src/composables/dark.js new file mode 100644 index 0000000..a2a21dd --- /dev/null +++ b/normal/src/composables/dark.js @@ -0,0 +1,2 @@ +export const isDark = useDark() +export const toggleDark = useToggle(isDark) diff --git a/normal/src/composables/fullscreen.js b/normal/src/composables/fullscreen.js new file mode 100644 index 0000000..86f04ff --- /dev/null +++ b/normal/src/composables/fullscreen.js @@ -0,0 +1,3 @@ +const {isFullscreen, toggle} = useFullscreen() +export const isFull = isFullscreen +export const toggleFull = toggle diff --git a/normal/src/composables/index.js b/normal/src/composables/index.js new file mode 100644 index 0000000..c085279 --- /dev/null +++ b/normal/src/composables/index.js @@ -0,0 +1,2 @@ +export * from './dark' +export * from './fullscreen' diff --git a/normal/src/layouts/404.vue b/normal/src/layouts/404.vue new file mode 100644 index 0000000..4201321 --- /dev/null +++ b/normal/src/layouts/404.vue @@ -0,0 +1,9 @@ + + + diff --git a/normal/src/layouts/default.vue b/normal/src/layouts/default.vue new file mode 100644 index 0000000..0b2c901 --- /dev/null +++ b/normal/src/layouts/default.vue @@ -0,0 +1,116 @@ + + + diff --git a/normal/src/layouts/login.vue b/normal/src/layouts/login.vue new file mode 100644 index 0000000..f8a3058 --- /dev/null +++ b/normal/src/layouts/login.vue @@ -0,0 +1,7 @@ + + diff --git a/normal/src/main.js b/normal/src/main.js new file mode 100644 index 0000000..284150b --- /dev/null +++ b/normal/src/main.js @@ -0,0 +1,14 @@ +import {createApp} from 'vue' +import App from './App.vue' +import router from '~/router' +import {createPinia} from 'pinia' +import './styles/main.css' +import 'uno.css' +import 'normalize.css' +import 'animate.css'; +import '@icon-park/vue-next/styles/index.css'; + +const app = createApp(App) +app.use(router) +app.use(createPinia()) +app.mount('#app') diff --git a/normal/src/pages/[...all].vue b/normal/src/pages/[...all].vue new file mode 100755 index 0000000..4cee340 --- /dev/null +++ b/normal/src/pages/[...all].vue @@ -0,0 +1,26 @@ + + + + +{"name":"404","meta":{"layout":"404"}} + \ No newline at end of file diff --git a/normal/src/pages/dev/[name].vue b/normal/src/pages/dev/[name].vue new file mode 100644 index 0000000..b2082d7 --- /dev/null +++ b/normal/src/pages/dev/[name].vue @@ -0,0 +1,49 @@ + + + + +{"meta":{"title":"基础功能示例","icon":"i-ic-round-code"}} + diff --git a/normal/src/pages/index.vue b/normal/src/pages/index.vue new file mode 100644 index 0000000..3accfc1 --- /dev/null +++ b/normal/src/pages/index.vue @@ -0,0 +1,24 @@ + + + +{"meta":{"title":"首页"}} + diff --git a/normal/src/pages/login.vue b/normal/src/pages/login.vue new file mode 100644 index 0000000..dea0344 --- /dev/null +++ b/normal/src/pages/login.vue @@ -0,0 +1,188 @@ + + + + +{"meta":{"layout":"login","title":"登录"}} + diff --git a/normal/src/router/index.js b/normal/src/router/index.js new file mode 100644 index 0000000..86120ae --- /dev/null +++ b/normal/src/router/index.js @@ -0,0 +1,68 @@ +import {createRouter, createWebHashHistory} from 'vue-router' +import {setupLayouts} from 'virtual:generated-layouts' +import generatedRoutes from 'virtual:generated-pages' +import {ConfigGetAction, $response} from "~/api" +import {$favicon} from "~/tool/favicon" +import { + useStore, useSaveTokenType, useSessionToken, useToken, useRouterActive +} from '~/store' + +const no_login_list = ['login', '404']; +const $router_active = useRouterActive() +const router = createRouter({ + history: createWebHashHistory(import.meta.env.BASE_URL), routes: setupLayouts(generatedRoutes) +}) + +const updateRouterActive = (matched) => { + matched.shift() + const last = matched[matched.length - 1] + if (no_login_list.indexOf(last.name) !== -1) return + setTimeout(() => { + $router_active.value = matched.map((item) => { + return { + title: 'title' in item.meta ? item.meta.title : item.name, + key: item.name + } + }) + }) +} + +router.beforeEach(async (to, from, next) => { + window.$loading.start() + const $store = useStore() + if (!$store.config) { + const response = await ConfigGetAction(['Logo', 'Favicon', 'Login欢迎图片', '网站名称']) + $response(response, () => { + $store.config = response.data + }) + $favicon($store.config['Favicon']) + } + document.title = ('title' in to.meta && to.meta.title !== '首页') ? `${to.meta.title} ${$store.config['网站名称']}` : $store.config['网站名称'] + if (no_login_list.indexOf(to.name) === -1) { + const $save_token_type = useSaveTokenType() + let $token; + if ($save_token_type.value === 'local') { + $token = useToken() + } else { + $token = useSessionToken() + } + if ($token.value === '') { + next('/login?f=' + encodeURIComponent(to.fullPath)) + setTimeout(() => { + window.$loading.finish() + }) + } else { + updateRouterActive(to.matched.map(item => item)) + next() + setTimeout(() => { + window.$loading.finish() + }) + } + } else { + next() + setTimeout(() => { + window.$loading.finish() + }) + } +}) +export default router diff --git a/normal/src/store/index.js b/normal/src/store/index.js new file mode 100644 index 0000000..c10fb7a --- /dev/null +++ b/normal/src/store/index.js @@ -0,0 +1,17 @@ +import {defineStore} from 'pinia' + +export const useStore = defineStore('main', { + state: () => { + return { + config: false, + admin_info: false, api_loading: 0, count: 0 + } + } +}) +const TOKEN_KEY = JSON.parse(localStorage.getItem('APP_CONFIG') ?? '{}').token_key +export const useConfig = createGlobalState(() => useStorage('APP_CONFIG', JSON.parse(localStorage.getItem('APP_CONFIG') ?? '{}'))) +export const useToken = createGlobalState(() => useStorage(TOKEN_KEY, '')) +export const useSessionToken = createGlobalState(() => useStorage(TOKEN_KEY, '', sessionStorage)) +export const useSaveTokenType = createGlobalState(() => useStorage('SAVE_TOKEN_TYPE', 'session')) +export const useRouterActive = createGlobalState(() => useStorage('ROUTER_ACTIVE', [])) +export const useCollapsed = createGlobalState(() => useStorage('COLLAPSED', false)) diff --git a/normal/src/styles/main.css b/normal/src/styles/main.css new file mode 100755 index 0000000..28fe71c --- /dev/null +++ b/normal/src/styles/main.css @@ -0,0 +1,11 @@ +html, +body, +#app { + height: 100%; + margin: 0; + padding: 0; +} + +html.dark { + background: #333; +} diff --git a/normal/src/tool/axios.js b/normal/src/tool/axios.js new file mode 100644 index 0000000..fb86f60 --- /dev/null +++ b/normal/src/tool/axios.js @@ -0,0 +1,30 @@ +import axios from 'axios' +import {useToken, useStore, useConfig, useSaveTokenType, useSessionToken} from '~/store' +const $save_token_type = useSaveTokenType() +let $token; +const post = axios.create({ + method: 'POST' +}) +post.interceptors.request.use(config => { + if ($save_token_type.value === 'local') { + $token = useToken() + } else { + $token = useSessionToken() + } + config.headers['Authorization'] = 'Bearer ' + $token.value + return config +}, error => Promise.reject(error)) +post.interceptors.response.use(response => { + return (response.status === 200) ? response : Promise.reject('[ERROR] response.status: ' + response.status) +}, error => Promise.reject(error)) + +const $config = useConfig() +export const $post = async (request, loading = false) => { + const $store = useStore() + if (loading) $store.api_loading++ + const response = await post(request).catch((e) => { + window.$message().error($config.value.api.error_message) + }) + if (loading) $store.api_loading-- + return !!response ? response.data : false +} diff --git a/normal/src/tool/color.js b/normal/src/tool/color.js new file mode 100644 index 0000000..7d10d0c --- /dev/null +++ b/normal/src/tool/color.js @@ -0,0 +1,13 @@ +function addLight(color, amount) { + const cc = parseInt(color, 16) + amount; + const c = cc > 255 ? 255 : cc; + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}`; +} + +function lighten(color, amount) { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color; + amount = Math.trunc((255 * amount) / 100); + return `#${addLight(color.substring(0, 2), amount)}${addLight(color.substring(2, 4), amount)}${addLight(color.substring(4, 6), amount)}`; +} + +export default {lighten} diff --git a/normal/src/tool/favicon.js b/normal/src/tool/favicon.js new file mode 100644 index 0000000..e2d8198 --- /dev/null +++ b/normal/src/tool/favicon.js @@ -0,0 +1,10 @@ +import {$image} from "~/api"; + +export const $favicon = (path, t = false) => { + const link = document.querySelector("link[rel*='icon']") || document.createElement('link') + link.type = 'image/x-icon' + link.rel = 'shortcut icon' + let href = $image(path) + link.href = t ? [href, 't=' + String(new Date() / 1)].join(href.indexOf('?') === -1 ? '?' : '&') : href + document.getElementsByTagName('head')[0].appendChild(link) +} diff --git a/normal/vite.config.js b/normal/vite.config.js new file mode 100644 index 0000000..b334557 --- /dev/null +++ b/normal/vite.config.js @@ -0,0 +1,26 @@ +import {defineConfig} from 'vite' +import Vue from '@vitejs/plugin-vue' +import path from 'path' +import Pages from 'vite-plugin-pages' +import Layouts from 'vite-plugin-vue-layouts' +import Components from 'unplugin-vue-components/vite' +import AutoImport from 'unplugin-auto-import/vite' +import {NaiveUiResolver} from 'unplugin-vue-components/resolvers' +import Unocss from 'unocss/vite' +import {presetAttributify, presetUno, presetIcons} from 'unocss' + +const admin_path = 'normal' +export default defineConfig({ + base: `/${admin_path}/`, + build: { + outDir: `../public/${admin_path}`, assetsDir: 'lib' + }, + resolve: {alias: {'~/': `${path.resolve(__dirname, 'src')}/`}}, + plugins: [Vue({reactivityTransform: true}), Pages(), Layouts(), AutoImport({ + imports: ['vue', 'vue/macros', 'vue-router', '@vueuse/core',], + }), Components({resolvers: [NaiveUiResolver()]}), Unocss({ + presets: [presetAttributify({}), presetUno(), presetIcons({ + warn: true, + })], + })] +})