diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ebc3674..c6ccee3 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -13,7 +13,6 @@ "antfu.goto-alias", "mikestead.dotenv", "redhat.vscode-yaml", - "Lokalise.i18n-ally", "Vue.volar", "steoates.autoimport", "dbaeumer.vscode-eslint", diff --git a/.env b/.env index 4aea97c..6a39d83 100644 --- a/.env +++ b/.env @@ -4,7 +4,7 @@ VITE_API_BASE_URL = /api # 标题 -VITE_APP_TITLE = tov +VITE_APP_TITLE = 后台 # markdown 渲染支持 @@ -12,7 +12,7 @@ VITE_APP_MARKDOWN = true # 开发时的开发面板 -VITE_APP_DEV_TOOLS = true +VITE_APP_DEV_TOOLS = false # 生产时 mock 支持 diff --git a/README_EN.md b/README_EN.md deleted file mode 100644 index 082003c..0000000 --- a/README_EN.md +++ /dev/null @@ -1,1373 +0,0 @@ -
- -
- 中文 | English -
-
- - dishait - https://pc.dishait.cn/ - -

- tov-template -

-

vite + vue3 + ts out-of-the-box modern development template

-
- -
-
- -## Features 🐳 - -1. Vite-based -2. Vue3-compatible -3. File-based routing -4. Layout system -5. Mock support -6. Auto import APIs -7. Auto import components -8. Auto import icons -9. VueUse support -10. TypeScript-friendly -11. UnoCss integration -12. Dark mode support -13. SWR request support -14. Pinia state management -15. pnpm package manager -16. Progress bar for navigation -17. Devtools panel support -18. Plugin auto-loading support -19. Vitest unit testing support -20. Markdown rendering support -21. Path aliases support -22. Command line auto creation and deletion -23. i18n internationalization support -24. Beautiful 404 page support -25. TSX support -26. Gzip resource compression support -27. Environment variable configuration support -28. Unified code style and formatting support -29. Production environment automatically removes development logs -30. defineOptions support -31. Echarts integration -32. Global toast notifications -33. Global axios request wrapping -34. Auto generate type declarations for environment variables -35. `renovate` automatic dependency updates -36. Auto version update and generate `CHANGELOG` -37. Fastest and smallest `dockerfile` for static `go` service with minimal - configuration -38. `base` secure path resolution -39. `lightningcss` support -40. Vite configuration layer support (experimental) - -
-
- -## Clone Template 🦕 - -1. Github - -```shell -git clone git@github.com:dishait/tov-template.git -``` - -2. Gitee - -```shell -git clone git@gitee.com:dishait/tov-template.git -``` - -3. degit - -```shell -npx degit https://github.com/dishait/tov-template#main -``` - -4. New `Github` repository 👉 - [Use this template](https://github.com/dishait/tov-template/generate) - -
-
-
- -## Node version recommendation 🐎 - -Since this template is fully geared towards modern development, it is -recommended to use the current long-term maintenance version of `node`, which is -`v20`. - -
-
-
- -## Use 🐂 - -This template only supports the `pnpm` package manager. 👉 -[Installation guide](https://pnpm.io/zh/installation) - -1. Install dependencies - -```shell -pnpm install -``` - -2. Development - -```shell -pnpm dev - -# Open host -pnpm dev:host - -# Auto-open browser -pnpm dev:open -``` - -3. Preview - -```shell -pnpm preview - -# Open host -pnpm preview:host - -# Auto-open browser -pnpm preview:open -``` - -4. Build - -```shell -pnpm build - -pnpm build:debug -``` - -5. Unit testing - -```shell -pnpm test -``` - -6. Unit test report generation - -```shell -pnpm coverage -``` - -7. Type checking - -```shell -pnpm typecheck -``` - -8. Auto creation - -```shell -pnpm auto:create -``` - -9. Auto removal - -```shell -pnpm auto:remove -``` - -10. Dependency updates - -```shell -# Update dependency version -pnpm deps:fresh -``` - -```shell -# The above commands only write to the package information file package.json, and need to re-execute the package installation command. -pnpm i -``` - -11. Code style checking - -```shell -pnpm lint - -# Fix errors during linting -pnpm lint:fix -``` - -12. Safe Init - -```shell -pnpm safe:init -``` - -
-
- -## Motivation 🐗 - -Why did we create this template? - -1. Save time on configuration for future development projects. -2. Integrate modern development architecture with mainstream plugins to improve - development efficiency. - -
-
- -## Use Cases 🐻 - -When should you use this template? - -1. Don't want to waste time on project configuration. -2. Want to try developing web applications in a more modern way and improve - development efficiency. - -
-
- -## Inspiration 🐃 - -This template is inspired by [vitesse](https://github.com/antfu/vitesse). If you -have an SSR scenario, we recommend that you use -[vitesse](https://github.com/antfu/vitesse). - -
-
- -## Organization 🦔 - -Welcome to follow **dishait** - -- [Official Website](http://dishaxy.dishait.cn/) -- [Gitee](https://gitee.com/dishait) -- [Github](https://github.com/dishait) -- [NetEase Cloud Classroom](https://study.163.com/provider/480000001892585/index.htm?share=2&shareId=480000001892585) -
-
- -## Details 🐳 - -### [1. Vite](https://cn.vitejs.dev/) - -This template uses **[Vite](https://cn.vitejs.dev/)** as the build tool. You can -configure the project's build in `vite.config.ts` at the root directory. - -For the introduction of many mainstream plugins and complex configurations, they -have been integrated into the presets under the root directory. In most cases, -you do not need to reconfigure them. - -
- -### [2. Vue3](https://v3.cn.vuejs.org/) - -
- -### [3. File-based Routing](https://github.com/posva/unplugin-vue-router) - -The directory structure is the route. - -For example: - -- `src/pages/index.vue` => `/` -- `src/pages/about.vue` => `/about` -- `src/pages/users/index.vue` => `/users` -- `src/pages/users/profile.vue` => `/users/profile` -- `src/pages/users/[id].vue` => `/users/:id` -- `src/pages/[user]/settings.vue` => `/:user/settings` -- `src/pages/[...notFound].vue` => 404 route - -For more details, please refer to -[unplugin-vue-router](https://github.com/posva/unplugin-vue-router). - -
- -### [4. Layout System](https://github.com/dishait/vite-plugin-vue-meta-layouts) - -#### Default Layout - -`src/layouts/default.vue` will be used as the default layout. - -```html - - -``` - -At this point, `src/pages/index.vue`: - -```html - - -``` - -When routing to `/`, the page will render: - -```html -default home -``` - -Now, `src/pages/about.vue`: - -```html - - -``` - -When routing to `/about`, the page will render: - -```html -default about -``` - -
- -#### Non-Default Layout - -Create a `src/layouts/custom.vue` randomly: - -```html - - -``` - -At this point, in `src/pages/index.vue`: - -```html - - - - - -{ - "meta": { - "layout": "custom" - } -} - -``` - -When routing to `/`, the page will render: - -```html -custom home -``` - -See specifically 👉 -[vite-plugin-vue-meta-layouts](https://github.com/dishait/vite-plugin-vue-meta-layouts) - -
- -### [5. Mock Support](https://github.com/vbenjs/vite-plugin-mock) - -In the `mock` directory under the root directory, you can export default `api` -resources in modules. - -For example, export from `mock/test.ts`: - -```ts -import { MockMethod } from "vite-plugin-mock"; -export default [ - { - url: "/api/mock/get", - method: "get", - response: () => { - return { - code: 0, - data: { - name: "vben", - }, - }; - }, - }, -] as MockMethod[]; -``` - -You can then make mock requests in the `src` directory. - -```html - -``` - -Here we use [vue-request](https://cn.attojs.org/) to make requests, but since -this `mock` intercepts an entire interface, it is also possible to use request -libraries such as `axios`. - -
- -### [6. Api Auto Import](https://github.com/antfu/unplugin-auto-import) - -The original `vue` `api` needs to be manually `import`ed. - -```ts -import { computed, ref } from "vue"; -const count = ref(0); -const doubled = computed(() => count.value * 2); -``` - -Now it can be directly used. - -```ts -const count = ref(0); -const doubled = computed(() => count.value * 2); -``` - -And the above `api` is automatically imported on demand. - -Currently, the template supports automatic import of libraries that support -auto-importing `api`. - -- `vue` -- `vuex` -- `pinia` -- `vue-i18n` -- `vue-router` -- `@vueuse/core` -- `@vueuse/head` -- `@vueuse/math` - -Just make sure to install the dependencies and see the specific details here -👉 -[vite-auto-import-resolvers](https://github.com/dishait/vite-auto-import-resolvers#%E9%BB%98%E8%AE%A4%E6%94%AF%E6%8C%81%E5%88%97%E8%A1%A8), - -Of course, there are also automatic imports in projects, just need to meet the -following specifications. - -1. The export from `src/composables` will be automatically imported as needed. - -For example, there is a `src/composables/foo.ts` file: - -```ts -// default export -export default 1000; -``` - -1. No need for `import` at this point. - -```html - - - -``` - -2. The export from `src/stores` will be automatically imported as needed. - -For example, there is a `src/stores/counterStore.ts` file: - -```ts -// default export -export default defineStore("counter", { - state() { - return { - counter: 1, - }; - }, - actions: { - inc() { - this.counter++; - }, - }, -}); -``` - -At this point, there is no need for `import` anymore. - -```html - - - -``` - -3. `src/api` is also automatically imported on demand, similar to the above. - -You can see more details in the -[unplugin-auto-import](https://github.com/antfu/unplugin-auto-import) -documentation. - -
- -### [7. Automatic component importing](https://github.com/antfu/unplugin-vue-components) - -It turns out that `import` is required. - -```html - - - - -``` - -Now, any components defined in the `src/components` directory will be -automatically imported on demand, meaning that `import` statements are not -required. - -```html - - -``` - -Of course, it also supports nested components, such as -`src/components/foo/bar.vue` 👇 - -```html - - -``` - -Automatic importing of popular component libraries is also supported, such as -`Naive ui`. - -You only need to install the dependency. - -```shell -pnpm add naive-ui -``` - -Then you can use it in your templates. - -```html - - -``` - -Currently supported component libraries are: - -- [vant](https://github.com/youzan/vant) -- [idux](https://github.com/IDuxFE/idux) -- [devui](https://github.com/DevCloudFE/vue-devui) -- [quasar](https://github.com/quasarframework/quasar) -- [varlet](https://github.com/varletjs/varlet) -- [inkline](https://github.com/inkline/inkline) -- [vuetify](https://github.com/vuetifyjs/vuetify) -- [naive-ui](https://github.com/TuSimple/naive-ui) -- [primevue](https://github.com/primefaces/primevue) -- [layui-vue](https://gitee.com/layui/layui-vue) -- [view-design](https://iviewui.com/) -- [arco-design](https://github.com/arco-design/arco-design) -- [element-plus](https://github.com/element-plus/element-plus) -- [ant-design-vue](https://github.com/vueComponent/ant-design-vue) -- [@headlessui/vue](https://github.com/tailwindlabs/headlessui) -- [tdesign-vue-next](https://github.com/Tencent/tdesign-vue-next) -- [@vueuse/components](https://github.com/vueuse/vueuse/tree/main/packages/components) - -Please refer to 👉 -[unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) - -
- -### [8. Automatic icon importing](https://unocss.dev/presets/icons) - -You can go to [icones](https://icones.netlify.app/) and click on any icon -library you like. - -![icons-first-step](public/docs/icons-first-step.png) - -Then click on one of the icons you like. - -![icons-second-step](public/docs/icons-second-step.png) - -Copy its name. - -![icons-third-step](public/docs/icons-third-step.png) - -In the template, you can use it directly through the `class` method, remember to -add the prefix `i-`. - -```html - -``` - -After saving, wait for the automatic download of theAfter saving, wait for the -automatic download of the icon library and you can see the corresponding icon in -the page. - -I also recommend using the `vscode` plugin -[Iconify IntelliSense](https://marketplace.visualstudio.com/items?itemName=antfu.iconify). - -This plugin displays a preview of the icons in the template. - -Of course, dynamic loading of icons is also supported: - -```html - - - -``` - -Please note that for dynamic icons, make sure to test all the icons in the -development environment. - -For more information, please refer to -[unocss/presets/icons](https://unocss.dev/presets/icons). - -
- -### [9. VueUse Support](https://vueuse.org/) - -`VueUse` is a powerful `hooks` library. For example, if you want to get the -mouse position, you only need to do this: - -```html - - - -``` - -Please refer to 👉 [VueUse](https://vueuse.org/) - -
- -### [10. TypeScript's](https://www.tslang.cn/) - -You don't need to reconfigure, just write it in `ts` directly. - -
- -### [11. unocss's](https://unocss.dev/) - -`unocss` is a faster development `atomic CSS` library. - -You can use it directly in the template, no configuration is needed. - -```html - -``` - -The above template will render white text on a red background. - -It also supports [attribute mode](https://unocss.dev/presets/attributify), which -means you can use shorthand notation. - -```html - -``` - -This can reduce the amount of code when adjusting margin sizes, among other -things. - -For more information, please refer to [unocss](https://unocss.dev/). - -
- -### [12. Dark mode support](https://github.com/dishait/vue-dark-switch) - -Dark mode is implemented by -[vue-dark-switch](https://github.com/dishait/vue-dark-switch). - -```html - - - -``` - -Please refer to 👉 [vue-dark-switch](https://github.com/dishait/vue-dark-switch) - -
- -### [13. SWR Request Support](https://cn.attojs.org/) - -SWR is a more modern way of making requests, for more information please refer -to the article 👉 [SWR](https://zhuanlan.zhihu.com/p/89570321). - -And [vue-request](https://cn.attojs.org/) is a Vue version request library for -SWR. - -You can use it like this, for example, to request `/api/test` - -```html - - - -``` - -All the basic data, state, and caching are handled for you, so there's no need -to re-wrap things. - -For more information, please refer to [vue-request](https://cn.attojs.org/). - -
- -### [14. Pinia State Management](https://pinia.vuejs.org/) - -`Pinia` is the next-generation state management library, which is simpler than -`Vuex` and has better TypeScript support. - -You can define your states in the `src/stores` directory. - -For example, create a `src/stores/counter.ts` file: - -```ts -// src/stores/counter.ts -import { defineStore } from "pinia"; - -export const useCounterStore = defineStore("counter", { - state() { - return { count: 0 }; - }, - actions: { - inc() { - this.count++; - }, - }, -}); -``` - -After defining it, you can use it directly in the `setup`. - -```html - - -``` - -
-
- -### 22. Command Line Auto Create and Remove - -To create a standard page or component just enter 👇, - -```shell -pnpm auto:create -``` - -Of course, you can also delete 👇, - -```shell -pnpm auto:remove -``` - -
-
- -### [23. i18n Internationalization Support](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n) - -In daily business, there may be some scenarios that require -internationalization. Then you only need to define different languages' `yml` in -the `locales` directory at the root level to achieve out-of-the-box -internationalization support in the project. - -For example, `locales/en.yml` is used to define the English content that -requires internationalization support. - -```yml -# locales/en.yml -# English - -index: index -about: about -not-found: Notfound -``` - -For example, `locales/简体中文.yml` is used to define the Chinese content that -requires internationalization support. - -```yml -# locales/简体中文.yml -# 中文 - -index: 主页 -about: 关于 -not-found: 未找到页面 -``` - -You can use it in components like this at this time 👇 - -```html - - - -``` - -For more detailed instructions, please refer to the -[@intlify/vite-plugin-vue-i18n](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n) -and [vue-i18n](https://github.com/intlify/vue-i18n-next). - -In addition, `yml` is a popular configuration file format in frontend -development, and you can find its syntax in Mr. Ruan Yifeng's tutorial: -[YAML Language Tutorial](http://www.ruanyifeng.com/blog/2016/07/yaml.html). - -Here are some recommended VS Code plugins: - -- Multifunctional `i18n` support: - [i18n Ally](https://marketplace.visualstudio.com/items?itemName=Lokalise.i18n-ally) - -
-
- -For more detailed instructions, please refer to the -[@intlify/vite-plugin-vue-i18n](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n) -and [vue-i18n](https://github.com/intlify/vue-i18n-next). - -In addition, `yml` is a popular configuration file format in frontend -development, and you can find its syntax in Mr. Ruan Yifeng's tutorial: -[YAML Language Tutorial](http://www.ruanyifeng.com/blog/2016/07/yaml.html). - -Here are some recommended VS Code plugins: - -Multifunctional `i18n` support: -[i18n Ally](https://marketplace.visualstudio.com/items?itemName=Lokalise.i18n-ally) - -
-
- -### 24. Beautiful `404` Page Support - -In daily business, when a user visits a non-existent page, they should be given -an information prompt that the page does not exist, and this prompt page is the -`404` page. - -You can visit any non-existent page at random, for example `/bucunzai` - -![notFound](public/docs/notFound.png) - -Of course, there is also dark mode adaptation. - -![notFound-dark](public/docs/notFound-dark.png) - -It also supports simple responsive adaptation. For example, it will display -correctly on mobile browsers. - -If the cover of this `404` page does not meet your taste, you can modify the -`src` attribute of the `img` tag in `pages/[...notFound].vue`. The default is -`32.svg`, supporting `1 ~ 33` `svg`. - -For example, the default is: - -```html - - -``` - -To change the cover to `/notFound/33.svg`, modify it as follows: - -```html - - -``` - -This will switch the cover to: - -![notFound-other](public/docs/notFound-other.png) - -
-
- -### 25. [`tsx` Support](https://github.com/vitejs/vite/tree/main/packages/plugin-vue-jsx) - -You only need to place the `.tsx` file under `src/components`, and you can -directly use it in the template. - -For example, if you have a `src/components/foo.tsx` file, you can directly use -it in the template. - -```tsx -// src/components/foo.tsx -export default defineComponent({ - render() { - return
Test
; - }, -}); -``` - -```html - -``` - -For more details, please refer to: -[@vitejs/plugin-vue-jsx](https://github.com/vitejs/vite/tree/main/packages/plugin-vue-jsx) - -
-
- -### 26. [`gzip` Resource Compression Support](https://github.com/vbenjs/vite-plugin-compression) - -Out-of-the-box `gzip` resource compression in production environment, no -configuration required. - -For more details, please refer to: -[vite-plugin-compression](https://github.com/vbenjs/vite-plugin-compression) - -
-
- -### 27. [Environment Variable Configuration Support](https://cn.vitejs.dev/guide/env-and-mode.html) - -The `.env` file in the root directory is used to configure environment variables -for the project. - -
-
- -### 28. Unified Code Standards and Style Support - -Code style verification provided by [eslint](https://github.com/eslint/eslint) -and code standardization using [prettier](https://github.com/prettier/prettier). - -Provided by [husky](https://github.com/typicode/husky) + -[lint-staged](https://github.com/okonet/lint-staged) during `commit` -verification. - -
-
- -### 29. [Automatic Removal of Development Logs in Production Environment](https://github.com/dishait/vite-plugin-removelog) - -In the production environment, logs such as `console.log`, `console.warn`, and -`console.error` will be automatically removed to avoid the leakage of -development logs. - -For more details, please refer to: -[vite-plugin-removelog](https://github.com/dishait/vite-plugin-removelog) - -
-
- -### 30. [defineOptions Support](https://vuejs.org/api/sfc-script-setup.html#defineoptions) - -```html - -``` - -
-
- -### 31. [Echarts Support](https://github.com/ecomfe/vue-echarts) - -A simple integration with [vue-echarts](https://github.com/ecomfe/vue-echarts), -please refer to the documentation of -[echarts](https://github.com/apache/echarts) and -[vue-echarts](https://github.com/ecomfe/vue-echarts). - -
-
- -### 32. [Global Toast Notification](https://github.com/euvl/vue-notification) - -Integrated with [vue-toastification](https://github.com/euvl/vue-notification), -you can use it in all files under the `src` directory: - -```ts -// Any file under the `src` directory is available. -toast.info("info"); -toast.error("error"); -toast.warning("warning"); -toast.success("success"); -``` - -For more details, please refer to: -[Global Toast Notification](https://github.com/euvl/vue-notification) - -
-
- -### 33. [Global Axios Request Wrapper](https://www.axios-http.cn/) - -The [axios](https://www.axios-http.cn/) is wrapped, and you can use it in all -files under the `src` directory: - -```ts -// Available in any file under src -http.get("..."); -http.post("...", { name: "张三", age: 20 }); -// ... and so on -``` - -The above `http` is an instance created separately by `axios`, with simple error -prompts and response data conversion. For more details, please refer to -`src/composables/http.ts`. - -If you prefer a reactive style and `swr`, you can use it together with -[vue-request](https://github.com/attojs/vue-request). - -```ts -import { useRequest } from "vue-request"; - -const { data, error, loading } = useRequest(() => http.get("...")); - -loading.value; // loading - -error.value; // error - -data.value; // data -``` - -The `http` instance's `baseURL` takes the value from the environment variable -file `.env` for `VITE_API_BASE_URL`, defaulting to `/api`, which can be changed -according to your needs. - -For more details, please refer to 👉 [axios](https://www.axios-http.cn/). - -
-
- -### 34. [Automatic Generation of Environment Variable Type Declarations](https://github.com/dishait/vite-plugin-env-types) - -In Vite projects, we can set environment variables in `.env` and use them in the -frontend source code through `import.meta.env`, but the type hinting is poor. -This feature can automatically generate type declarations to achieve real-time -type hinting, so you don't need to worry about and manage them manually. - -For more details, please refer to: -[vite-plugin-env-types](https://github.com/dishait/vite-plugin-env-types). - -
-
- -### 35. [`renovate` Automatically Updates Dependencies](https://github.com/renovatebot/renovate) - -The [renovate](https://github.com/marketplace/renovate) bot on GitHub will -periodically check dependencies on GitHub and raise a `pr` to update the -repository, with the update strategy available at: -[unjs/renovate-config](https://github.com/unjs/renovate-config). - -Of course, you can also manually execute it to update: - -```shell -pnpm deps:fresh -``` - -For more details, please refer to: -[renovate](https://github.com/renovatebot/renovate) - -
-
- -### 36. [Automatic Version Update and Generating `CHANGELOG`](https://github.com/unjs/changelogen) - -When we execute `pnpm run release`, it will automatically update the version and -update the `CHANGELOG.md` file. - -For more details, please refer to: -[unjs/changelogen](https://github.com/unjs/changelogen). - -
-
- -### 37. [Fastest and Smallest `dockerfile` for Static `go` Service](https://github.com/PierreZ/goStatic) - -The `dockerfile` in the root directory configures the smallest and fastest -container for a static `go` service, making it more convenient for cloud -container services. - -For more details, please refer to: -[PierreZ/goStatic](https://github.com/PierreZ/goStatic). - -
-
- -### 38. Base Secure Path Resolution - -In Vite, if we change the `base` in `vite.config.ts`, it causes the resource -paths and route paths to become invalid. Using `safeResolve` can ensure that the -same `base` is used in both development and production environments. - -```html - - - -``` - -
-
- -### 39. `lightningcss` Support - -Now it will automatically detect whether the current project supports -[lightningcss](https://cn.vitejs.dev/guide/features.html#lightning-css) and -enable it intelligently. - -
-
- -### 40. Vite Config Layer Support (Experimental) - -Now in `tov-template`, we can use the form of `vite.config.[mode].ts` to support -configuration files for different environments. - -1. Only vite.config.ts is selected when there is no specific mode. -2. When both vite.config.ts and vite.config.dev.ts exist, their configurations - are merged during development, with the configuration in vite.config.dev.ts - having higher priority. -3. When both vite.config.ts and vite.config.prod.ts exist, their configurations - are merged during production, with the configuration in vite.config.prod.ts - having higher priority. - -This feature is supported by -[vite-layers](https://github.com/markthree/vite-layers). - -
-
-
- -## License - -Made with [markthree](./LICENSE) - -Published under [MIT License](./LICENSE). - -
diff --git a/mock/test.ts b/mock/test.ts deleted file mode 100644 index 3264db9..0000000 --- a/mock/test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { MockMethod } from 'vite-plugin-mock' -export default [ - { - url: '/api/mock/get', - method: 'get', - response: () => { - return { - code: 0, - data: { - name: 'mock', - }, - } - }, - }, - { - url: '/api/mock/post', - method: 'post', - timeout: 2000, - response: { - code: 0, - data: { - name: 'mock', - }, - }, - }, - { - url: '/api/mock/text', - method: 'post', - rawResponse: async (req, res) => { - let reqbody = '' - await new Promise((resolve) => { - req.on('data', (chunk) => { - reqbody += chunk - }) - req.on('end', () => resolve(undefined)) - }) - res.setHeader('Content-Type', 'text/plain') - res.statusCode = 200 - res.end(`hello, ${reqbody}`) - }, - }, -] as MockMethod[] diff --git a/package.json b/package.json index 9d86263..c7bcc3a 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,17 @@ { - "name": "tov-template", + "name": "后台", "version": "1.19.0", - "description": "vite + vue3 + ts 开箱即用现代开发模板 | vite + vue3 + ts out-of-the-box modern development template", + "description": "后台", "type": "module", "scripts": { "dev": "vite", - "test": "vitest", - "build": "vite build", - "prepare": "husky install", - "dev:host": "vite --host", - "dev:open": "vite --open", - "preview": "vite preview", - "coverage": "vitest --coverage", - "preinstall": "npx only-allow pnpm", - "typecheck": "npx vue-tsc --noEmit", - "preview:host": "vite preview --host", - "preview:open": "vite preview --open", - "lint": "eslint --ext .ts,.js,.jsx,.vue .", - "release": "plop --plopfile scripts/release.cjs", - "auto:remove": "plop --plopfile scripts/remove.cjs", - "auto:create": "plop --plopfile scripts/create.cjs", - "build:debug": "cross-env NODE_ENV=debug vite build", - "safe:init": "plop --plopfile scripts/safe-init.cjs", - "deps:fresh": "plop --plopfile scripts/deps-fresh.cjs", - "lint:fix": "eslint --fix --ext .ts,.js,.jsx,.vue,.cjs ." + "build": "vite build" }, "engines": { "node": ">=20.12.2" }, "packageManager": "pnpm@8.15.8", "devDependencies": { - "@intlify/unplugin-vue-i18n": "^3.0.1", "@types/ityped": "^1.0.3", "@types/node": "^20.12.7", "@typescript-eslint/parser": "7.8.0", @@ -60,7 +41,6 @@ "lightningcss": "^1.24.1", "lint-staged": "^15.2.2", "local-pkg": "^0.5.0", - "markdown-it-prism": "^2.3.0", "mockjs": "^1.1.0", "nprogress": "^0.2.0", "perfect-debounce": "^1.0.0", @@ -84,16 +64,12 @@ "vite-plugin-compression": "^0.5.1", "vite-plugin-env-types": "^0.1.4", "vite-plugin-legacy-swc": "^1.1.0", - "vite-plugin-mock": "2.9.8", - "vite-plugin-removelog": "^0.2.2", "vite-plugin-use-modules": "^1.4.8", "vite-plugin-vue-devtools": "^7.1.3", "vite-plugin-vue-meta-layouts": "^0.4.3", "vitest": "^1.5.3", "vue": "^3.4.26", - "vue-dark-switch": "^1.0.6", "vue-echarts": "^6.7.1", - "vue-i18n": "^9.13.1", "vue-request": "2.0.4", "vue-router": "^4.3.2", "vue-toastification": "2.0.0-rc.5" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f1f588..d98ef0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,9 +12,6 @@ importers: specifier: ^2.9.2 version: 2.9.2(vue@3.4.26(typescript@5.4.5)) devDependencies: - '@intlify/unplugin-vue-i18n': - specifier: ^3.0.1 - version: 3.0.1(rollup@4.13.0)(vue-i18n@9.13.1(vue@3.4.26(typescript@5.4.5))) '@types/ityped': specifier: ^1.0.3 version: 1.0.3 @@ -102,9 +99,6 @@ importers: local-pkg: specifier: ^0.5.0 version: 0.5.0 - markdown-it-prism: - specifier: ^2.3.0 - version: 2.3.0 mockjs: specifier: ^1.1.0 version: 1.1.0 @@ -143,7 +137,7 @@ importers: version: 5.4.5 unocss: specifier: ^0.59.4 - version: 0.59.4(postcss@8.1.10)(rollup@4.13.0)(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)) + version: 0.59.4(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)) unplugin-auto-import: specifier: ^0.17.5 version: 0.17.5(@vueuse/core@10.9.0(vue@3.4.26(typescript@5.4.5)))(rollup@4.13.0) @@ -174,12 +168,6 @@ importers: vite-plugin-legacy-swc: specifier: ^1.1.0 version: 1.1.0(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)) - vite-plugin-mock: - specifier: 2.9.8 - version: 2.9.8(mockjs@1.1.0)(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)) - vite-plugin-removelog: - specifier: ^0.2.2 - version: 0.2.2(vue@3.4.26(typescript@5.4.5)) vite-plugin-use-modules: specifier: ^1.4.8 version: 1.4.8(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5)) @@ -195,15 +183,9 @@ importers: vue: specifier: ^3.4.26 version: 3.4.26(typescript@5.4.5) - vue-dark-switch: - specifier: ^1.0.6 - version: 1.0.6(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5)) vue-echarts: specifier: ^6.7.1 version: 6.7.1(@vue/runtime-core@3.4.26)(echarts@5.5.0)(vue@3.4.26(typescript@5.4.5)) - vue-i18n: - specifier: ^9.13.1 - version: 9.13.1(vue@3.4.26(typescript@5.4.5)) vue-request: specifier: 2.0.4 version: 2.0.4(vue@3.4.26(typescript@5.4.5)) @@ -505,12 +487,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.14.54': - resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -627,53 +603,6 @@ packages: '@iconify/utils@2.1.23': resolution: {integrity: sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ==} - '@intlify/bundle-utils@7.5.1': - resolution: {integrity: sha512-UovJl10oBIlmYEcWw+VIHdKY5Uv5sdPG0b/b6bOYxGLln3UwB75+2dlc0F3Fsa0RhoznQ5Rp589/BZpABpE4Xw==} - engines: {node: '>= 14.16'} - peerDependencies: - petite-vue-i18n: '*' - vue-i18n: '*' - peerDependenciesMeta: - petite-vue-i18n: - optional: true - vue-i18n: - optional: true - - '@intlify/core-base@9.13.1': - resolution: {integrity: sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==} - engines: {node: '>= 16'} - - '@intlify/message-compiler@9.10.2': - resolution: {integrity: sha512-ntY/kfBwQRtX5Zh6wL8cSATujPzWW2ZQd1QwKyWwAy5fMqJyyixHMeovN4fmEyCqSu+hFfYOE63nU94evsy4YA==} - engines: {node: '>= 16'} - - '@intlify/message-compiler@9.13.1': - resolution: {integrity: sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==} - engines: {node: '>= 16'} - - '@intlify/shared@9.10.2': - resolution: {integrity: sha512-ttHCAJkRy7R5W2S9RVnN9KYQYPIpV2+GiS79T4EE37nrPyH6/1SrOh3bmdCRC1T3ocL8qCDx7x2lBJ0xaITU7Q==} - engines: {node: '>= 16'} - - '@intlify/shared@9.13.1': - resolution: {integrity: sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==} - engines: {node: '>= 16'} - - '@intlify/unplugin-vue-i18n@3.0.1': - resolution: {integrity: sha512-q1zJhA/WpoLBzAAuKA5/AEp0e+bMOM10ll/HxT4g1VAw/9JhC4TTobP9KobKH90JMZ4U2daLFlYQfKNd29lpqw==} - engines: {node: '>= 14.16'} - peerDependencies: - petite-vue-i18n: '*' - vue-i18n: '*' - vue-i18n-bridge: '*' - peerDependenciesMeta: - petite-vue-i18n: - optional: true - vue-i18n: - optional: true - vue-i18n-bridge: - optional: true - '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -945,9 +874,6 @@ packages: '@types/mdurl@1.0.5': resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - '@types/mockjs@1.0.10': - resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==} - '@types/node@20.12.7': resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} @@ -1151,9 +1077,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.0.11': - resolution: {integrity: sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw==} - '@vue/compiler-core@3.4.21': resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} @@ -1163,9 +1086,6 @@ packages: '@vue/compiler-core@3.4.26': resolution: {integrity: sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ==} - '@vue/compiler-dom@3.0.11': - resolution: {integrity: sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw==} - '@vue/compiler-dom@3.4.21': resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} @@ -1181,9 +1101,6 @@ packages: '@vue/compiler-sfc@3.4.26': resolution: {integrity: sha512-It1dp+FAOCgluYSVYlDn5DtZBxk1NCiJJfu2mlQqa/b+k8GL6NG/3/zRbJnHdhV2VhxFghaDq5L4K+1dakW6cw==} - '@vue/compiler-ssr@3.0.11': - resolution: {integrity: sha512-66yUGI8SGOpNvOcrQybRIhl2M03PJ+OrDPm78i7tvVln86MHTKhM3ERbALK26F7tXl0RkjX4sZpucCpiKs3MnA==} - '@vue/compiler-ssr@3.4.21': resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} @@ -1218,9 +1135,6 @@ packages: peerDependencies: vue: 3.4.26 - '@vue/shared@3.0.11': - resolution: {integrity: sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==} - '@vue/shared@3.4.21': resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} @@ -1374,10 +1288,6 @@ packages: resolution: {integrity: sha512-O+33g7x6irsESUcd47KdfWUrS2F6aGp9KeVJFGj0YjIznfXpBxVGjA0w+y/1OKqX4mFOfmZ9Xpf1ixPT4n9xxw==} engines: {node: '>=16.14.0'} - ast-types-yx@0.14.2: - resolution: {integrity: sha512-lre9vXZvn5azJcNM60Ub19NzoXsaGS/vJ76ral4BbGSOYJoBo/OrXOXI2uClYzDSzDfRR6D8K+FJrYT3BHUM8w==} - engines: {node: '>=4'} - ast-walker-scope@0.6.1: resolution: {integrity: sha512-0ZdQEsSfH3mX4BFbRCc3xOBjx5bDbm73+aAdQOHerPQNf8K0XFMAv79ucd2BpnSc4UMyvBDixiroT8yjm2Y6bw==} engines: {node: '>=16.14.0'} @@ -1401,9 +1311,6 @@ packages: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -1579,9 +1486,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -1606,10 +1510,6 @@ packages: confbox@0.1.3: resolution: {integrity: sha512-eH3ZxAihl1PhKfpr4VfEN6/vUd87fmgb6JkldHgg/YR6aEBhW63qUDgzP2Y6WM0UumdsYp5H3kibalXAdHfbgg==} - connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} @@ -1650,14 +1550,6 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1757,9 +1649,6 @@ packages: echarts@5.5.0: resolution: {integrity: sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.715: resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==} @@ -1774,14 +1663,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1797,131 +1678,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - esbuild-android-64@0.14.54: - resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - esbuild-android-arm64@0.14.54: - resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - esbuild-darwin-64@0.14.54: - resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - esbuild-darwin-arm64@0.14.54: - resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - esbuild-freebsd-64@0.14.54: - resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-arm64@0.14.54: - resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - esbuild-linux-32@0.14.54: - resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - esbuild-linux-64@0.14.54: - resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - esbuild-linux-arm64@0.14.54: - resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - esbuild-linux-arm@0.14.54: - resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - esbuild-linux-mips64le@0.14.54: - resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - esbuild-linux-ppc64le@0.14.54: - resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - esbuild-linux-riscv64@0.14.54: - resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - esbuild-linux-s390x@0.14.54: - resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - esbuild-netbsd-64@0.14.54: - resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - esbuild-openbsd-64@0.14.54: - resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - esbuild-sunos-64@0.14.54: - resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - esbuild-windows-32@0.14.54: - resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - esbuild-windows-64@0.14.54: - resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - esbuild-windows-arm64@0.14.54: - resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - esbuild@0.14.54: - resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -1946,11 +1702,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - eslint-config-prettier@9.1.0: resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true @@ -2082,10 +1833,6 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} - finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2161,9 +1908,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - generic-names@2.0.1: - resolution: {integrity: sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==} - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2230,9 +1974,6 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - gogocode@1.0.55: - resolution: {integrity: sha512-PhT2EnPTaXODiPsZDhRwGe03cb9Eg0nBlvjp3WyQqLAz5lfK7hFQgq/ybTA5BZBThWQnFJGTDjy/Dht7dAtlDw==} - gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -2274,9 +2015,6 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -2315,23 +2053,10 @@ packages: engines: {node: '>=18'} hasBin: true - hyntax-yx@1.0.9: - resolution: {integrity: sha512-T7HXVm1dEt6NFNQaYuzLfhyM+jiK1Z3elYUOz5ulf9fCG/vfJ+F51mPFaoBX4J1naaqIx82NCaVtK8L1oq5TwA==} - engines: {node: '>=6.11.1', npm: '>=5.3.0'} - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - icss-replace-symbols@1.1.0: - resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -2347,17 +2072,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} - indexes-of@1.0.1: - resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -2551,19 +2269,11 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - jsonc-eslint-parser@2.4.0: - resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} @@ -2670,10 +2380,6 @@ packages: resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} engines: {node: '>=18.0.0'} - loader-utils@1.4.2: - resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} - engines: {node: '>=4.0.0'} - local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} @@ -2696,9 +2402,6 @@ packages: lodash: '*' lodash-es: '*' - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -2733,9 +2436,6 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - m-type-tools@0.4.1: - resolution: {integrity: sha512-3QarLN7adHAnqM/BnNp9nMn7Zm+1DBtKeQEGcYcM1tkYhJGxxxPOHKTehuB7F3USX7B0JNalx+xMFs9vgyOc1w==} - m-type-tools@0.5.3: resolution: {integrity: sha512-UycDrrmHNEqKn5KZblX+fGP2tMNyaZPIBPCE+H4aE+adD3LoKDrVir1hwZfa049yIZ/q3UoLpcWs7Mgqi5G9ig==} @@ -2743,9 +2443,6 @@ packages: resolution: {integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==} engines: {node: '>=16.14.0'} - magic-string@0.25.7: - resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} - magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} @@ -2769,10 +2466,6 @@ packages: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} - markdown-it-prism@2.3.0: - resolution: {integrity: sha512-ePtHY80gZyeje4bn3R3SL0jpd1C9HFaYffJW2Ma0YD+tspqa2v9TuVwUyFwboFu4jnFNcO8oPQROgbcYJbmBvw==} - engines: {node: '>=6.0.0'} - markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -2790,9 +2483,6 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge-source-map@1.1.0: - resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2874,9 +2564,6 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2952,10 +2639,6 @@ packages: ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3022,10 +2705,6 @@ packages: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -3059,9 +2738,6 @@ packages: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} - path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -3112,50 +2788,10 @@ packages: engines: {node: '>=18'} hasBin: true - postcss-modules-extract-imports@3.0.0: - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.0.4: - resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.1.1: - resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules@4.0.0: - resolution: {integrity: sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw==} - peerDependencies: - postcss: ^8.0.0 - postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} - postcss-selector-parser@6.0.4: - resolution: {integrity: sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.1.10: - resolution: {integrity: sha512-iBXEV5VTTYaRRdxiFYzTtuv2lGMQBExqkZKSzkJe+Fl6rvQrA/49UVGKqB+LG54hpW/TtDBMGds8j33GFNW7pg==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} @@ -3180,14 +2816,6 @@ packages: prism-theme-vars@0.2.5: resolution: {integrity: sha512-/D8gBTScYzi9afwE6v3TC1U/1YFZ6k+ly17mtVRdLpGy7E79YjJJWkXFgUDHJ2gDksV/ZnXF7ydJ4TvoDm2z/Q==} - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - private@0.1.8: - resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} - engines: {node: '>= 0.6'} - prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -3220,10 +2848,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - recast-yx@0.18.12: - resolution: {integrity: sha512-hYM2QgEbYxmevT66lDhQv+24erth+RbQfCFjft89cvHjJzRNyhf4QY1UtDs91IMh3duRhX1vLvPNoc1XOBMbIQ==} - engines: {node: '>= 4'} - rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} @@ -3379,10 +3003,6 @@ packages: 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 - speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} @@ -3393,10 +3013,6 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} @@ -3408,9 +3024,6 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -3593,9 +3206,6 @@ packages: unimport@3.7.1: resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} - uniq@1.0.1: - resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3612,10 +3222,6 @@ packages: vite: optional: true - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - unplugin-auto-import@0.17.5: resolution: {integrity: sha512-fHNDkDSxv3PGagX1wmKBYBkgaM4AKAgZmdJw/bxjhNljx9KSXSgHpGfX0MwUrq9qw6q1bhHIZVWyOwoY2koo4w==} engines: {node: '>=14'} @@ -3684,10 +3290,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - v8-to-istanbul@9.2.0: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} @@ -3696,9 +3298,6 @@ packages: resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} engines: {node: '>= 10.13.0'} - vfile-location@3.2.0: - resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - vite-auto-import-resolvers@3.2.1: resolution: {integrity: sha512-xXUl1VAJCqHIqU7xzkMNWvQ4cb6MjKHSs4OyjgfxNeJNFqu2hVKJnVxWr8co6I4Ikdvw0CdAy5M3wj4UWGPwVA==} engines: {node: '>=16'} @@ -3746,16 +3345,6 @@ packages: peerDependencies: vite: '>=4.0.0' - vite-plugin-mock@2.9.8: - resolution: {integrity: sha512-YTQM5Sn7t+/DNOwTkr+W26QGTCk1PrDkhGHslTJ90lIPJhJtDTwuSkEYMAuLP9TcVQ/qExTFx/x/GE3kxJ05sw==} - engines: {node: '>=12.0.0'} - peerDependencies: - mockjs: '>=1.1.0' - vite: '>=2.0.0' - - vite-plugin-removelog@0.2.2: - resolution: {integrity: sha512-lVfQxdDIpvjbxxWZbSRAtQNYFHuf/JniL6x2mKpmM5HsCDk4XmxbMSFjRmr6K89JM5iohFjhzhNcdVLQp2/gtg==} - vite-plugin-use-modules@1.4.8: resolution: {integrity: sha512-SydvdNUuwuwk9YjeA2sE6acK2xmTOgpVarEiTcccczcNL7JIMZ2C3Cbw2bvmkH2Od8JDtdIxIpMvswJ8rlEufA==} peerDependencies: @@ -3832,13 +3421,6 @@ packages: jsdom: optional: true - vue-dark-switch@1.0.6: - resolution: {integrity: sha512-M8P2pdoEfO98Zgj3OMDjOgSKTU961oqZoOUidzaP61JzfqVbsEa7KUvQ1pNVx7oeNNXJiYMN147eYxb2oZzPKw==} - engines: {node: '>=16', pnpm: '>=7.0.0'} - peerDependencies: - vite: '>=4.0.0' - vue: '>=3.0.0' - vue-demi@0.13.11: resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} engines: {node: '>=12'} @@ -3891,12 +3473,6 @@ packages: peerDependencies: eslint: '>=6.0.0' - vue-i18n@9.13.1: - resolution: {integrity: sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==} - engines: {node: '>= 16'} - peerDependencies: - vue: ^3.0.0 - vue-request@2.0.4: resolution: {integrity: sha512-+Tu5rDy6ItF9UdD21Mmbjiq5Pq6NZSN9juH72hNQTMn1whHh4KZPTKWVLK2YS4nzbuEnPs+82G91AA2Fgd93mg==} engines: {node: '>=14'} @@ -3917,11 +3493,6 @@ packages: peerDependencies: vue: ^3.0.2 - vue3-browser-compiler-yx@1.0.4: - resolution: {integrity: sha512-F42+9OGvZT83zOPCp0jycA76ZEozv7DTaYkVVGdpf+Syjh/S/8xj/GRnJ+P8/AkfpHoCOR2WAZupDJS6/qS4OQ==} - peerDependencies: - vue: ^2.0.0||^3.0.0 - vue@3.4.26: resolution: {integrity: sha512-bUIq/p+VB+0xrJubaemrfhk1/FiW9iX+pDV+62I/XJ6EkspAO9/DXEjbDFoe8pIfOZBqfk45i9BMc41ptP/uRg==} peerDependencies: @@ -3986,10 +3557,6 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml-eslint-parser@1.2.2: - resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} - engines: {node: ^14.17.0 || >=16.0.0} - yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} @@ -4387,9 +3954,6 @@ snapshots: '@esbuild/linux-ia32@0.20.2': optional: true - '@esbuild/linux-loong64@0.14.54': - optional: true - '@esbuild/linux-loong64@0.20.2': optional: true @@ -4486,60 +4050,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@intlify/bundle-utils@7.5.1(vue-i18n@9.13.1(vue@3.4.26(typescript@5.4.5)))': - dependencies: - '@intlify/message-compiler': 9.10.2 - '@intlify/shared': 9.10.2 - acorn: 8.11.3 - escodegen: 2.1.0 - estree-walker: 2.0.2 - jsonc-eslint-parser: 2.4.0 - magic-string: 0.30.8 - mlly: 1.6.1 - source-map-js: 1.2.0 - yaml-eslint-parser: 1.2.2 - optionalDependencies: - vue-i18n: 9.13.1(vue@3.4.26(typescript@5.4.5)) - - '@intlify/core-base@9.13.1': - dependencies: - '@intlify/message-compiler': 9.13.1 - '@intlify/shared': 9.13.1 - - '@intlify/message-compiler@9.10.2': - dependencies: - '@intlify/shared': 9.10.2 - source-map-js: 1.2.0 - - '@intlify/message-compiler@9.13.1': - dependencies: - '@intlify/shared': 9.13.1 - source-map-js: 1.2.0 - - '@intlify/shared@9.10.2': {} - - '@intlify/shared@9.13.1': {} - - '@intlify/unplugin-vue-i18n@3.0.1(rollup@4.13.0)(vue-i18n@9.13.1(vue@3.4.26(typescript@5.4.5)))': - dependencies: - '@intlify/bundle-utils': 7.5.1(vue-i18n@9.13.1(vue@3.4.26(typescript@5.4.5))) - '@intlify/shared': 9.10.2 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) - '@vue/compiler-sfc': 3.4.21 - debug: 4.3.4 - fast-glob: 3.3.2 - js-yaml: 4.1.0 - json5: 2.2.3 - pathe: 1.1.2 - picocolors: 1.0.0 - source-map-js: 1.2.0 - unplugin: 1.10.0 - optionalDependencies: - vue-i18n: 9.13.1(vue@3.4.26(typescript@5.4.5)) - transitivePeerDependencies: - - rollup - - supports-color - '@istanbuljs/schema@0.1.3': {} '@jest/schemas@29.6.3': @@ -4755,8 +4265,6 @@ snapshots: '@types/mdurl@1.0.5': {} - '@types/mockjs@1.0.10': {} - '@types/node@20.12.7': dependencies: undici-types: 5.26.5 @@ -4893,7 +4401,7 @@ snapshots: gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/postcss@0.59.4(postcss@8.1.10)': + '@unocss/postcss@0.59.4(postcss@8.4.38)': dependencies: '@unocss/config': 0.59.4 '@unocss/core': 0.59.4 @@ -4901,7 +4409,7 @@ snapshots: css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.10 - postcss: 8.1.10 + postcss: 8.4.38 '@unocss/preset-attributify@0.59.4': dependencies: @@ -5113,14 +4621,6 @@ snapshots: '@babel/parser': 7.24.1 '@vue/compiler-sfc': 3.4.21 - '@vue/compiler-core@3.0.11': - dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - '@vue/shared': 3.0.11 - estree-walker: 2.0.2 - source-map: 0.6.1 - '@vue/compiler-core@3.4.21': dependencies: '@babel/parser': 7.24.1 @@ -5145,11 +4645,6 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.0.11': - dependencies: - '@vue/compiler-core': 3.0.11 - '@vue/shared': 3.0.11 - '@vue/compiler-dom@3.4.21': dependencies: '@vue/compiler-core': 3.4.21 @@ -5189,11 +4684,6 @@ snapshots: postcss: 8.4.38 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.0.11': - dependencies: - '@vue/compiler-dom': 3.0.11 - '@vue/shared': 3.0.11 - '@vue/compiler-ssr@3.4.21': dependencies: '@vue/compiler-dom': 3.4.21 @@ -5252,8 +4742,6 @@ snapshots: '@vue/shared': 3.4.26 vue: 3.4.26(typescript@5.4.5) - '@vue/shared@3.0.11': {} - '@vue/shared@3.4.21': {} '@vue/shared@3.4.24': {} @@ -5284,7 +4772,7 @@ snapshots: '@types/web-bluetooth': 0.0.16 '@vueuse/metadata': 9.13.0 '@vueuse/shared': 9.13.0(vue@3.4.26(typescript@5.4.5)) - vue-demi: 0.14.7(vue@3.4.26(typescript@5.4.5)) + vue-demi: 0.14.10(vue@3.4.26(typescript@5.4.5)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -5389,10 +4877,6 @@ snapshots: '@babel/parser': 7.24.4 pathe: 1.1.2 - ast-types-yx@0.14.2: - dependencies: - tslib: 2.6.2 - ast-walker-scope@0.6.1: dependencies: '@babel/parser': 7.24.4 @@ -5416,8 +4900,6 @@ snapshots: big-integer@1.6.52: {} - big.js@5.2.2: {} - binary-extensions@2.3.0: {} bl@4.1.0: @@ -5655,8 +5137,6 @@ snapshots: color-name@1.1.4: {} - colorette@1.4.0: {} - colorette@2.0.20: {} combined-stream@1.0.8: @@ -5673,15 +5153,6 @@ snapshots: confbox@0.1.3: {} - connect@3.7.0: - dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 - parseurl: 1.3.3 - utils-merge: 1.0.1 - transitivePeerDependencies: - - supports-color - consola@3.2.3: {} constant-case@3.0.4: @@ -5717,10 +5188,6 @@ snapshots: dayjs@1.11.13: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - debug@4.3.4: dependencies: ms: 2.1.2 @@ -5811,8 +5278,6 @@ snapshots: tslib: 2.3.0 zrender: 5.5.0 - ee-first@1.1.1: {} - electron-to-chromium@1.4.715: {} element-plus@2.9.2(vue@3.4.26(typescript@5.4.5)): @@ -5840,10 +5305,6 @@ snapshots: emoji-regex@8.0.0: {} - emojis-list@3.0.0: {} - - encodeurl@1.0.2: {} - entities@4.5.0: {} error-stack-parser-es@0.1.1: {} @@ -5854,90 +5315,6 @@ snapshots: es-errors@1.3.0: {} - esbuild-android-64@0.14.54: - optional: true - - esbuild-android-arm64@0.14.54: - optional: true - - esbuild-darwin-64@0.14.54: - optional: true - - esbuild-darwin-arm64@0.14.54: - optional: true - - esbuild-freebsd-64@0.14.54: - optional: true - - esbuild-freebsd-arm64@0.14.54: - optional: true - - esbuild-linux-32@0.14.54: - optional: true - - esbuild-linux-64@0.14.54: - optional: true - - esbuild-linux-arm64@0.14.54: - optional: true - - esbuild-linux-arm@0.14.54: - optional: true - - esbuild-linux-mips64le@0.14.54: - optional: true - - esbuild-linux-ppc64le@0.14.54: - optional: true - - esbuild-linux-riscv64@0.14.54: - optional: true - - esbuild-linux-s390x@0.14.54: - optional: true - - esbuild-netbsd-64@0.14.54: - optional: true - - esbuild-openbsd-64@0.14.54: - optional: true - - esbuild-sunos-64@0.14.54: - optional: true - - esbuild-windows-32@0.14.54: - optional: true - - esbuild-windows-64@0.14.54: - optional: true - - esbuild-windows-arm64@0.14.54: - optional: true - - esbuild@0.14.54: - 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 - esbuild@0.20.2: optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 @@ -5974,14 +5351,6 @@ snapshots: escape-string-regexp@5.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 @@ -6171,18 +5540,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.1.2: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.3.0 - parseurl: 1.3.3 - statuses: 1.5.0 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -6257,10 +5614,6 @@ snapshots: function-bind@1.1.2: {} - generic-names@2.0.1: - dependencies: - loader-utils: 1.4.2 - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -6346,17 +5699,6 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 - gogocode@1.0.55(vue@3.4.26(typescript@5.4.5)): - dependencies: - '@babel/parser': 7.24.1 - glob: 7.2.3 - hyntax-yx: 1.0.9 - indent-string: 4.0.0 - recast-yx: 0.18.12 - vue3-browser-compiler-yx: 1.0.4(vue@3.4.26(typescript@5.4.5)) - transitivePeerDependencies: - - vue - gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -6397,8 +5739,6 @@ snapshots: has-symbols@1.0.3: {} - hash-sum@2.0.0: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -6426,18 +5766,10 @@ snapshots: husky@9.0.11: {} - hyntax-yx@1.0.9: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - icss-replace-symbols@1.1.0: {} - - icss-utils@5.1.0(postcss@8.1.10): - dependencies: - postcss: 8.1.10 - ieee754@1.2.1: {} ignore@5.3.1: {} @@ -6449,12 +5781,8 @@ snapshots: imurmurhash@0.1.4: {} - indent-string@4.0.0: {} - indent-string@5.0.0: {} - indexes-of@1.0.1: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -6607,19 +5935,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json5@1.0.2: - dependencies: - minimist: 1.2.8 - json5@2.2.3: {} - jsonc-eslint-parser@2.4.0: - dependencies: - acorn: 8.11.3 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - semver: 7.6.0 - jsonc-parser@3.2.1: {} jsonfile@6.1.0: @@ -6725,12 +6042,6 @@ snapshots: rfdc: 1.3.1 wrap-ansi: 9.0.0 - loader-utils@1.4.2: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.2 - local-pkg@0.4.3: {} local-pkg@0.5.0: @@ -6750,8 +6061,6 @@ snapshots: lodash: 4.17.21 lodash-es: 4.17.21 - lodash.camelcase@4.3.0: {} - lodash.get@4.4.2: {} lodash.merge@4.6.2: {} @@ -6792,18 +6101,12 @@ snapshots: dependencies: yallist: 4.0.0 - m-type-tools@0.4.1: {} - m-type-tools@0.5.3: {} magic-string-ast@0.3.0: dependencies: magic-string: 0.30.9 - magic-string@0.25.7: - dependencies: - sourcemap-codec: 1.4.8 - magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -6826,10 +6129,6 @@ snapshots: map-cache@0.2.2: {} - markdown-it-prism@2.3.0: - dependencies: - prismjs: 1.29.0 - markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -6847,10 +6146,6 @@ snapshots: meow@13.2.0: {} - merge-source-map@1.1.0: - dependencies: - source-map: 0.6.1 - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -6916,8 +6211,6 @@ snapshots: mrmime@2.0.0: {} - ms@2.0.0: {} - ms@2.1.2: {} mute-stream@1.0.0: {} @@ -7003,10 +6296,6 @@ snapshots: ohash@1.1.3: {} - on-finished@2.3.0: - dependencies: - ee-first: 1.1.1 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -7101,8 +6390,6 @@ snapshots: parse-passwd@1.0.0: {} - parseurl@1.3.3: {} - pascal-case@3.1.2: dependencies: no-case: 3.0.4 @@ -7129,8 +6416,6 @@ snapshots: dependencies: path-root-regex: 0.1.2 - path-to-regexp@6.2.1: {} - path-type@4.0.0: {} pathe@1.1.2: {} @@ -7174,60 +6459,11 @@ snapshots: ora: 8.0.1 v8flags: 4.0.1 - postcss-modules-extract-imports@3.0.0(postcss@8.1.10): - dependencies: - postcss: 8.1.10 - - postcss-modules-local-by-default@4.0.4(postcss@8.1.10): - dependencies: - icss-utils: 5.1.0(postcss@8.1.10) - postcss: 8.1.10 - postcss-selector-parser: 6.0.16 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.1.1(postcss@8.1.10): - dependencies: - postcss: 8.1.10 - postcss-selector-parser: 6.0.16 - - postcss-modules-values@4.0.0(postcss@8.1.10): - dependencies: - icss-utils: 5.1.0(postcss@8.1.10) - postcss: 8.1.10 - - postcss-modules@4.0.0(postcss@8.1.10): - dependencies: - generic-names: 2.0.1 - icss-replace-symbols: 1.1.0 - lodash.camelcase: 4.3.0 - postcss: 8.1.10 - postcss-modules-extract-imports: 3.0.0(postcss@8.1.10) - postcss-modules-local-by-default: 4.0.4(postcss@8.1.10) - postcss-modules-scope: 3.1.1(postcss@8.1.10) - postcss-modules-values: 4.0.0(postcss@8.1.10) - string-hash: 1.1.3 - postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@6.0.4: - dependencies: - cssesc: 3.0.0 - indexes-of: 1.0.1 - uniq: 1.0.1 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.1.10: - dependencies: - colorette: 1.4.0 - nanoid: 3.3.7 - source-map: 0.6.1 - vfile-location: 3.2.0 - postcss@8.4.38: dependencies: nanoid: 3.3.7 @@ -7250,10 +6486,6 @@ snapshots: prism-theme-vars@0.2.5: {} - prismjs@1.29.0: {} - - private@0.1.8: {} - prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -7285,13 +6517,6 @@ snapshots: dependencies: picomatch: 2.3.1 - recast-yx@0.18.12: - dependencies: - ast-types-yx: 0.14.2 - esprima: 4.0.1 - private: 0.1.8 - source-map: 0.6.1 - rechoir@0.8.0: dependencies: resolve: 1.22.8 @@ -7456,24 +6681,18 @@ snapshots: source-map@0.6.1: {} - sourcemap-codec@1.4.8: {} - speakingurl@14.0.1: {} sprintf-js@1.0.3: {} stackback@0.0.2: {} - statuses@1.5.0: {} - std-env@3.7.0: {} stdin-discarder@0.2.2: {} string-argv@0.3.2: {} - string-hash@1.1.3: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -7656,17 +6875,15 @@ snapshots: transitivePeerDependencies: - rollup - uniq@1.0.1: {} - universalify@2.0.1: {} - unocss@0.59.4(postcss@8.1.10)(rollup@4.13.0)(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)): + unocss@0.59.4(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)): dependencies: '@unocss/astro': 0.59.4(rollup@4.13.0)(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)) '@unocss/cli': 0.59.4(rollup@4.13.0) '@unocss/core': 0.59.4 '@unocss/extractor-arbitrary-variants': 0.59.4 - '@unocss/postcss': 0.59.4(postcss@8.1.10) + '@unocss/postcss': 0.59.4(postcss@8.4.38) '@unocss/preset-attributify': 0.59.4 '@unocss/preset-icons': 0.59.4 '@unocss/preset-mini': 0.59.4 @@ -7689,8 +6906,6 @@ snapshots: - rollup - supports-color - unpipe@1.0.0: {} - unplugin-auto-import@0.17.5(@vueuse/core@10.9.0(vue@3.4.26(typescript@5.4.5)))(rollup@4.13.0): dependencies: '@antfu/utils': 0.7.7 @@ -7795,8 +7010,6 @@ snapshots: util-deprecate@1.0.2: {} - utils-merge@1.0.1: {} - v8-to-istanbul@9.2.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -7805,8 +7018,6 @@ snapshots: v8flags@4.0.1: {} - vfile-location@3.2.0: {} - vite-auto-import-resolvers@3.2.1(unplugin-auto-import@0.17.5(@vueuse/core@10.9.0(vue@3.4.26(typescript@5.4.5)))(rollup@4.13.0))(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)): dependencies: fast-glob: 3.3.2 @@ -7888,28 +7099,6 @@ snapshots: transitivePeerDependencies: - '@swc/helpers' - vite-plugin-mock@2.9.8(mockjs@1.1.0)(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0)): - dependencies: - '@types/mockjs': 1.0.10 - chalk: 4.1.2 - chokidar: 3.6.0 - connect: 3.7.0 - debug: 4.3.4 - esbuild: 0.14.54 - fast-glob: 3.3.2 - mockjs: 1.1.0 - path-to-regexp: 6.2.1 - vite: 5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0) - transitivePeerDependencies: - - supports-color - - vite-plugin-removelog@0.2.2(vue@3.4.26(typescript@5.4.5)): - dependencies: - gogocode: 1.0.55(vue@3.4.26(typescript@5.4.5)) - m-type-tools: 0.4.1 - transitivePeerDependencies: - - vue - vite-plugin-use-modules@1.4.8(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5)): dependencies: local-pkg: 0.5.0 @@ -7997,11 +7186,6 @@ snapshots: - supports-color - terser - vue-dark-switch@1.0.6(vite@5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5)): - dependencies: - vite: 5.2.10(@types/node@20.12.7)(lightningcss@1.24.1)(terser@5.31.0) - vue: 3.4.26(typescript@5.4.5) - vue-demi@0.13.11(vue@3.4.26(typescript@5.4.5)): dependencies: vue: 3.4.26(typescript@5.4.5) @@ -8036,13 +7220,6 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@9.13.1(vue@3.4.26(typescript@5.4.5)): - dependencies: - '@intlify/core-base': 9.13.1 - '@intlify/shared': 9.13.1 - '@vue/devtools-api': 6.6.1 - vue: 3.4.26(typescript@5.4.5) - vue-request@2.0.4(vue@3.4.26(typescript@5.4.5)): dependencies: vue: 3.4.26(typescript@5.4.5) @@ -8057,25 +7234,6 @@ snapshots: dependencies: vue: 3.4.26(typescript@5.4.5) - vue3-browser-compiler-yx@1.0.4(vue@3.4.26(typescript@5.4.5)): - dependencies: - '@babel/parser': 7.24.1 - '@babel/types': 7.24.0 - '@vue/compiler-core': 3.0.11 - '@vue/compiler-dom': 3.0.11 - '@vue/compiler-ssr': 3.0.11 - '@vue/shared': 3.0.11 - estree-walker: 2.0.2 - hash-sum: 2.0.0 - lru-cache: 5.1.1 - magic-string: 0.25.7 - merge-source-map: 1.1.0 - postcss: 8.1.10 - postcss-modules: 4.0.0(postcss@8.1.10) - postcss-selector-parser: 6.0.4 - source-map: 0.6.1 - vue: 3.4.26(typescript@5.4.5) - vue@3.4.26(typescript@5.4.5): dependencies: '@vue/compiler-dom': 3.4.26 @@ -8137,12 +7295,6 @@ snapshots: yallist@4.0.0: {} - yaml-eslint-parser@1.2.2: - dependencies: - eslint-visitor-keys: 3.4.3 - lodash: 4.17.21 - yaml: 2.4.1 - yaml@2.3.4: {} yaml@2.4.1: {} diff --git a/presets/index.ts b/presets/index.ts index ab63f0e..bac27a1 100644 --- a/presets/index.ts +++ b/presets/index.ts @@ -1,4 +1,3 @@ -import Prism from 'markdown-it-prism' import UnoCss from 'unocss/vite' import AutoImport from 'unplugin-auto-import/vite' import { @@ -28,13 +27,9 @@ import Router from 'unplugin-vue-router/vite' import { AutoGenerateImports, vue3Presets } from 'vite-auto-import-resolvers' import Compression from 'vite-plugin-compression' import EnvTypes from 'vite-plugin-env-types' -import { viteMockServe as Mock } from 'vite-plugin-mock' -import Removelog from 'vite-plugin-removelog' import Modules from 'vite-plugin-use-modules' import VueDevTools from 'vite-plugin-vue-devtools' import Layouts from 'vite-plugin-vue-meta-layouts' - -import I18N from '@intlify/unplugin-vue-i18n/vite' import Legacy from 'vite-plugin-legacy-swc' import Vue from '@vitejs/plugin-vue' import Jsx from '@vitejs/plugin-vue-jsx' @@ -121,13 +116,7 @@ export default function () { Layouts({ skipTopLevelRouteLayout: true, }), - /** - * mock 服务 - * https://github.com/vbenjs/vite-plugin-mock - */ - Mock({ - prodEnabled: env.VITE_APP_MOCK_IN_PRODUCTION, - }), + /** * 组件自动按需引入 * https://github.com/antfu/unplugin-vue-components @@ -165,15 +154,7 @@ export default function () { ], }), }), - /** - * i18n 国际化支持 - * https://www.npmjs.com/package/@intlify/unplugin-vue-i18n - */ - I18N({ - runtimeOnly: false, - compositionOnly: true, - include: ['locales/**'], - }), + /** * jsx 和 tsx 支持 * https://www.npmjs.com/package/@vitejs/plugin-vue-jsx @@ -213,28 +194,6 @@ export default function () { plugins.push(VueDevTools()) } - /** - * 生产环境下移除 console.log, console.warn, console.error - * https://github.com/dishait/vite-plugin-removelog - */ - if (process.env.NODE_ENV !== 'debug') { - plugins.push(Removelog()) - } - - /** - * markdown 渲染插件 - * https://github.com/mdit-vue/unplugin-vue-markdown - */ - if (env.VITE_APP_MARKDOWN) { - plugins.push( - Markdown({ - wrapperClasses: safelist, - markdownItSetup(md) { - md.use(Prism) - }, - }), - ) - } /** * api 自动按需引入 diff --git a/presets/types/vite.d.ts b/presets/types/vite.d.ts index 2bf1db3..eb5c2bb 100644 --- a/presets/types/vite.d.ts +++ b/presets/types/vite.d.ts @@ -3,7 +3,6 @@ /// /// /// -/// declare module "*.vue" { import type { DefineComponent } from "vue"; diff --git a/src/api/mock.ts b/src/api/mock.ts deleted file mode 100644 index b137da7..0000000 --- a/src/api/mock.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { useRequest } from 'vue-request' - -export const testRequest = () => { - const { data, loading, error } = useRequest(() => http.post('/mock/post')) - return { data, loading, error } -} diff --git a/src/api/user.ts b/src/api/user.ts index f4eb7bf..4a7e4df 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -3,8 +3,7 @@ * @param data */ export function login(data: any) { - - + return http.post("/api/login", data) } /** @@ -12,5 +11,15 @@ export function login(data: any) { * @param data */ export function register(data: any) { - + return http.post("/api/register", data) +} + +/** + * 获取用户信息 + * @param data + */ +export function userInfo(userId: any) { + return http.get("/api/userInfo", { + params: { userId: userId } + }) } diff --git a/src/components/Dropdown.vue b/src/components/Dropdown.vue deleted file mode 100644 index b46dc62..0000000 --- a/src/components/Dropdown.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/src/components/Navigation.vue b/src/components/Navigation.vue index 468af7f..0fa48f2 100644 --- a/src/components/Navigation.vue +++ b/src/components/Navigation.vue @@ -1,59 +1,8 @@ - + + diff --git a/src/pages/echarts.vue b/src/components/view/foundation-line.vue similarity index 80% rename from src/pages/echarts.vue rename to src/components/view/foundation-line.vue index ef08c27..d776786 100644 --- a/src/pages/echarts.vue +++ b/src/components/view/foundation-line.vue @@ -1,6 +1,12 @@ + + + - - - + diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts deleted file mode 100644 index 4687c2e..0000000 --- a/src/plugins/i18n.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { defu } from 'defu' -import { createI18n } from 'vue-i18n' - -const yamls = import.meta.glob('../../locales/*/**.y(a)?ml', { - eager: true, -}) - -const languages = Object.entries(yamls).map(([key, value]) => { - const yaml = key.endsWith('.yaml') - key = key.slice(14, yaml ? -5 : -4) - // 如果有子模块,则分割 - if (key.includes('/')) { - key = key.split('/')[0] - } - // @ts-ignore - return { [key]: value.default } -}) - -const messages = defu({}, ...languages) - -// localStorage 中的 locale,第二个参数为默认值 -// https://vueuse.org/core/useStorage/#usestorage -const storageLocale = useStorage('locale', '简体中文') - -export const i18n = createI18n({ - messages, - legacy: false, - globalInjection: true, - allowComposition: true, -}) - -// 同步本地 localStorage 和 i18n -// https://vueuse.org/shared/syncRef/#syncref -syncRef(storageLocale, i18n.global.locale) - -export default i18n diff --git a/src/plugins/mock.ts b/src/plugins/mock.ts index bc99a40..bfef337 100644 --- a/src/plugins/mock.ts +++ b/src/plugins/mock.ts @@ -1,7 +1,6 @@ /** * 该模块主要给生产时的 mock 用,一般情况下你并不需要关注 */ -import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer' import { createFetchSever } from '../../presets/shared/mock' const shouldCreateServer = @@ -18,6 +17,5 @@ if (shouldCreateServer) { mockModules.push(...v.default) } }) - createProdMockServer(mockModules) createFetchSever(mockModules) } diff --git a/src/plugins/router.ts b/src/plugins/router.ts index c1a9ef5..fa98db3 100644 --- a/src/plugins/router.ts +++ b/src/plugins/router.ts @@ -1,15 +1,8 @@ -import { createGetRoutes, setupLayouts } from 'virtual:meta-layouts' +import { setupLayouts } from 'virtual:meta-layouts' import { createRouter, createWebHistory } from 'vue-router' import { routes as fileRoutes } from 'vue-router/auto-routes' -declare module 'vue-router' { - // 在这里定义你的 meta 类型 - // eslint-disable-next-line no-unused-vars - interface RouteMeta { - title?: string - layout?: string - } -} +declare module 'vue-router' {} // 重定向 BASE_URL fileRoutes.flat(Infinity).forEach((route) => { @@ -21,6 +14,20 @@ export const router = createRouter({ routes: setupLayouts(fileRoutes), }) -export const getRoutes = createGetRoutes(router) +// 路由拦截 +router.beforeEach((to, from, next) => { + // 在这里编写拦截逻辑 + // 例如,检查用户是否认证 + const isLogin = userStore().isLogin + const authList=["/"] + if (authList.includes(to.fullPath) && !isLogin) { + toast.warning("未登录或者登录过期~") + // 如果用户未认证,则跳转到登录页面 + next('/login'); + } else { + // 如果用户已认证,或者不需要认证,则继续 + next(); + } +}); export default router diff --git a/src/stores/createCounter.ts b/src/stores/userStore.ts similarity index 60% rename from src/stores/createCounter.ts rename to src/stores/userStore.ts index 4851f4a..f134ec2 100644 --- a/src/stores/createCounter.ts +++ b/src/stores/userStore.ts @@ -1,14 +1,15 @@ import { defineStore } from 'pinia' -export default defineStore('counter', { +export default defineStore('userStore', { state() { return { - count: 0, + isLogin: false, + token: "", } }, actions: { inc() { - this.count++ + }, }, persist: true, diff --git a/src/styles/main.css b/src/styles/main.css index 5f9753f..f4d523b 100644 --- a/src/styles/main.css +++ b/src/styles/main.css @@ -1,4 +1,3 @@ -@import './md.css'; html.dark { @@ -52,4 +51,4 @@ html.dark ::-webkit-scrollbar-track { html.dark ::-webkit-scrollbar-thumb { background-color: #343a40; -} \ No newline at end of file +} diff --git a/src/styles/md.css b/src/styles/md.css deleted file mode 100644 index a68fa21..0000000 --- a/src/styles/md.css +++ /dev/null @@ -1,83 +0,0 @@ -@import 'prism-theme-vars/base.css'; - -.prose { - --prism-font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, - Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol; -} - -.prose pre { - font-weight: 500; - font-size: 1rem; -} - -html:not(.dark) { - --prism-foreground: #393a34; - --prism-background: #f8f8f8; - - --prism-comment: #868e96; - --prism-namespace: #444444; - --prism-string: #bc8671; - --prism-punctuation: #80817d; - --prism-literal: #36acaa; - --prism-keyword: #d73a49; - --prism-function: #0c4c7d; - --prism-deleted: #9a050f; - --prism-class: #2b91af; - --prism-builtin: #800000; - --prism-property: #ce9178; - --prism-regex: #ad502b; -} - -html.dark { - --prism-foreground: #d4d4d4; - --prism-background: #1e1e1e; - - --prism-namespace: #aaaaaa; - --prism-comment: #868e96; - --prism-namespace: #444444; - --prism-string: #ce9178; - --prism-punctuation: #d4d4d4; - --prism-literal: #36acaa; - --prism-keyword: #0ca678; - --prism-function: #dcdcaa; - --prism-deleted: #9a050f; - --prism-class: #4ec9b0; - --prism-builtin: #d16969; - --prism-property: #ce9178; - --prism-regex: #ad502b; -} -ol { - padding-left: 15px; -} - -.prose blockquote p:first-of-type::before { - content: none; -} - -.prose pre { - color: #495057; - background: #f8f9fa; -} - -.prose-sm p { - font-weight: 500; -} - -.prose blockquote { - margin: 0; - font-style: normal; -} - -html.dark .prose blockquote { - color: white; -} - -html.dark .prose pre { - color: #f8f9fa; - background: #2a2f33; -} - -.token.comment { - font-style: normal; - font-size: 0.5rem; -} diff --git a/src/test/__snapshots__/index.test.ts.snap b/src/test/__snapshots__/index.test.ts.snap deleted file mode 100644 index ecbbcf2..0000000 --- a/src/test/__snapshots__/index.test.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Vitest Snapshot v1 - -exports[`suite name > snapshot 1`] = ` -{ - "foo": "bar", -} -`; diff --git a/src/test/index.test.ts b/src/test/index.test.ts deleted file mode 100644 index 616df29..0000000 --- a/src/test/index.test.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { assert, describe, expect, it } from 'vitest' - -describe('suite name', () => { - it('foo', () => { - expect(1 + 1).toEqual(2) - expect(true).to.be.true - }) - - it('bar', () => { - assert.equal(Math.sqrt(4), 2) - }) - - it('snapshot', () => { - expect({ foo: 'bar' }).toMatchSnapshot() - }) -})