From cfeb813b629f3c0540af1d817c8013315f89ec23 Mon Sep 17 00:00:00 2001 From: zclzone Date: Thu, 7 Dec 2023 21:55:23 +0800 Subject: [PATCH] init --- .editorconfig | 5 + .env | 1 + .env.development | 8 + .env.production | 8 + .eslint-global-variables.json | 63 + .eslintignore | 4 + .gitignore | 4 + .npmrc | 2 + .prettierignore | 3 + .prettierrc.json | 7 + .vscode/extensions.json | 12 + .vscode/settings.json | 22 + LICENSE | 21 + README.md | 61 + build/index.js | 39 + build/plugin-isme/icons.js | 24 + build/plugin-isme/index.js | 10 + build/plugin-isme/page-pathes.js | 24 + index.html | 29 + jsconfig.json | 14 + package.json | 58 + pnpm-lock.yaml | 4724 +++++++++++++++++ public/favicon.png | Bin 0 -> 3859 bytes public/resource/loading.css | 93 + public/resource/loading.js | 18 + public/resource/logo.png | Bin 0 -> 8572 bytes src/App.vue | 63 + src/api/index.js | 24 + src/assets/icons/dynamic-icons.js | 10 + src/assets/icons/feather/activity.svg | 1 + src/assets/icons/feather/airplay.svg | 1 + src/assets/icons/feather/alert-circle.svg | 1 + src/assets/icons/feather/alert-octagon.svg | 1 + src/assets/icons/feather/alert-triangle.svg | 1 + src/assets/icons/feather/align-center.svg | 1 + src/assets/icons/feather/align-justify.svg | 1 + src/assets/icons/feather/align-left.svg | 1 + src/assets/icons/feather/align-right.svg | 1 + src/assets/icons/feather/anchor.svg | 1 + src/assets/icons/feather/aperture.svg | 1 + src/assets/icons/feather/archive.svg | 1 + .../icons/feather/arrow-down-circle.svg | 1 + src/assets/icons/feather/arrow-down-left.svg | 1 + src/assets/icons/feather/arrow-down-right.svg | 1 + src/assets/icons/feather/arrow-down.svg | 1 + .../icons/feather/arrow-left-circle.svg | 1 + src/assets/icons/feather/arrow-left.svg | 1 + .../icons/feather/arrow-right-circle.svg | 1 + src/assets/icons/feather/arrow-right.svg | 1 + src/assets/icons/feather/arrow-up-circle.svg | 1 + src/assets/icons/feather/arrow-up-left.svg | 1 + src/assets/icons/feather/arrow-up-right.svg | 1 + src/assets/icons/feather/arrow-up.svg | 1 + src/assets/icons/feather/at-sign.svg | 1 + src/assets/icons/feather/award.svg | 1 + src/assets/icons/feather/bar-chart-2.svg | 1 + src/assets/icons/feather/bar-chart.svg | 1 + src/assets/icons/feather/battery-charging.svg | 1 + src/assets/icons/feather/battery.svg | 1 + src/assets/icons/feather/bell-off.svg | 1 + src/assets/icons/feather/bell.svg | 1 + src/assets/icons/feather/bluetooth.svg | 1 + src/assets/icons/feather/bold.svg | 1 + src/assets/icons/feather/book-open.svg | 1 + src/assets/icons/feather/book.svg | 1 + src/assets/icons/feather/bookmark.svg | 1 + src/assets/icons/feather/box.svg | 1 + src/assets/icons/feather/briefcase.svg | 1 + src/assets/icons/feather/calendar.svg | 1 + src/assets/icons/feather/camera-off.svg | 1 + src/assets/icons/feather/camera.svg | 1 + src/assets/icons/feather/cast.svg | 1 + src/assets/icons/feather/check-circle.svg | 1 + src/assets/icons/feather/check-square.svg | 1 + src/assets/icons/feather/check.svg | 1 + src/assets/icons/feather/chevron-down.svg | 1 + src/assets/icons/feather/chevron-left.svg | 1 + src/assets/icons/feather/chevron-right.svg | 1 + src/assets/icons/feather/chevron-up.svg | 1 + src/assets/icons/feather/chevrons-down.svg | 1 + src/assets/icons/feather/chevrons-left.svg | 1 + src/assets/icons/feather/chevrons-right.svg | 1 + src/assets/icons/feather/chevrons-up.svg | 1 + src/assets/icons/feather/chrome.svg | 1 + src/assets/icons/feather/circle.svg | 1 + src/assets/icons/feather/clipboard.svg | 1 + src/assets/icons/feather/clock.svg | 1 + src/assets/icons/feather/cloud-drizzle.svg | 1 + src/assets/icons/feather/cloud-lightning.svg | 1 + src/assets/icons/feather/cloud-off.svg | 1 + src/assets/icons/feather/cloud-rain.svg | 1 + src/assets/icons/feather/cloud-snow.svg | 1 + src/assets/icons/feather/cloud.svg | 1 + src/assets/icons/feather/code.svg | 1 + src/assets/icons/feather/codepen.svg | 1 + src/assets/icons/feather/codesandbox.svg | 1 + src/assets/icons/feather/coffee.svg | 1 + src/assets/icons/feather/columns.svg | 1 + src/assets/icons/feather/command.svg | 1 + src/assets/icons/feather/compass.svg | 1 + src/assets/icons/feather/copy.svg | 1 + src/assets/icons/feather/corner-down-left.svg | 1 + .../icons/feather/corner-down-right.svg | 1 + src/assets/icons/feather/corner-left-down.svg | 1 + src/assets/icons/feather/corner-left-up.svg | 1 + .../icons/feather/corner-right-down.svg | 1 + src/assets/icons/feather/corner-right-up.svg | 1 + src/assets/icons/feather/corner-up-left.svg | 1 + src/assets/icons/feather/corner-up-right.svg | 1 + src/assets/icons/feather/cpu.svg | 1 + src/assets/icons/feather/credit-card.svg | 1 + src/assets/icons/feather/crop.svg | 1 + src/assets/icons/feather/crosshair.svg | 1 + src/assets/icons/feather/database.svg | 1 + src/assets/icons/feather/delete.svg | 1 + src/assets/icons/feather/disc.svg | 1 + src/assets/icons/feather/divide.svg | 1 + src/assets/icons/feather/dollar-sign.svg | 1 + src/assets/icons/feather/download-cloud.svg | 1 + src/assets/icons/feather/download.svg | 1 + src/assets/icons/feather/dribbble.svg | 1 + src/assets/icons/feather/droplet.svg | 1 + src/assets/icons/feather/edit-2.svg | 1 + src/assets/icons/feather/edit-3.svg | 1 + src/assets/icons/feather/edit.svg | 1 + src/assets/icons/feather/external-link.svg | 1 + src/assets/icons/feather/eye-off.svg | 1 + src/assets/icons/feather/eye.svg | 1 + src/assets/icons/feather/facebook.svg | 1 + src/assets/icons/feather/fast-forward.svg | 1 + src/assets/icons/feather/feather.svg | 1 + src/assets/icons/feather/figma.svg | 1 + src/assets/icons/feather/file-minus.svg | 1 + src/assets/icons/feather/file-plus.svg | 1 + src/assets/icons/feather/file-text.svg | 1 + src/assets/icons/feather/file.svg | 1 + src/assets/icons/feather/film.svg | 1 + src/assets/icons/feather/filter.svg | 1 + src/assets/icons/feather/flag.svg | 1 + src/assets/icons/feather/folder-minus.svg | 1 + src/assets/icons/feather/folder-plus.svg | 1 + src/assets/icons/feather/folder.svg | 1 + src/assets/icons/feather/framer.svg | 1 + src/assets/icons/feather/frown.svg | 1 + src/assets/icons/feather/gift.svg | 1 + src/assets/icons/feather/git-branch.svg | 1 + src/assets/icons/feather/git-commit.svg | 1 + src/assets/icons/feather/git-merge.svg | 1 + src/assets/icons/feather/git-pull-request.svg | 1 + src/assets/icons/feather/github.svg | 1 + src/assets/icons/feather/gitlab.svg | 1 + src/assets/icons/feather/globe.svg | 1 + src/assets/icons/feather/grid.svg | 1 + src/assets/icons/feather/hard-drive.svg | 1 + src/assets/icons/feather/hash.svg | 1 + src/assets/icons/feather/headphones.svg | 1 + src/assets/icons/feather/heart.svg | 1 + src/assets/icons/feather/help-circle.svg | 1 + src/assets/icons/feather/hexagon.svg | 1 + src/assets/icons/feather/home.svg | 1 + src/assets/icons/feather/image.svg | 1 + src/assets/icons/feather/inbox.svg | 1 + src/assets/icons/feather/info.svg | 1 + src/assets/icons/feather/instagram.svg | 1 + src/assets/icons/feather/italic.svg | 1 + src/assets/icons/feather/key.svg | 1 + src/assets/icons/feather/layers.svg | 1 + src/assets/icons/feather/layout.svg | 1 + src/assets/icons/feather/life-buoy.svg | 1 + src/assets/icons/feather/link-2.svg | 1 + src/assets/icons/feather/link.svg | 1 + src/assets/icons/feather/linkedin.svg | 1 + src/assets/icons/feather/list.svg | 1 + src/assets/icons/feather/loader.svg | 1 + src/assets/icons/feather/lock.svg | 1 + src/assets/icons/feather/log-in.svg | 1 + src/assets/icons/feather/log-out.svg | 1 + src/assets/icons/feather/mail.svg | 1 + src/assets/icons/feather/map-pin.svg | 1 + src/assets/icons/feather/map.svg | 1 + src/assets/icons/feather/maximize-2.svg | 1 + src/assets/icons/feather/maximize.svg | 1 + src/assets/icons/feather/meh.svg | 1 + src/assets/icons/feather/menu.svg | 1 + src/assets/icons/feather/message-circle.svg | 1 + src/assets/icons/feather/message-square.svg | 1 + src/assets/icons/feather/mic-off.svg | 1 + src/assets/icons/feather/mic.svg | 1 + src/assets/icons/feather/minimize-2.svg | 1 + src/assets/icons/feather/minimize.svg | 1 + src/assets/icons/feather/minus-circle.svg | 1 + src/assets/icons/feather/minus-square.svg | 1 + src/assets/icons/feather/minus.svg | 1 + src/assets/icons/feather/monitor.svg | 1 + src/assets/icons/feather/moon.svg | 1 + src/assets/icons/feather/more-horizontal.svg | 1 + src/assets/icons/feather/more-vertical.svg | 1 + src/assets/icons/feather/mouse-pointer.svg | 1 + src/assets/icons/feather/move.svg | 1 + src/assets/icons/feather/music.svg | 1 + src/assets/icons/feather/navigation-2.svg | 1 + src/assets/icons/feather/navigation.svg | 1 + src/assets/icons/feather/octagon.svg | 1 + src/assets/icons/feather/package.svg | 1 + src/assets/icons/feather/paperclip.svg | 1 + src/assets/icons/feather/pause-circle.svg | 1 + src/assets/icons/feather/pause.svg | 1 + src/assets/icons/feather/pen-tool.svg | 1 + src/assets/icons/feather/percent.svg | 1 + src/assets/icons/feather/phone-call.svg | 1 + src/assets/icons/feather/phone-forwarded.svg | 1 + src/assets/icons/feather/phone-incoming.svg | 1 + src/assets/icons/feather/phone-missed.svg | 1 + src/assets/icons/feather/phone-off.svg | 1 + src/assets/icons/feather/phone-outgoing.svg | 1 + src/assets/icons/feather/phone.svg | 1 + src/assets/icons/feather/pie-chart.svg | 1 + src/assets/icons/feather/play-circle.svg | 1 + src/assets/icons/feather/play.svg | 1 + src/assets/icons/feather/plus-circle.svg | 1 + src/assets/icons/feather/plus-square.svg | 1 + src/assets/icons/feather/plus.svg | 1 + src/assets/icons/feather/pocket.svg | 1 + src/assets/icons/feather/power.svg | 1 + src/assets/icons/feather/printer.svg | 1 + src/assets/icons/feather/radio.svg | 1 + src/assets/icons/feather/refresh-ccw.svg | 1 + src/assets/icons/feather/refresh-cw.svg | 1 + src/assets/icons/feather/repeat.svg | 1 + src/assets/icons/feather/rewind.svg | 1 + src/assets/icons/feather/rotate-ccw.svg | 1 + src/assets/icons/feather/rotate-cw.svg | 1 + src/assets/icons/feather/rss.svg | 1 + src/assets/icons/feather/save.svg | 1 + src/assets/icons/feather/scissors.svg | 1 + src/assets/icons/feather/search.svg | 1 + src/assets/icons/feather/send.svg | 1 + src/assets/icons/feather/server.svg | 1 + src/assets/icons/feather/settings.svg | 1 + src/assets/icons/feather/share-2.svg | 1 + src/assets/icons/feather/share.svg | 1 + src/assets/icons/feather/shield-off.svg | 1 + src/assets/icons/feather/shield.svg | 1 + src/assets/icons/feather/shopping-bag.svg | 1 + src/assets/icons/feather/shopping-cart.svg | 1 + src/assets/icons/feather/shuffle.svg | 1 + src/assets/icons/feather/sidebar.svg | 1 + src/assets/icons/feather/skip-back.svg | 1 + src/assets/icons/feather/skip-forward.svg | 1 + src/assets/icons/feather/slack.svg | 1 + src/assets/icons/feather/slash.svg | 1 + src/assets/icons/feather/sliders.svg | 1 + src/assets/icons/feather/smartphone.svg | 1 + src/assets/icons/feather/smile.svg | 1 + src/assets/icons/feather/speaker.svg | 1 + src/assets/icons/feather/square.svg | 1 + src/assets/icons/feather/star.svg | 1 + src/assets/icons/feather/stop-circle.svg | 1 + src/assets/icons/feather/sun.svg | 1 + src/assets/icons/feather/sunrise.svg | 1 + src/assets/icons/feather/sunset.svg | 1 + src/assets/icons/feather/table.svg | 1 + src/assets/icons/feather/tablet.svg | 1 + src/assets/icons/feather/tag.svg | 1 + src/assets/icons/feather/target.svg | 1 + src/assets/icons/feather/terminal.svg | 1 + src/assets/icons/feather/thermometer.svg | 1 + src/assets/icons/feather/thumbs-down.svg | 1 + src/assets/icons/feather/thumbs-up.svg | 1 + src/assets/icons/feather/toggle-left.svg | 1 + src/assets/icons/feather/toggle-right.svg | 1 + src/assets/icons/feather/tool.svg | 1 + src/assets/icons/feather/trash-2.svg | 1 + src/assets/icons/feather/trash.svg | 1 + src/assets/icons/feather/trello.svg | 1 + src/assets/icons/feather/trending-down.svg | 1 + src/assets/icons/feather/trending-up.svg | 1 + src/assets/icons/feather/triangle.svg | 1 + src/assets/icons/feather/truck.svg | 1 + src/assets/icons/feather/tv.svg | 1 + src/assets/icons/feather/twitch.svg | 1 + src/assets/icons/feather/twitter.svg | 1 + src/assets/icons/feather/type.svg | 1 + src/assets/icons/feather/umbrella.svg | 1 + src/assets/icons/feather/underline.svg | 1 + src/assets/icons/feather/unlock.svg | 1 + src/assets/icons/feather/upload-cloud.svg | 1 + src/assets/icons/feather/upload.svg | 1 + src/assets/icons/feather/user-check.svg | 1 + src/assets/icons/feather/user-minus.svg | 1 + src/assets/icons/feather/user-plus.svg | 1 + src/assets/icons/feather/user-x.svg | 1 + src/assets/icons/feather/user.svg | 1 + src/assets/icons/feather/users.svg | 1 + src/assets/icons/feather/video-off.svg | 1 + src/assets/icons/feather/video.svg | 1 + src/assets/icons/feather/voicemail.svg | 1 + src/assets/icons/feather/volume-1.svg | 1 + src/assets/icons/feather/volume-2.svg | 1 + src/assets/icons/feather/volume-x.svg | 1 + src/assets/icons/feather/volume.svg | 1 + src/assets/icons/feather/watch.svg | 1 + src/assets/icons/feather/wifi-off.svg | 1 + src/assets/icons/feather/wifi.svg | 1 + src/assets/icons/feather/wind.svg | 1 + src/assets/icons/feather/x-circle.svg | 1 + src/assets/icons/feather/x-octagon.svg | 1 + src/assets/icons/feather/x-square.svg | 1 + src/assets/icons/feather/x.svg | 1 + src/assets/icons/feather/youtube.svg | 1 + src/assets/icons/feather/zap-off.svg | 1 + src/assets/icons/feather/zap.svg | 1 + src/assets/icons/feather/zoom-in.svg | 1 + src/assets/icons/feather/zoom-out.svg | 1 + src/assets/icons/isme/awesome.svg | 1 + src/assets/icons/isme/dialog.svg | 1 + src/assets/icons/isme/gitee.svg | 1 + src/assets/images/404.webp | Bin 0 -> 14344 bytes src/assets/images/login_banner.webp | Bin 0 -> 26198 bytes src/assets/images/login_bg.webp | Bin 0 -> 6944 bytes src/assets/images/logo.png | Bin 0 -> 8572 bytes src/components/common/AppCard.vue | 19 + src/components/common/AppPage.vue | 31 + src/components/common/CommonPage.vue | 74 + src/components/common/TheFooter.vue | 24 + src/components/common/index.js | 4 + src/components/index.js | 2 + src/components/me/crud/QueryItem.vue | 35 + src/components/me/crud/index.vue | 167 + src/components/me/index.js | 3 + src/components/me/modal/index.vue | 171 + src/composables/index.js | 4 + src/composables/useAliveData.js | 30 + src/composables/useCrud.js | 122 + src/composables/useForm.js | 28 + src/composables/useModal.js | 20 + src/directives/index.js | 23 + src/layouts/components/RoleSelect.vue | 85 + src/layouts/components/index.js | 1 + .../default/header/components/UserAvatar.vue | 83 + .../default/header/components/index.js | 2 + .../header/components/tab/ContextMenu.vue | 125 + .../default/header/components/tab/index.vue | 101 + src/layouts/default/header/index.vue | 64 + src/layouts/default/index.vue | 41 + .../default/sidebar/components/SideLogo.vue | 26 + .../default/sidebar/components/SideMenu.vue | 62 + src/layouts/default/sidebar/index.vue | 17 + src/layouts/empty/index.vue | 11 + src/main.js | 31 + src/router/guards/index.js | 19 + src/router/guards/page-loading-guard.js | 23 + src/router/guards/page-title-guard.js | 20 + src/router/guards/permission-guard.js | 37 + src/router/guards/tab-guard.js | 23 + src/router/index.js | 105 + src/settings.js | 70 + src/store/index.js | 18 + src/store/modules/app.js | 37 + src/store/modules/auth.js | 54 + src/store/modules/index.js | 5 + src/store/modules/permission.js | 80 + src/store/modules/tab.js | 91 + src/store/modules/user.js | 69 + src/styles/global.scss | 74 + src/styles/reset.css | 43 + src/utils/common.js | 107 + src/utils/http/helpers.js | 64 + src/utils/http/index.js | 30 + src/utils/http/interceptors.js | 72 + src/utils/index.js | 14 + src/utils/is.js | 128 + src/utils/naiveTools.js | 121 + src/utils/storage/index.js | 30 + src/utils/storage/storage.js | 64 + src/views/base/index.vue | 115 + src/views/base/keep-alive.vue | 24 + src/views/base/test-modal.vue | 79 + src/views/base/unocss-icon.vue | 49 + src/views/base/unocss.vue | 76 + src/views/demo/upload/index.vue | 92 + src/views/error-page/403.vue | 41 + src/views/error-page/404.vue | 29 + src/views/home/index.vue | 283 + src/views/login/api.js | 15 + src/views/login/index.vue | 190 + src/views/pms/resource/api.js | 19 + .../pms/resource/components/MenuTree.vue | 116 + .../pms/resource/components/QuestionLabel.vue | 32 + .../pms/resource/components/ResAddOrEdit.vue | 201 + src/views/pms/resource/index.vue | 103 + src/views/pms/role/api.js | 21 + src/views/pms/role/components/CascadeTree.vue | 85 + src/views/pms/role/index.vue | 243 + src/views/pms/role/role-user.vue | 223 + src/views/pms/user/api.js | 19 + src/views/pms/user/index.vue | 306 ++ src/views/profile/api.js | 14 + src/views/profile/index.vue | 153 + uno.config.js | 76 + vite.config.js | 78 + 401 files changed, 11125 insertions(+) create mode 100644 .editorconfig create mode 100644 .env create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslint-global-variables.json create mode 100644 .eslintignore create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build/index.js create mode 100644 build/plugin-isme/icons.js create mode 100644 build/plugin-isme/index.js create mode 100644 build/plugin-isme/page-pathes.js create mode 100644 index.html create mode 100644 jsconfig.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 public/favicon.png create mode 100644 public/resource/loading.css create mode 100644 public/resource/loading.js create mode 100644 public/resource/logo.png create mode 100644 src/App.vue create mode 100644 src/api/index.js create mode 100644 src/assets/icons/dynamic-icons.js create mode 100644 src/assets/icons/feather/activity.svg create mode 100644 src/assets/icons/feather/airplay.svg create mode 100644 src/assets/icons/feather/alert-circle.svg create mode 100644 src/assets/icons/feather/alert-octagon.svg create mode 100644 src/assets/icons/feather/alert-triangle.svg create mode 100644 src/assets/icons/feather/align-center.svg create mode 100644 src/assets/icons/feather/align-justify.svg create mode 100644 src/assets/icons/feather/align-left.svg create mode 100644 src/assets/icons/feather/align-right.svg create mode 100644 src/assets/icons/feather/anchor.svg create mode 100644 src/assets/icons/feather/aperture.svg create mode 100644 src/assets/icons/feather/archive.svg create mode 100644 src/assets/icons/feather/arrow-down-circle.svg create mode 100644 src/assets/icons/feather/arrow-down-left.svg create mode 100644 src/assets/icons/feather/arrow-down-right.svg create mode 100644 src/assets/icons/feather/arrow-down.svg create mode 100644 src/assets/icons/feather/arrow-left-circle.svg create mode 100644 src/assets/icons/feather/arrow-left.svg create mode 100644 src/assets/icons/feather/arrow-right-circle.svg create mode 100644 src/assets/icons/feather/arrow-right.svg create mode 100644 src/assets/icons/feather/arrow-up-circle.svg create mode 100644 src/assets/icons/feather/arrow-up-left.svg create mode 100644 src/assets/icons/feather/arrow-up-right.svg create mode 100644 src/assets/icons/feather/arrow-up.svg create mode 100644 src/assets/icons/feather/at-sign.svg create mode 100644 src/assets/icons/feather/award.svg create mode 100644 src/assets/icons/feather/bar-chart-2.svg create mode 100644 src/assets/icons/feather/bar-chart.svg create mode 100644 src/assets/icons/feather/battery-charging.svg create mode 100644 src/assets/icons/feather/battery.svg create mode 100644 src/assets/icons/feather/bell-off.svg create mode 100644 src/assets/icons/feather/bell.svg create mode 100644 src/assets/icons/feather/bluetooth.svg create mode 100644 src/assets/icons/feather/bold.svg create mode 100644 src/assets/icons/feather/book-open.svg create mode 100644 src/assets/icons/feather/book.svg create mode 100644 src/assets/icons/feather/bookmark.svg create mode 100644 src/assets/icons/feather/box.svg create mode 100644 src/assets/icons/feather/briefcase.svg create mode 100644 src/assets/icons/feather/calendar.svg create mode 100644 src/assets/icons/feather/camera-off.svg create mode 100644 src/assets/icons/feather/camera.svg create mode 100644 src/assets/icons/feather/cast.svg create mode 100644 src/assets/icons/feather/check-circle.svg create mode 100644 src/assets/icons/feather/check-square.svg create mode 100644 src/assets/icons/feather/check.svg create mode 100644 src/assets/icons/feather/chevron-down.svg create mode 100644 src/assets/icons/feather/chevron-left.svg create mode 100644 src/assets/icons/feather/chevron-right.svg create mode 100644 src/assets/icons/feather/chevron-up.svg create mode 100644 src/assets/icons/feather/chevrons-down.svg create mode 100644 src/assets/icons/feather/chevrons-left.svg create mode 100644 src/assets/icons/feather/chevrons-right.svg create mode 100644 src/assets/icons/feather/chevrons-up.svg create mode 100644 src/assets/icons/feather/chrome.svg create mode 100644 src/assets/icons/feather/circle.svg create mode 100644 src/assets/icons/feather/clipboard.svg create mode 100644 src/assets/icons/feather/clock.svg create mode 100644 src/assets/icons/feather/cloud-drizzle.svg create mode 100644 src/assets/icons/feather/cloud-lightning.svg create mode 100644 src/assets/icons/feather/cloud-off.svg create mode 100644 src/assets/icons/feather/cloud-rain.svg create mode 100644 src/assets/icons/feather/cloud-snow.svg create mode 100644 src/assets/icons/feather/cloud.svg create mode 100644 src/assets/icons/feather/code.svg create mode 100644 src/assets/icons/feather/codepen.svg create mode 100644 src/assets/icons/feather/codesandbox.svg create mode 100644 src/assets/icons/feather/coffee.svg create mode 100644 src/assets/icons/feather/columns.svg create mode 100644 src/assets/icons/feather/command.svg create mode 100644 src/assets/icons/feather/compass.svg create mode 100644 src/assets/icons/feather/copy.svg create mode 100644 src/assets/icons/feather/corner-down-left.svg create mode 100644 src/assets/icons/feather/corner-down-right.svg create mode 100644 src/assets/icons/feather/corner-left-down.svg create mode 100644 src/assets/icons/feather/corner-left-up.svg create mode 100644 src/assets/icons/feather/corner-right-down.svg create mode 100644 src/assets/icons/feather/corner-right-up.svg create mode 100644 src/assets/icons/feather/corner-up-left.svg create mode 100644 src/assets/icons/feather/corner-up-right.svg create mode 100644 src/assets/icons/feather/cpu.svg create mode 100644 src/assets/icons/feather/credit-card.svg create mode 100644 src/assets/icons/feather/crop.svg create mode 100644 src/assets/icons/feather/crosshair.svg create mode 100644 src/assets/icons/feather/database.svg create mode 100644 src/assets/icons/feather/delete.svg create mode 100644 src/assets/icons/feather/disc.svg create mode 100644 src/assets/icons/feather/divide.svg create mode 100644 src/assets/icons/feather/dollar-sign.svg create mode 100644 src/assets/icons/feather/download-cloud.svg create mode 100644 src/assets/icons/feather/download.svg create mode 100644 src/assets/icons/feather/dribbble.svg create mode 100644 src/assets/icons/feather/droplet.svg create mode 100644 src/assets/icons/feather/edit-2.svg create mode 100644 src/assets/icons/feather/edit-3.svg create mode 100644 src/assets/icons/feather/edit.svg create mode 100644 src/assets/icons/feather/external-link.svg create mode 100644 src/assets/icons/feather/eye-off.svg create mode 100644 src/assets/icons/feather/eye.svg create mode 100644 src/assets/icons/feather/facebook.svg create mode 100644 src/assets/icons/feather/fast-forward.svg create mode 100644 src/assets/icons/feather/feather.svg create mode 100644 src/assets/icons/feather/figma.svg create mode 100644 src/assets/icons/feather/file-minus.svg create mode 100644 src/assets/icons/feather/file-plus.svg create mode 100644 src/assets/icons/feather/file-text.svg create mode 100644 src/assets/icons/feather/file.svg create mode 100644 src/assets/icons/feather/film.svg create mode 100644 src/assets/icons/feather/filter.svg create mode 100644 src/assets/icons/feather/flag.svg create mode 100644 src/assets/icons/feather/folder-minus.svg create mode 100644 src/assets/icons/feather/folder-plus.svg create mode 100644 src/assets/icons/feather/folder.svg create mode 100644 src/assets/icons/feather/framer.svg create mode 100644 src/assets/icons/feather/frown.svg create mode 100644 src/assets/icons/feather/gift.svg create mode 100644 src/assets/icons/feather/git-branch.svg create mode 100644 src/assets/icons/feather/git-commit.svg create mode 100644 src/assets/icons/feather/git-merge.svg create mode 100644 src/assets/icons/feather/git-pull-request.svg create mode 100644 src/assets/icons/feather/github.svg create mode 100644 src/assets/icons/feather/gitlab.svg create mode 100644 src/assets/icons/feather/globe.svg create mode 100644 src/assets/icons/feather/grid.svg create mode 100644 src/assets/icons/feather/hard-drive.svg create mode 100644 src/assets/icons/feather/hash.svg create mode 100644 src/assets/icons/feather/headphones.svg create mode 100644 src/assets/icons/feather/heart.svg create mode 100644 src/assets/icons/feather/help-circle.svg create mode 100644 src/assets/icons/feather/hexagon.svg create mode 100644 src/assets/icons/feather/home.svg create mode 100644 src/assets/icons/feather/image.svg create mode 100644 src/assets/icons/feather/inbox.svg create mode 100644 src/assets/icons/feather/info.svg create mode 100644 src/assets/icons/feather/instagram.svg create mode 100644 src/assets/icons/feather/italic.svg create mode 100644 src/assets/icons/feather/key.svg create mode 100644 src/assets/icons/feather/layers.svg create mode 100644 src/assets/icons/feather/layout.svg create mode 100644 src/assets/icons/feather/life-buoy.svg create mode 100644 src/assets/icons/feather/link-2.svg create mode 100644 src/assets/icons/feather/link.svg create mode 100644 src/assets/icons/feather/linkedin.svg create mode 100644 src/assets/icons/feather/list.svg create mode 100644 src/assets/icons/feather/loader.svg create mode 100644 src/assets/icons/feather/lock.svg create mode 100644 src/assets/icons/feather/log-in.svg create mode 100644 src/assets/icons/feather/log-out.svg create mode 100644 src/assets/icons/feather/mail.svg create mode 100644 src/assets/icons/feather/map-pin.svg create mode 100644 src/assets/icons/feather/map.svg create mode 100644 src/assets/icons/feather/maximize-2.svg create mode 100644 src/assets/icons/feather/maximize.svg create mode 100644 src/assets/icons/feather/meh.svg create mode 100644 src/assets/icons/feather/menu.svg create mode 100644 src/assets/icons/feather/message-circle.svg create mode 100644 src/assets/icons/feather/message-square.svg create mode 100644 src/assets/icons/feather/mic-off.svg create mode 100644 src/assets/icons/feather/mic.svg create mode 100644 src/assets/icons/feather/minimize-2.svg create mode 100644 src/assets/icons/feather/minimize.svg create mode 100644 src/assets/icons/feather/minus-circle.svg create mode 100644 src/assets/icons/feather/minus-square.svg create mode 100644 src/assets/icons/feather/minus.svg create mode 100644 src/assets/icons/feather/monitor.svg create mode 100644 src/assets/icons/feather/moon.svg create mode 100644 src/assets/icons/feather/more-horizontal.svg create mode 100644 src/assets/icons/feather/more-vertical.svg create mode 100644 src/assets/icons/feather/mouse-pointer.svg create mode 100644 src/assets/icons/feather/move.svg create mode 100644 src/assets/icons/feather/music.svg create mode 100644 src/assets/icons/feather/navigation-2.svg create mode 100644 src/assets/icons/feather/navigation.svg create mode 100644 src/assets/icons/feather/octagon.svg create mode 100644 src/assets/icons/feather/package.svg create mode 100644 src/assets/icons/feather/paperclip.svg create mode 100644 src/assets/icons/feather/pause-circle.svg create mode 100644 src/assets/icons/feather/pause.svg create mode 100644 src/assets/icons/feather/pen-tool.svg create mode 100644 src/assets/icons/feather/percent.svg create mode 100644 src/assets/icons/feather/phone-call.svg create mode 100644 src/assets/icons/feather/phone-forwarded.svg create mode 100644 src/assets/icons/feather/phone-incoming.svg create mode 100644 src/assets/icons/feather/phone-missed.svg create mode 100644 src/assets/icons/feather/phone-off.svg create mode 100644 src/assets/icons/feather/phone-outgoing.svg create mode 100644 src/assets/icons/feather/phone.svg create mode 100644 src/assets/icons/feather/pie-chart.svg create mode 100644 src/assets/icons/feather/play-circle.svg create mode 100644 src/assets/icons/feather/play.svg create mode 100644 src/assets/icons/feather/plus-circle.svg create mode 100644 src/assets/icons/feather/plus-square.svg create mode 100644 src/assets/icons/feather/plus.svg create mode 100644 src/assets/icons/feather/pocket.svg create mode 100644 src/assets/icons/feather/power.svg create mode 100644 src/assets/icons/feather/printer.svg create mode 100644 src/assets/icons/feather/radio.svg create mode 100644 src/assets/icons/feather/refresh-ccw.svg create mode 100644 src/assets/icons/feather/refresh-cw.svg create mode 100644 src/assets/icons/feather/repeat.svg create mode 100644 src/assets/icons/feather/rewind.svg create mode 100644 src/assets/icons/feather/rotate-ccw.svg create mode 100644 src/assets/icons/feather/rotate-cw.svg create mode 100644 src/assets/icons/feather/rss.svg create mode 100644 src/assets/icons/feather/save.svg create mode 100644 src/assets/icons/feather/scissors.svg create mode 100644 src/assets/icons/feather/search.svg create mode 100644 src/assets/icons/feather/send.svg create mode 100644 src/assets/icons/feather/server.svg create mode 100644 src/assets/icons/feather/settings.svg create mode 100644 src/assets/icons/feather/share-2.svg create mode 100644 src/assets/icons/feather/share.svg create mode 100644 src/assets/icons/feather/shield-off.svg create mode 100644 src/assets/icons/feather/shield.svg create mode 100644 src/assets/icons/feather/shopping-bag.svg create mode 100644 src/assets/icons/feather/shopping-cart.svg create mode 100644 src/assets/icons/feather/shuffle.svg create mode 100644 src/assets/icons/feather/sidebar.svg create mode 100644 src/assets/icons/feather/skip-back.svg create mode 100644 src/assets/icons/feather/skip-forward.svg create mode 100644 src/assets/icons/feather/slack.svg create mode 100644 src/assets/icons/feather/slash.svg create mode 100644 src/assets/icons/feather/sliders.svg create mode 100644 src/assets/icons/feather/smartphone.svg create mode 100644 src/assets/icons/feather/smile.svg create mode 100644 src/assets/icons/feather/speaker.svg create mode 100644 src/assets/icons/feather/square.svg create mode 100644 src/assets/icons/feather/star.svg create mode 100644 src/assets/icons/feather/stop-circle.svg create mode 100644 src/assets/icons/feather/sun.svg create mode 100644 src/assets/icons/feather/sunrise.svg create mode 100644 src/assets/icons/feather/sunset.svg create mode 100644 src/assets/icons/feather/table.svg create mode 100644 src/assets/icons/feather/tablet.svg create mode 100644 src/assets/icons/feather/tag.svg create mode 100644 src/assets/icons/feather/target.svg create mode 100644 src/assets/icons/feather/terminal.svg create mode 100644 src/assets/icons/feather/thermometer.svg create mode 100644 src/assets/icons/feather/thumbs-down.svg create mode 100644 src/assets/icons/feather/thumbs-up.svg create mode 100644 src/assets/icons/feather/toggle-left.svg create mode 100644 src/assets/icons/feather/toggle-right.svg create mode 100644 src/assets/icons/feather/tool.svg create mode 100644 src/assets/icons/feather/trash-2.svg create mode 100644 src/assets/icons/feather/trash.svg create mode 100644 src/assets/icons/feather/trello.svg create mode 100644 src/assets/icons/feather/trending-down.svg create mode 100644 src/assets/icons/feather/trending-up.svg create mode 100644 src/assets/icons/feather/triangle.svg create mode 100644 src/assets/icons/feather/truck.svg create mode 100644 src/assets/icons/feather/tv.svg create mode 100644 src/assets/icons/feather/twitch.svg create mode 100644 src/assets/icons/feather/twitter.svg create mode 100644 src/assets/icons/feather/type.svg create mode 100644 src/assets/icons/feather/umbrella.svg create mode 100644 src/assets/icons/feather/underline.svg create mode 100644 src/assets/icons/feather/unlock.svg create mode 100644 src/assets/icons/feather/upload-cloud.svg create mode 100644 src/assets/icons/feather/upload.svg create mode 100644 src/assets/icons/feather/user-check.svg create mode 100644 src/assets/icons/feather/user-minus.svg create mode 100644 src/assets/icons/feather/user-plus.svg create mode 100644 src/assets/icons/feather/user-x.svg create mode 100644 src/assets/icons/feather/user.svg create mode 100644 src/assets/icons/feather/users.svg create mode 100644 src/assets/icons/feather/video-off.svg create mode 100644 src/assets/icons/feather/video.svg create mode 100644 src/assets/icons/feather/voicemail.svg create mode 100644 src/assets/icons/feather/volume-1.svg create mode 100644 src/assets/icons/feather/volume-2.svg create mode 100644 src/assets/icons/feather/volume-x.svg create mode 100644 src/assets/icons/feather/volume.svg create mode 100644 src/assets/icons/feather/watch.svg create mode 100644 src/assets/icons/feather/wifi-off.svg create mode 100644 src/assets/icons/feather/wifi.svg create mode 100644 src/assets/icons/feather/wind.svg create mode 100644 src/assets/icons/feather/x-circle.svg create mode 100644 src/assets/icons/feather/x-octagon.svg create mode 100644 src/assets/icons/feather/x-square.svg create mode 100644 src/assets/icons/feather/x.svg create mode 100644 src/assets/icons/feather/youtube.svg create mode 100644 src/assets/icons/feather/zap-off.svg create mode 100644 src/assets/icons/feather/zap.svg create mode 100644 src/assets/icons/feather/zoom-in.svg create mode 100644 src/assets/icons/feather/zoom-out.svg create mode 100644 src/assets/icons/isme/awesome.svg create mode 100644 src/assets/icons/isme/dialog.svg create mode 100644 src/assets/icons/isme/gitee.svg create mode 100644 src/assets/images/404.webp create mode 100644 src/assets/images/login_banner.webp create mode 100644 src/assets/images/login_bg.webp create mode 100644 src/assets/images/logo.png create mode 100644 src/components/common/AppCard.vue create mode 100644 src/components/common/AppPage.vue create mode 100644 src/components/common/CommonPage.vue create mode 100644 src/components/common/TheFooter.vue create mode 100644 src/components/common/index.js create mode 100644 src/components/index.js create mode 100644 src/components/me/crud/QueryItem.vue create mode 100644 src/components/me/crud/index.vue create mode 100644 src/components/me/index.js create mode 100644 src/components/me/modal/index.vue create mode 100644 src/composables/index.js create mode 100644 src/composables/useAliveData.js create mode 100644 src/composables/useCrud.js create mode 100644 src/composables/useForm.js create mode 100644 src/composables/useModal.js create mode 100644 src/directives/index.js create mode 100644 src/layouts/components/RoleSelect.vue create mode 100644 src/layouts/components/index.js create mode 100644 src/layouts/default/header/components/UserAvatar.vue create mode 100644 src/layouts/default/header/components/index.js create mode 100644 src/layouts/default/header/components/tab/ContextMenu.vue create mode 100644 src/layouts/default/header/components/tab/index.vue create mode 100644 src/layouts/default/header/index.vue create mode 100644 src/layouts/default/index.vue create mode 100644 src/layouts/default/sidebar/components/SideLogo.vue create mode 100644 src/layouts/default/sidebar/components/SideMenu.vue create mode 100644 src/layouts/default/sidebar/index.vue create mode 100644 src/layouts/empty/index.vue create mode 100644 src/main.js create mode 100644 src/router/guards/index.js create mode 100644 src/router/guards/page-loading-guard.js create mode 100644 src/router/guards/page-title-guard.js create mode 100644 src/router/guards/permission-guard.js create mode 100644 src/router/guards/tab-guard.js create mode 100644 src/router/index.js create mode 100644 src/settings.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/app.js create mode 100644 src/store/modules/auth.js create mode 100644 src/store/modules/index.js create mode 100644 src/store/modules/permission.js create mode 100644 src/store/modules/tab.js create mode 100644 src/store/modules/user.js create mode 100644 src/styles/global.scss create mode 100644 src/styles/reset.css create mode 100644 src/utils/common.js create mode 100644 src/utils/http/helpers.js create mode 100644 src/utils/http/index.js create mode 100644 src/utils/http/interceptors.js create mode 100644 src/utils/index.js create mode 100644 src/utils/is.js create mode 100644 src/utils/naiveTools.js create mode 100644 src/utils/storage/index.js create mode 100644 src/utils/storage/storage.js create mode 100644 src/views/base/index.vue create mode 100644 src/views/base/keep-alive.vue create mode 100644 src/views/base/test-modal.vue create mode 100644 src/views/base/unocss-icon.vue create mode 100644 src/views/base/unocss.vue create mode 100644 src/views/demo/upload/index.vue create mode 100644 src/views/error-page/403.vue create mode 100644 src/views/error-page/404.vue create mode 100644 src/views/home/index.vue create mode 100644 src/views/login/api.js create mode 100644 src/views/login/index.vue create mode 100644 src/views/pms/resource/api.js create mode 100644 src/views/pms/resource/components/MenuTree.vue create mode 100644 src/views/pms/resource/components/QuestionLabel.vue create mode 100644 src/views/pms/resource/components/ResAddOrEdit.vue create mode 100644 src/views/pms/resource/index.vue create mode 100644 src/views/pms/role/api.js create mode 100644 src/views/pms/role/components/CascadeTree.vue create mode 100644 src/views/pms/role/index.vue create mode 100644 src/views/pms/role/role-user.vue create mode 100644 src/views/pms/user/api.js create mode 100644 src/views/pms/user/index.vue create mode 100644 src/views/profile/api.js create mode 100644 src/views/profile/index.vue create mode 100644 uno.config.js create mode 100644 vite.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..9b6a89f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf \ No newline at end of file diff --git a/.env b/.env new file mode 100644 index 0000000..ba0159e --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_TITLE = 'Vue Naive Admin' diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..cfce486 --- /dev/null +++ b/.env.development @@ -0,0 +1,8 @@ +# 是否使用Hash路由 +VITE_USE_HASH = 'true' + +# 资源公共路径,需要以 /开头和结尾 +VITE_PUBLIC_PATH = '/' + +# 代理配置-target +VITE_PROXY_TARGET = 'http://localhost:8085' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..5735239 --- /dev/null +++ b/.env.production @@ -0,0 +1,8 @@ +# 是否使用Hash路由 +VITE_USE_HASH = 'false' + +# 资源公共路径,需要以 /开头和结尾 +VITE_PUBLIC_PATH = '/' + +# 代理配置-target +VITE_PROXY_TARGET = 'http://localhost:8085' diff --git a/.eslint-global-variables.json b/.eslint-global-variables.json new file mode 100644 index 0000000..4f9c397 --- /dev/null +++ b/.eslint-global-variables.json @@ -0,0 +1,63 @@ +{ + "globals": { + "$loadingBar": true, + "$message": true, + "$dialog": true, + "$notification": true, + "$modal": true, + "defineOptions": true, + "EffectScope": true, + "computed": true, + "createApp": true, + "customRef": true, + "defineAsyncComponent": true, + "defineComponent": true, + "effectScope": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "inject": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onBeforeMount": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onDeactivated": true, + "onErrorCaptured": true, + "onMounted": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onUnmounted": true, + "onUpdated": true, + "provide": true, + "reactive": true, + "readonly": true, + "ref": true, + "resolveComponent": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "toRaw": true, + "toRef": true, + "toRefs": true, + "triggerRef": true, + "unref": true, + "useAttrs": true, + "useCssModule": true, + "useCssVars": true, + "useRoute": true, + "useRouter": true, + "useSlots": true, + "watch": true, + "watchEffect": true, + "watchPostEffect": true, + "watchSyncEffect": true + } +} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3d0576e --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +node_modules +dist +public +package.json \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e514ef --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.local +node_modules +dist +stats.html diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..5b786c9 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +registry=https://registry.npm.taobao.org +shamefully-hoist=true \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..4b6d469 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +/node_modules/** +/dist/* +/public/* \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..5adf1d3 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "printWidth": 100, + "singleQuote": true, + "semi": false, + "endOfLine": "lf", + "htmlWhitespaceSensitivity": "ignore" +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..1ae191d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,12 @@ +{ + "recommendations": [ + "Vue.volar", + "Vue.vscode-typescript-vue-plugin", + "antfu.unocss", + "antfu.iconify", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "sdras.vue-vscode-snippets", + "mikestead.dotenv" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1382744 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "files.eol": "\n", + "files.associations": { + "*.env.*": "dotenv", + "*.svg": "html", + "*.css": "scss" + }, + + "editor.formatOnSave": false, + "[html][css][less][scss][sass][yaml][yml][jsonc][json]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "yzhang.markdown-all-in-one" + }, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact", "vue"] +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..888e80f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Ronnie Zhang(大脸怪) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..de176a8 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# Vue Naive Admin 2.0 + +

+ + Vue Naive Admin Logo + +

+

+ MIT License +

+ +## 简介 +Vue Naive Admin 是一款极简风格的后台管理模板,包含前后端解决方案,前端使用 Vite + Vue3 + Pinia + Unocss,后端使用 Nestjs + TypeOrm + MySql,简单易用,赏心悦目,历经十几次重构和细节打磨,诚意满满!! + +## 设计理念 + +Vue Naive Admin 2022年2月开始开源,从 1.0 到现在的 2.0,一直秉持着`简单即正义`的理念,旨在帮助中小企业、在校大学生及个人开发者快速上手开发后台管理项目,为了降低使用者的学习成本,没有使用看似主流的 TypeScript(前端),这也使得 Vue Naive Admin 成为了市面上少有的 `使用 JavaScript 的 Vue3 后台管理模板`,而且还算优秀,得到了大量朋友的认可和喜爱,截至 2023-11-17, github `1.1k+` star,gitee `260+` star。 + +## 特性 + +- 🆒 使用 **Vue3** 主流最新技术栈: `Vite + Vue3 + Pinia` +- 🍇 使用 **原子CSS**框架: `Unocss`,优雅、轻量、易用 +- 🍍 集成 `Pinia` 状态管理,支持状态持久化 +- 🤹 使用主流的 `iconify + unocss` 图标方案,支持自定义图标,支持动态渲染 +- 🎨 使用 Naive UI,`极致简洁的代码风格和清爽的页面设计`,审美在线,主题轻松定制 +- 👏 先进且易于理解的文件结构设计,多个模块之间**零耦合**,单个业务模块删除不影响其他模块 +- 🚀 `扁平化路由`设计,每一个组件都可以是一个页面,告别多级路由 `KeepAlive` 难实现问题 +- 🍒 `基于权限动态生成路由`,无需额外定义路由,`403和404页面可区分`,而不是无权限也跳404 +- 🔐 基于Redis集成 `无感刷新`,用户登录态可控,安全与体验缺一不可 +- ✨ 基于 Naive UI 封装 `message` 全局工具方法,支持批量提醒,支持跨页面单例模式 +- ⚡️ 基于 Naive UI 封装常用的业务组件,包含`Page` 组件、`CRUD` 表格组件及 `Modal`组件等,简单易用,减少大量重复性工作 + +## 极致的性能 + +![](http://docs.isme.top/server/index.php?s=/api/attachment/visitFile&sign=0b81142878f6cf5019f6c5d4cfed7881) +![](http://docs.isme.top/server/index.php?s=/api/attachment/visitFile&sign=e935b43f97008a7c2a8e7ec95a68b7cd) + +## 2.0 和 1.0 区别 + +- 2.0 是基于 1.0 风格从 0 到 1 重新设计的,所以 2.0 看似跟 1.0 很像,但其实代码机构差别还挺大的。 +- 1.0 只提供前端,后端使用 Mock 模拟的,而 2.0 是全栈版,提供真实的后端接口。 +- 2.0 虽然版本高于 1.0,但复杂度却远低于 1.0,虽然 1.0 也很简单。 +- 2.0 的灵活度远高于 1.0,只要你愿意,你可以为每个页面单独定制一个 layout + +[体验1.0 | template.isme.top](https://template.isme.top) + +[体验2.0 | admin.isme.top](https://admin.isme.top) + +## Nestjs 后端 + +Vue Naive Admin 提供一套后端代码,技术栈使用 Nestjs + TypeOrm + MySql,内置 JWT、RABC及模板所需的一些基础接口。 +*后续可能会提供 Java 版和 Go 版的,但由于精力有限,欢迎感兴趣的大佬基于前端提供对接好的后端项目,当然,并不局限于 Java 和 Go,已对接的后端项目会展示到仓库的 README 和 官方文档中* + +## 版权说明 + +本项目使用 `MIT协议`,默认授权给任何人,被授权人可免费地无限制的使用、复制、修改、合并、发布、发行、再许可、售卖本软件拷贝、并有权向被供应人授予同等的权利,但必须满足以下条件: + +- 复制、修改和发行本项目代码需包含原作者的版权及许可信息,包括但不限于文件头注释、协议等 + +简单来说,作者只想保留版权,没有任何其他限制。 + diff --git a/build/index.js b/build/index.js new file mode 100644 index 0000000..448517d --- /dev/null +++ b/build/index.js @@ -0,0 +1,39 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:48:02 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { globSync } from 'glob' +import path from 'path' +import dynamicIcons from '../src/assets/icons/dynamic-icons' + +/** + * @usage 生成icons, 用于 unocss safelist,以支持页面动态渲染自定义图标 + */ +export function getIcons() { + const feFiles = globSync('src/assets/icons/feather/*.svg', { nodir: true, strict: true }) + const meFiles = globSync('src/assets/icons/isme/*.svg', { nodir: true, strict: true }) + const feIcons = feFiles.map((filePath) => { + const fileName = path.basename(filePath) // 获取文件名,包括后缀 + const fileNameWithoutExt = path.parse(fileName).name // 获取去除后缀的文件名 + return `i-fe:${fileNameWithoutExt}` + }) + const meIcons = meFiles.map((filePath) => { + const fileName = path.basename(filePath) // 获取文件名,包括后缀 + const fileNameWithoutExt = path.parse(fileName).name // 获取去除后缀的文件名 + return `i-me:${fileNameWithoutExt}` + }) + + return [...dynamicIcons, ...feIcons, ...meIcons] +} + +/** + * @usage 生成.vue文件路径列表,用于添加菜单时可下拉选择对应的.vue文件路径,防止手动输入报错 + */ +export function getPagePathes() { + const files = globSync('src/views/**/*.vue') + return files.map((item) => '/' + path.normalize(item).replace(/\\/g, '/')) +} diff --git a/build/plugin-isme/icons.js b/build/plugin-isme/icons.js new file mode 100644 index 0000000..336d0bf --- /dev/null +++ b/build/plugin-isme/icons.js @@ -0,0 +1,24 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:48:11 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { getIcons } from '..' + +const PLUGIN_ICONS_ID = 'isme:icons' +export function pluginIcons() { + return { + name: 'isme:icons', + resolveId(id) { + if (id === PLUGIN_ICONS_ID) return '\0' + PLUGIN_ICONS_ID + }, + load(id) { + if (id === '\0' + PLUGIN_ICONS_ID) { + return `export default ${JSON.stringify(getIcons())}` + } + }, + } +} diff --git a/build/plugin-isme/index.js b/build/plugin-isme/index.js new file mode 100644 index 0000000..326b960 --- /dev/null +++ b/build/plugin-isme/index.js @@ -0,0 +1,10 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:48:17 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +export { pluginPagePathes } from './page-pathes' +export { pluginIcons } from './icons' diff --git a/build/plugin-isme/page-pathes.js b/build/plugin-isme/page-pathes.js new file mode 100644 index 0000000..44bdf49 --- /dev/null +++ b/build/plugin-isme/page-pathes.js @@ -0,0 +1,24 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:37:43 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { getPagePathes } from '..' + +const PLUGIN_PAGE_PATHES_ID = 'isme:page-pathes' +export function pluginPagePathes() { + return { + name: 'isme:page-pathes', + resolveId(id) { + if (id === PLUGIN_PAGE_PATHES_ID) return '\0' + PLUGIN_PAGE_PATHES_ID + }, + load(id) { + if (id === '\0' + PLUGIN_PAGE_PATHES_ID) { + return `export default ${JSON.stringify(getPagePathes())}` + } + }, + } +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..67cd9f1 --- /dev/null +++ b/index.html @@ -0,0 +1,29 @@ + + + + + + + + <%= title %> + + +
+ +
+ logo +
+
+
+
+
+
+
+
+
<%= title %>
+
+ +
+ + + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..270b986 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": ["src/*"], + "~/*": ["./*"] + }, + "jsx": "preserve", + "allowJs": true + }, + "exclude": ["node_modules", "dist"] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..40bbee3 --- /dev/null +++ b/package.json @@ -0,0 +1,58 @@ +{ + "name": "vue-naive-admin", + "private": true, + "version": "2.0.0-beta.01", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "lint:fix": "eslint --fix --ext .js,.vue ." + }, + "dependencies": { + "@iconify/json": "^2.2.129", + "@iconify/utils": "^2.1.11", + "@unocss/eslint-config": "^0.57.7", + "@unocss/preset-rem-to-px": "^0.57.7", + "@vueuse/core": "^10.5.0", + "axios": "^1.5.1", + "dayjs": "^1.11.10", + "echarts": "^5.4.3", + "lodash-es": "^4.17.21", + "naive-ui": "^2.35.0", + "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.0", + "sass": "^1.69.3", + "unocss": "^0.57.7", + "vue": "^3.3.4", + "vue-echarts": "^6.6.1", + "vue-router": "^4.2.5", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.2.3", + "@zclzone/eslint-config": "^0.0.5", + "esno": "^0.17.0", + "fs-extra": "^11.1.1", + "glob": "^10.3.10", + "rollup-plugin-visualizer": "^5.9.2", + "unplugin-auto-import": "^0.16.6", + "unplugin-vue-components": "^0.25.2", + "vite": "^4.5.0", + "vite-plugin-html": "^3.2.0" + }, + "eslintConfig": { + "extends": [ + "@zclzone", + "@unocss", + ".eslint-global-variables.json" + ], + "rules": { + "no-unused-vars": [ + "error", + { + "varsIgnorePattern": "^_" + } + ] + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..5dcdfe4 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4724 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@iconify/json': + specifier: ^2.2.129 + version: registry.npmmirror.com/@iconify/json@2.2.146 + '@iconify/utils': + specifier: ^2.1.11 + version: registry.npmmirror.com/@iconify/utils@2.1.12 + '@unocss/eslint-config': + specifier: ^0.57.7 + version: registry.npmmirror.com/@unocss/eslint-config@0.57.7(eslint@8.54.0)(typescript@5.3.2) + '@unocss/preset-rem-to-px': + specifier: ^0.57.7 + version: registry.npmmirror.com/@unocss/preset-rem-to-px@0.57.7 + '@vueuse/core': + specifier: ^10.5.0 + version: registry.npmmirror.com/@vueuse/core@10.6.1(vue@3.3.8) + axios: + specifier: ^1.5.1 + version: registry.npmmirror.com/axios@1.6.2 + dayjs: + specifier: ^1.11.10 + version: registry.npmmirror.com/dayjs@1.11.10 + echarts: + specifier: ^5.4.3 + version: registry.npmmirror.com/echarts@5.4.3 + lodash-es: + specifier: ^4.17.21 + version: registry.npmmirror.com/lodash-es@4.17.21 + naive-ui: + specifier: ^2.35.0 + version: registry.npmmirror.com/naive-ui@2.35.0(vue@3.3.8) + pinia: + specifier: ^2.1.7 + version: registry.npmmirror.com/pinia@2.1.7(typescript@5.3.2)(vue@3.3.8) + pinia-plugin-persistedstate: + specifier: ^3.2.0 + version: registry.npmmirror.com/pinia-plugin-persistedstate@3.2.0(pinia@2.1.7) + sass: + specifier: ^1.69.3 + version: registry.npmmirror.com/sass@1.69.5 + unocss: + specifier: ^0.57.7 + version: registry.npmmirror.com/unocss@0.57.7(postcss@8.4.31)(vite@4.5.0) + vue: + specifier: ^3.3.4 + version: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + vue-echarts: + specifier: ^6.6.1 + version: registry.npmmirror.com/vue-echarts@6.6.1(echarts@5.4.3)(vue@3.3.8) + vue-router: + specifier: ^4.2.5 + version: registry.npmmirror.com/vue-router@4.2.5(vue@3.3.8) + xlsx: + specifier: ^0.18.5 + version: registry.npmmirror.com/xlsx@0.18.5 + +devDependencies: + '@vitejs/plugin-vue': + specifier: ^4.2.3 + version: registry.npmmirror.com/@vitejs/plugin-vue@4.5.0(vite@4.5.0)(vue@3.3.8) + '@zclzone/eslint-config': + specifier: ^0.0.5 + version: registry.npmmirror.com/@zclzone/eslint-config@0.0.5 + esno: + specifier: ^0.17.0 + version: registry.npmmirror.com/esno@0.17.0 + fs-extra: + specifier: ^11.1.1 + version: registry.npmmirror.com/fs-extra@11.1.1 + glob: + specifier: ^10.3.10 + version: registry.npmmirror.com/glob@10.3.10 + rollup-plugin-visualizer: + specifier: ^5.9.2 + version: registry.npmmirror.com/rollup-plugin-visualizer@5.9.3 + unplugin-auto-import: + specifier: ^0.16.6 + version: registry.npmmirror.com/unplugin-auto-import@0.16.7(@vueuse/core@10.6.1) + unplugin-vue-components: + specifier: ^0.25.2 + version: registry.npmmirror.com/unplugin-vue-components@0.25.2(vue@3.3.8) + vite: + specifier: ^4.5.0 + version: registry.npmmirror.com/vite@4.5.0(sass@1.69.5) + vite-plugin-html: + specifier: ^3.2.0 + version: registry.npmmirror.com/vite-plugin-html@3.2.0(vite@4.5.0) + +packages: + + registry.npmmirror.com/@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==, tarball: https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz} + name: '@aashutoshrathi/word-wrap' + version: 1.2.6 + engines: {node: '>=0.10.0'} + + registry.npmmirror.com/@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==, tarball: https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz} + name: '@ampproject/remapping' + version: 2.2.1 + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': registry.npmmirror.com/@jridgewell/gen-mapping@0.3.3 + '@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.20 + dev: false + + registry.npmmirror.com/@antfu/install-pkg@0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==, tarball: https://registry.npmmirror.com/@antfu/install-pkg/-/install-pkg-0.1.1.tgz} + name: '@antfu/install-pkg' + version: 0.1.1 + dependencies: + execa: registry.npmmirror.com/execa@5.1.1 + find-up: registry.npmmirror.com/find-up@5.0.0 + dev: false + + registry.npmmirror.com/@antfu/utils@0.7.6: + resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==, tarball: https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.6.tgz} + name: '@antfu/utils' + version: 0.7.6 + + registry.npmmirror.com/@babel/code-frame@7.23.4: + resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==, tarball: https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.23.4.tgz} + name: '@babel/code-frame' + version: 7.23.4 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': registry.npmmirror.com/@babel/highlight@7.23.4 + chalk: registry.npmmirror.com/chalk@2.4.2 + dev: false + + registry.npmmirror.com/@babel/compat-data@7.23.3: + resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==, tarball: https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.23.3.tgz} + name: '@babel/compat-data' + version: 7.23.3 + engines: {node: '>=6.9.0'} + dev: false + + registry.npmmirror.com/@babel/core@7.23.3: + resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==, tarball: https://registry.npmmirror.com/@babel/core/-/core-7.23.3.tgz} + name: '@babel/core' + version: 7.23.3 + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': registry.npmmirror.com/@ampproject/remapping@2.2.1 + '@babel/code-frame': registry.npmmirror.com/@babel/code-frame@7.23.4 + '@babel/generator': registry.npmmirror.com/@babel/generator@7.23.4 + '@babel/helper-compilation-targets': registry.npmmirror.com/@babel/helper-compilation-targets@7.22.15 + '@babel/helper-module-transforms': registry.npmmirror.com/@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3) + '@babel/helpers': registry.npmmirror.com/@babel/helpers@7.23.4 + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.4 + '@babel/template': registry.npmmirror.com/@babel/template@7.22.15 + '@babel/traverse': registry.npmmirror.com/@babel/traverse@7.23.4 + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + convert-source-map: registry.npmmirror.com/convert-source-map@2.0.0 + debug: registry.npmmirror.com/debug@4.3.4 + gensync: registry.npmmirror.com/gensync@1.0.0-beta.2 + json5: registry.npmmirror.com/json5@2.2.3 + semver: registry.npmmirror.com/semver@6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmmirror.com/@babel/generator@7.23.4: + resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==, tarball: https://registry.npmmirror.com/@babel/generator/-/generator-7.23.4.tgz} + name: '@babel/generator' + version: 7.23.4 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + '@jridgewell/gen-mapping': registry.npmmirror.com/@jridgewell/gen-mapping@0.3.3 + '@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.20 + jsesc: registry.npmmirror.com/jsesc@2.5.2 + dev: false + + registry.npmmirror.com/@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==, tarball: https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz} + name: '@babel/helper-annotate-as-pure' + version: 7.22.5 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==, tarball: https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz} + name: '@babel/helper-compilation-targets' + version: 7.22.15 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': registry.npmmirror.com/@babel/compat-data@7.23.3 + '@babel/helper-validator-option': registry.npmmirror.com/@babel/helper-validator-option@7.22.15 + browserslist: registry.npmmirror.com/browserslist@4.22.1 + lru-cache: registry.npmmirror.com/lru-cache@5.1.1 + semver: registry.npmmirror.com/semver@6.3.1 + dev: false + + registry.npmmirror.com/@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==, tarball: https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz} + id: registry.npmmirror.com/@babel/helper-create-class-features-plugin/7.22.15 + name: '@babel/helper-create-class-features-plugin' + version: 7.22.15 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-annotate-as-pure': registry.npmmirror.com/@babel/helper-annotate-as-pure@7.22.5 + '@babel/helper-environment-visitor': registry.npmmirror.com/@babel/helper-environment-visitor@7.22.20 + '@babel/helper-function-name': registry.npmmirror.com/@babel/helper-function-name@7.23.0 + '@babel/helper-member-expression-to-functions': registry.npmmirror.com/@babel/helper-member-expression-to-functions@7.23.0 + '@babel/helper-optimise-call-expression': registry.npmmirror.com/@babel/helper-optimise-call-expression@7.22.5 + '@babel/helper-replace-supers': registry.npmmirror.com/@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3) + '@babel/helper-skip-transparent-expression-wrappers': registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers@7.22.5 + '@babel/helper-split-export-declaration': registry.npmmirror.com/@babel/helper-split-export-declaration@7.22.6 + semver: registry.npmmirror.com/semver@6.3.1 + dev: false + + registry.npmmirror.com/@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, tarball: https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz} + name: '@babel/helper-environment-visitor' + version: 7.22.20 + engines: {node: '>=6.9.0'} + dev: false + + registry.npmmirror.com/@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, tarball: https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz} + name: '@babel/helper-function-name' + version: 7.23.0 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': registry.npmmirror.com/@babel/template@7.22.15 + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, tarball: https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz} + name: '@babel/helper-hoist-variables' + version: 7.22.5 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==, tarball: https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz} + name: '@babel/helper-member-expression-to-functions' + version: 7.23.0 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==, tarball: https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz} + name: '@babel/helper-module-imports' + version: 7.22.15 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==, tarball: https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz} + id: registry.npmmirror.com/@babel/helper-module-transforms/7.23.3 + name: '@babel/helper-module-transforms' + version: 7.23.3 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-environment-visitor': registry.npmmirror.com/@babel/helper-environment-visitor@7.22.20 + '@babel/helper-module-imports': registry.npmmirror.com/@babel/helper-module-imports@7.22.15 + '@babel/helper-simple-access': registry.npmmirror.com/@babel/helper-simple-access@7.22.5 + '@babel/helper-split-export-declaration': registry.npmmirror.com/@babel/helper-split-export-declaration@7.22.6 + '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier@7.22.20 + dev: false + + registry.npmmirror.com/@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==, tarball: https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz} + name: '@babel/helper-optimise-call-expression' + version: 7.22.5 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==, tarball: https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz} + name: '@babel/helper-plugin-utils' + version: 7.22.5 + engines: {node: '>=6.9.0'} + dev: false + + registry.npmmirror.com/@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==, tarball: https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz} + id: registry.npmmirror.com/@babel/helper-replace-supers/7.22.20 + name: '@babel/helper-replace-supers' + version: 7.22.20 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-environment-visitor': registry.npmmirror.com/@babel/helper-environment-visitor@7.22.20 + '@babel/helper-member-expression-to-functions': registry.npmmirror.com/@babel/helper-member-expression-to-functions@7.23.0 + '@babel/helper-optimise-call-expression': registry.npmmirror.com/@babel/helper-optimise-call-expression@7.22.5 + dev: false + + registry.npmmirror.com/@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==, tarball: https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz} + name: '@babel/helper-simple-access' + version: 7.22.5 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==, tarball: https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz} + name: '@babel/helper-skip-transparent-expression-wrappers' + version: 7.22.5 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, tarball: https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz} + name: '@babel/helper-split-export-declaration' + version: 7.22.6 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz} + name: '@babel/helper-string-parser' + version: 7.23.4 + engines: {node: '>=6.9.0'} + + registry.npmmirror.com/@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz} + name: '@babel/helper-validator-identifier' + version: 7.22.20 + engines: {node: '>=6.9.0'} + + registry.npmmirror.com/@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==, tarball: https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz} + name: '@babel/helper-validator-option' + version: 7.22.15 + engines: {node: '>=6.9.0'} + dev: false + + registry.npmmirror.com/@babel/helpers@7.23.4: + resolution: {integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==, tarball: https://registry.npmmirror.com/@babel/helpers/-/helpers-7.23.4.tgz} + name: '@babel/helpers' + version: 7.23.4 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': registry.npmmirror.com/@babel/template@7.22.15 + '@babel/traverse': registry.npmmirror.com/@babel/traverse@7.23.4 + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmmirror.com/@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==, tarball: https://registry.npmmirror.com/@babel/highlight/-/highlight-7.23.4.tgz} + name: '@babel/highlight' + version: 7.23.4 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier@7.22.20 + chalk: registry.npmmirror.com/chalk@2.4.2 + js-tokens: registry.npmmirror.com/js-tokens@4.0.0 + dev: false + + registry.npmmirror.com/@babel/parser@7.23.4: + resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.23.4.tgz} + name: '@babel/parser' + version: 7.23.4 + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + + registry.npmmirror.com/@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==, tarball: https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz} + id: registry.npmmirror.com/@babel/plugin-syntax-jsx/7.23.3 + name: '@babel/plugin-syntax-jsx' + version: 7.23.3 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-plugin-utils': registry.npmmirror.com/@babel/helper-plugin-utils@7.22.5 + dev: false + + registry.npmmirror.com/@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==, tarball: https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz} + id: registry.npmmirror.com/@babel/plugin-syntax-typescript/7.23.3 + name: '@babel/plugin-syntax-typescript' + version: 7.23.3 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-plugin-utils': registry.npmmirror.com/@babel/helper-plugin-utils@7.22.5 + dev: false + + registry.npmmirror.com/@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz} + id: registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/7.23.3 + name: '@babel/plugin-transform-modules-commonjs' + version: 7.23.3 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-module-transforms': registry.npmmirror.com/@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3) + '@babel/helper-plugin-utils': registry.npmmirror.com/@babel/helper-plugin-utils@7.22.5 + '@babel/helper-simple-access': registry.npmmirror.com/@babel/helper-simple-access@7.22.5 + dev: false + + registry.npmmirror.com/@babel/plugin-transform-typescript@7.23.4(@babel/core@7.23.3): + resolution: {integrity: sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz} + id: registry.npmmirror.com/@babel/plugin-transform-typescript/7.23.4 + name: '@babel/plugin-transform-typescript' + version: 7.23.4 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-annotate-as-pure': registry.npmmirror.com/@babel/helper-annotate-as-pure@7.22.5 + '@babel/helper-create-class-features-plugin': registry.npmmirror.com/@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3) + '@babel/helper-plugin-utils': registry.npmmirror.com/@babel/helper-plugin-utils@7.22.5 + '@babel/plugin-syntax-typescript': registry.npmmirror.com/@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3) + dev: false + + registry.npmmirror.com/@babel/preset-typescript@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==, tarball: https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz} + id: registry.npmmirror.com/@babel/preset-typescript/7.23.3 + name: '@babel/preset-typescript' + version: 7.23.3 + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/helper-plugin-utils': registry.npmmirror.com/@babel/helper-plugin-utils@7.22.5 + '@babel/helper-validator-option': registry.npmmirror.com/@babel/helper-validator-option@7.22.15 + '@babel/plugin-syntax-jsx': registry.npmmirror.com/@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-commonjs': registry.npmmirror.com/@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-typescript': registry.npmmirror.com/@babel/plugin-transform-typescript@7.23.4(@babel/core@7.23.3) + dev: false + + registry.npmmirror.com/@babel/runtime@7.23.4: + resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.4.tgz} + name: '@babel/runtime' + version: 7.23.4 + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: registry.npmmirror.com/regenerator-runtime@0.14.0 + dev: false + + registry.npmmirror.com/@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==, tarball: https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz} + name: '@babel/template' + version: 7.22.15 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': registry.npmmirror.com/@babel/code-frame@7.23.4 + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.4 + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + dev: false + + registry.npmmirror.com/@babel/traverse@7.23.4: + resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==, tarball: https://registry.npmmirror.com/@babel/traverse/-/traverse-7.23.4.tgz} + name: '@babel/traverse' + version: 7.23.4 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': registry.npmmirror.com/@babel/code-frame@7.23.4 + '@babel/generator': registry.npmmirror.com/@babel/generator@7.23.4 + '@babel/helper-environment-visitor': registry.npmmirror.com/@babel/helper-environment-visitor@7.22.20 + '@babel/helper-function-name': registry.npmmirror.com/@babel/helper-function-name@7.23.0 + '@babel/helper-hoist-variables': registry.npmmirror.com/@babel/helper-hoist-variables@7.22.5 + '@babel/helper-split-export-declaration': registry.npmmirror.com/@babel/helper-split-export-declaration@7.22.6 + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.4 + '@babel/types': registry.npmmirror.com/@babel/types@7.23.4 + debug: registry.npmmirror.com/debug@4.3.4 + globals: registry.npmmirror.com/globals@11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmmirror.com/@babel/types@7.23.4: + resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.23.4.tgz} + name: '@babel/types' + version: 7.23.4 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': registry.npmmirror.com/@babel/helper-string-parser@7.23.4 + '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier@7.22.20 + to-fast-properties: registry.npmmirror.com/to-fast-properties@2.0.0 + + registry.npmmirror.com/@css-render/plugin-bem@0.15.12(css-render@0.15.12): + resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==, tarball: https://registry.npmmirror.com/@css-render/plugin-bem/-/plugin-bem-0.15.12.tgz} + id: registry.npmmirror.com/@css-render/plugin-bem/0.15.12 + name: '@css-render/plugin-bem' + version: 0.15.12 + peerDependencies: + css-render: ~0.15.12 + dependencies: + css-render: registry.npmmirror.com/css-render@0.15.12 + dev: false + + registry.npmmirror.com/@css-render/vue3-ssr@0.15.12(vue@3.3.8): + resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==, tarball: https://registry.npmmirror.com/@css-render/vue3-ssr/-/vue3-ssr-0.15.12.tgz} + id: registry.npmmirror.com/@css-render/vue3-ssr/0.15.12 + name: '@css-render/vue3-ssr' + version: 0.15.12 + peerDependencies: + vue: ^3.0.11 + dependencies: + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + dev: false + + registry.npmmirror.com/@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==, tarball: https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz} + name: '@emotion/hash' + version: 0.8.0 + dev: false + + registry.npmmirror.com/@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz} + name: '@esbuild/android-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz} + name: '@esbuild/android-arm' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz} + name: '@esbuild/android-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz} + name: '@esbuild/darwin-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz} + name: '@esbuild/darwin-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz} + name: '@esbuild/freebsd-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz} + name: '@esbuild/freebsd-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz} + name: '@esbuild/linux-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz} + name: '@esbuild/linux-arm' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz} + name: '@esbuild/linux-ia32' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz} + name: '@esbuild/linux-loong64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz} + name: '@esbuild/linux-mips64el' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz} + name: '@esbuild/linux-ppc64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz} + name: '@esbuild/linux-riscv64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz} + name: '@esbuild/linux-s390x' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz} + name: '@esbuild/linux-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz} + name: '@esbuild/netbsd-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz} + name: '@esbuild/openbsd-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz} + name: '@esbuild/sunos-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz} + name: '@esbuild/win32-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz} + name: '@esbuild/win32-ia32' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + registry.npmmirror.com/@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz} + name: '@esbuild/win32-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + registry.npmmirror.com/@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, tarball: https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz} + id: registry.npmmirror.com/@eslint-community/eslint-utils/4.4.0 + name: '@eslint-community/eslint-utils' + version: 4.4.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: registry.npmmirror.com/eslint@8.54.0 + eslint-visitor-keys: registry.npmmirror.com/eslint-visitor-keys@3.4.3 + + registry.npmmirror.com/@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==, tarball: https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz} + name: '@eslint-community/regexpp' + version: 4.10.0 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + registry.npmmirror.com/@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==, tarball: https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz} + name: '@eslint/eslintrc' + version: 2.1.3 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: registry.npmmirror.com/ajv@6.12.6 + debug: registry.npmmirror.com/debug@4.3.4 + espree: registry.npmmirror.com/espree@9.6.1 + globals: registry.npmmirror.com/globals@13.23.0 + ignore: registry.npmmirror.com/ignore@5.3.0 + import-fresh: registry.npmmirror.com/import-fresh@3.3.0 + js-yaml: registry.npmmirror.com/js-yaml@4.1.0 + minimatch: registry.npmmirror.com/minimatch@3.1.2 + strip-json-comments: registry.npmmirror.com/strip-json-comments@3.1.1 + transitivePeerDependencies: + - supports-color + + registry.npmmirror.com/@eslint/js@8.54.0: + resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==, tarball: https://registry.npmmirror.com/@eslint/js/-/js-8.54.0.tgz} + name: '@eslint/js' + version: 8.54.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + registry.npmmirror.com/@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==, tarball: https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz} + name: '@humanwhocodes/config-array' + version: 0.11.13 + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': registry.npmmirror.com/@humanwhocodes/object-schema@2.0.1 + debug: registry.npmmirror.com/debug@4.3.4 + minimatch: registry.npmmirror.com/minimatch@3.1.2 + transitivePeerDependencies: + - supports-color + + registry.npmmirror.com/@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, tarball: https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz} + name: '@humanwhocodes/module-importer' + version: 1.0.1 + engines: {node: '>=12.22'} + + registry.npmmirror.com/@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==, tarball: https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz} + name: '@humanwhocodes/object-schema' + version: 2.0.1 + + registry.npmmirror.com/@iconify/json@2.2.146: + resolution: {integrity: sha512-Z+kOCjsQSivgphCsaHM7Qg/vjGAzY1QXNREv2JllTh3Wn68LcDS4cie+nox2pfrnF/41B4UM6OI2CrZ00AU2Sg==, tarball: https://registry.npmmirror.com/@iconify/json/-/json-2.2.146.tgz} + name: '@iconify/json' + version: 2.2.146 + dependencies: + '@iconify/types': registry.npmmirror.com/@iconify/types@2.0.0 + pathe: registry.npmmirror.com/pathe@1.1.1 + dev: false + + registry.npmmirror.com/@iconify/types@2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==, tarball: https://registry.npmmirror.com/@iconify/types/-/types-2.0.0.tgz} + name: '@iconify/types' + version: 2.0.0 + dev: false + + registry.npmmirror.com/@iconify/utils@2.1.12: + resolution: {integrity: sha512-7vf3Uk6H7TKX4QMs2gbg5KR1X9J0NJzKSRNWhMZ+PWN92l0t6Q3tj2ZxLDG07rC3ppWBtTtA4FPmkQphuEmdsg==, tarball: https://registry.npmmirror.com/@iconify/utils/-/utils-2.1.12.tgz} + name: '@iconify/utils' + version: 2.1.12 + dependencies: + '@antfu/install-pkg': registry.npmmirror.com/@antfu/install-pkg@0.1.1 + '@antfu/utils': registry.npmmirror.com/@antfu/utils@0.7.6 + '@iconify/types': registry.npmmirror.com/@iconify/types@2.0.0 + debug: registry.npmmirror.com/debug@4.3.4 + kolorist: registry.npmmirror.com/kolorist@1.8.0 + local-pkg: registry.npmmirror.com/local-pkg@0.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmmirror.com/@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, tarball: https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz} + name: '@isaacs/cliui' + version: 8.0.2 + engines: {node: '>=12'} + dependencies: + string-width: registry.npmmirror.com/string-width@5.1.2 + string-width-cjs: registry.npmmirror.com/string-width@4.2.3 + strip-ansi: registry.npmmirror.com/strip-ansi@7.1.0 + strip-ansi-cjs: registry.npmmirror.com/strip-ansi@6.0.1 + wrap-ansi: registry.npmmirror.com/wrap-ansi@8.1.0 + wrap-ansi-cjs: registry.npmmirror.com/wrap-ansi@7.0.0 + dev: true + + registry.npmmirror.com/@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, tarball: https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz} + name: '@jridgewell/gen-mapping' + version: 0.3.3 + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': registry.npmmirror.com/@jridgewell/set-array@1.1.2 + '@jridgewell/sourcemap-codec': registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15 + '@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.20 + + registry.npmmirror.com/@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, tarball: https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz} + name: '@jridgewell/resolve-uri' + version: 3.1.1 + engines: {node: '>=6.0.0'} + + registry.npmmirror.com/@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, tarball: https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz} + name: '@jridgewell/set-array' + version: 1.1.2 + engines: {node: '>=6.0.0'} + + registry.npmmirror.com/@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==, tarball: https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.5.tgz} + name: '@jridgewell/source-map' + version: 0.3.5 + dependencies: + '@jridgewell/gen-mapping': registry.npmmirror.com/@jridgewell/gen-mapping@0.3.3 + '@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.20 + dev: true + + registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, tarball: https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz} + name: '@jridgewell/sourcemap-codec' + version: 1.4.15 + + registry.npmmirror.com/@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==, tarball: https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz} + name: '@jridgewell/trace-mapping' + version: 0.3.20 + dependencies: + '@jridgewell/resolve-uri': registry.npmmirror.com/@jridgewell/resolve-uri@3.1.1 + '@jridgewell/sourcemap-codec': registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15 + + registry.npmmirror.com/@juggle/resize-observer@3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==, tarball: https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz} + name: '@juggle/resize-observer' + version: 3.4.0 + dev: false + + registry.npmmirror.com/@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, tarball: https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz} + name: '@nodelib/fs.scandir' + version: 2.1.5 + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': registry.npmmirror.com/@nodelib/fs.stat@2.0.5 + run-parallel: registry.npmmirror.com/run-parallel@1.2.0 + + registry.npmmirror.com/@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, tarball: https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz} + name: '@nodelib/fs.stat' + version: 2.0.5 + engines: {node: '>= 8'} + + registry.npmmirror.com/@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, tarball: https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz} + name: '@nodelib/fs.walk' + version: 1.2.8 + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': registry.npmmirror.com/@nodelib/fs.scandir@2.1.5 + fastq: registry.npmmirror.com/fastq@1.15.0 + + registry.npmmirror.com/@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} + name: '@pkgjs/parseargs' + version: 0.11.0 + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==, tarball: https://registry.npmmirror.com/@pkgr/utils/-/utils-2.4.2.tgz} + name: '@pkgr/utils' + version: 2.4.2 + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: registry.npmmirror.com/cross-spawn@7.0.3 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + is-glob: registry.npmmirror.com/is-glob@4.0.3 + open: registry.npmmirror.com/open@9.1.0 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: false + + registry.npmmirror.com/@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==, tarball: https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.23.tgz} + name: '@polka/url' + version: 1.0.0-next.23 + dev: false + + registry.npmmirror.com/@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, tarball: https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz} + name: '@rollup/pluginutils' + version: 4.2.1 + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + picomatch: registry.npmmirror.com/picomatch@2.3.1 + dev: true + + registry.npmmirror.com/@rollup/pluginutils@5.0.5: + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==, tarball: https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz} + name: '@rollup/pluginutils' + version: 5.0.5 + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': registry.npmmirror.com/@types/estree@1.0.5 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + picomatch: registry.npmmirror.com/picomatch@2.3.1 + + registry.npmmirror.com/@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==, tarball: https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz} + name: '@types/estree' + version: 1.0.5 + + registry.npmmirror.com/@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz} + name: '@types/json-schema' + version: 7.0.15 + dev: false + + registry.npmmirror.com/@types/katex@0.16.7: + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==, tarball: https://registry.npmmirror.com/@types/katex/-/katex-0.16.7.tgz} + name: '@types/katex' + version: 0.16.7 + dev: false + + registry.npmmirror.com/@types/lodash-es@4.17.12: + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==, tarball: https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz} + name: '@types/lodash-es' + version: 4.17.12 + dependencies: + '@types/lodash': registry.npmmirror.com/@types/lodash@4.14.202 + dev: false + + registry.npmmirror.com/@types/lodash@4.14.202: + resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==, tarball: https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.202.tgz} + name: '@types/lodash' + version: 4.14.202 + dev: false + + registry.npmmirror.com/@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==, tarball: https://registry.npmmirror.com/@types/semver/-/semver-7.5.6.tgz} + name: '@types/semver' + version: 7.5.6 + dev: false + + registry.npmmirror.com/@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==, tarball: https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz} + name: '@types/web-bluetooth' + version: 0.0.20 + + registry.npmmirror.com/@typescript-eslint/scope-manager@6.12.0: + resolution: {integrity: sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==, tarball: https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz} + name: '@typescript-eslint/scope-manager' + version: 6.12.0 + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': registry.npmmirror.com/@typescript-eslint/types@6.12.0 + '@typescript-eslint/visitor-keys': registry.npmmirror.com/@typescript-eslint/visitor-keys@6.12.0 + dev: false + + registry.npmmirror.com/@typescript-eslint/types@6.12.0: + resolution: {integrity: sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==, tarball: https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.12.0.tgz} + name: '@typescript-eslint/types' + version: 6.12.0 + engines: {node: ^16.0.0 || >=18.0.0} + dev: false + + registry.npmmirror.com/@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.2): + resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==, tarball: https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz} + id: registry.npmmirror.com/@typescript-eslint/typescript-estree/6.12.0 + name: '@typescript-eslint/typescript-estree' + version: 6.12.0 + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': registry.npmmirror.com/@typescript-eslint/types@6.12.0 + '@typescript-eslint/visitor-keys': registry.npmmirror.com/@typescript-eslint/visitor-keys@6.12.0 + debug: registry.npmmirror.com/debug@4.3.4 + globby: registry.npmmirror.com/globby@11.1.0 + is-glob: registry.npmmirror.com/is-glob@4.0.3 + semver: registry.npmmirror.com/semver@7.5.4 + ts-api-utils: registry.npmmirror.com/ts-api-utils@1.0.3(typescript@5.3.2) + typescript: registry.npmmirror.com/typescript@5.3.2 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmmirror.com/@typescript-eslint/utils@6.12.0(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==, tarball: https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.12.0.tgz} + id: registry.npmmirror.com/@typescript-eslint/utils/6.12.0 + name: '@typescript-eslint/utils' + version: 6.12.0 + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': registry.npmmirror.com/@eslint-community/eslint-utils@4.4.0(eslint@8.54.0) + '@types/json-schema': registry.npmmirror.com/@types/json-schema@7.0.15 + '@types/semver': registry.npmmirror.com/@types/semver@7.5.6 + '@typescript-eslint/scope-manager': registry.npmmirror.com/@typescript-eslint/scope-manager@6.12.0 + '@typescript-eslint/types': registry.npmmirror.com/@typescript-eslint/types@6.12.0 + '@typescript-eslint/typescript-estree': registry.npmmirror.com/@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.2) + eslint: registry.npmmirror.com/eslint@8.54.0 + semver: registry.npmmirror.com/semver@7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + registry.npmmirror.com/@typescript-eslint/visitor-keys@6.12.0: + resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==, tarball: https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz} + name: '@typescript-eslint/visitor-keys' + version: 6.12.0 + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': registry.npmmirror.com/@typescript-eslint/types@6.12.0 + eslint-visitor-keys: registry.npmmirror.com/eslint-visitor-keys@3.4.3 + dev: false + + registry.npmmirror.com/@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, tarball: https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz} + name: '@ungap/structured-clone' + version: 1.2.0 + + registry.npmmirror.com/@unocss/astro@0.57.7(vite@4.5.0): + resolution: {integrity: sha512-X4KSBdrAADdtS4x7xz02b016xpRDt9mD/d/oq23HyZAZ+sZc4oZs8el9MLSUJgu2okdWzAE62lRRV/oc4HWI1A==, tarball: https://registry.npmmirror.com/@unocss/astro/-/astro-0.57.7.tgz} + id: registry.npmmirror.com/@unocss/astro/0.57.7 + name: '@unocss/astro' + version: 0.57.7 + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/reset': registry.npmmirror.com/@unocss/reset@0.57.7 + '@unocss/vite': registry.npmmirror.com/@unocss/vite@0.57.7(vite@4.5.0) + vite: registry.npmmirror.com/vite@4.5.0(sass@1.69.5) + transitivePeerDependencies: + - rollup + dev: false + + registry.npmmirror.com/@unocss/cli@0.57.7: + resolution: {integrity: sha512-FZHTTBYyibySpBEPbA/ilDzI4v4Uy/bROItEYogZkpXNoCLzlclX+UcuFBXXLt6VFJk4WjLNFLRSQlVcCUUOLA==, tarball: https://registry.npmmirror.com/@unocss/cli/-/cli-0.57.7.tgz} + name: '@unocss/cli' + version: 0.57.7 + engines: {node: '>=14'} + hasBin: true + dependencies: + '@ampproject/remapping': registry.npmmirror.com/@ampproject/remapping@2.2.1 + '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils@5.0.5 + '@unocss/config': registry.npmmirror.com/@unocss/config@0.57.7 + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/preset-uno': registry.npmmirror.com/@unocss/preset-uno@0.57.7 + cac: registry.npmmirror.com/cac@6.7.14 + chokidar: registry.npmmirror.com/chokidar@3.5.3 + colorette: registry.npmmirror.com/colorette@2.0.20 + consola: registry.npmmirror.com/consola@3.2.3 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + pathe: registry.npmmirror.com/pathe@1.1.1 + perfect-debounce: registry.npmmirror.com/perfect-debounce@1.0.0 + transitivePeerDependencies: + - rollup + dev: false + + registry.npmmirror.com/@unocss/config@0.57.7: + resolution: {integrity: sha512-UG8G9orWEdk/vyDvGUToXYn/RZy/Qjpx66pLsaf5wQK37hkYsBoReAU5v8Ia/6PL1ueJlkcNXLaNpN6/yVoJvg==, tarball: https://registry.npmmirror.com/@unocss/config/-/config-0.57.7.tgz} + name: '@unocss/config' + version: 0.57.7 + engines: {node: '>=14'} + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + unconfig: registry.npmmirror.com/unconfig@0.3.11 + dev: false + + registry.npmmirror.com/@unocss/core@0.57.7: + resolution: {integrity: sha512-1d36M0CV3yC80J0pqOa5rH1BX6g2iZdtKmIb3oSBN4AWnMCSrrJEPBrUikyMq2TEQTrYWJIVDzv5A9hBUat3TA==, tarball: https://registry.npmmirror.com/@unocss/core/-/core-0.57.7.tgz} + name: '@unocss/core' + version: 0.57.7 + dev: false + + registry.npmmirror.com/@unocss/eslint-config@0.57.7(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-EJlI6rV0ZfDCphIiddHSWZVeoHdYDTVohVXGo+NfNOuRuvYWGna3n4hY3VEAiT3mWLK0/0anzHF7X0PNzCR5lQ==, tarball: https://registry.npmmirror.com/@unocss/eslint-config/-/eslint-config-0.57.7.tgz} + id: registry.npmmirror.com/@unocss/eslint-config/0.57.7 + name: '@unocss/eslint-config' + version: 0.57.7 + engines: {node: '>=14'} + dependencies: + '@unocss/eslint-plugin': registry.npmmirror.com/@unocss/eslint-plugin@0.57.7(eslint@8.54.0)(typescript@5.3.2) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + dev: false + + registry.npmmirror.com/@unocss/eslint-plugin@0.57.7(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-nwj7UJF7wCfPVl5B7cUB0xrSk6yuVMdMgABnsy4N5xBlds8cclrUO+boaTB9qzh8Lg9nfJVLB3+cW3po2SJoew==, tarball: https://registry.npmmirror.com/@unocss/eslint-plugin/-/eslint-plugin-0.57.7.tgz} + id: registry.npmmirror.com/@unocss/eslint-plugin/0.57.7 + name: '@unocss/eslint-plugin' + version: 0.57.7 + engines: {node: '>=14'} + dependencies: + '@typescript-eslint/utils': registry.npmmirror.com/@typescript-eslint/utils@6.12.0(eslint@8.54.0)(typescript@5.3.2) + '@unocss/config': registry.npmmirror.com/@unocss/config@0.57.7 + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + synckit: registry.npmmirror.com/synckit@0.8.5 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + dev: false + + registry.npmmirror.com/@unocss/extractor-arbitrary-variants@0.57.7: + resolution: {integrity: sha512-JdyhPlsgS0x4zoF8WYXDcusPcpU4ysE6Rkkit4a9+xUZEvg7vy7InH6PQ8dL8B9oY7pbxF7G6eFguUDpv9xx4Q==, tarball: https://registry.npmmirror.com/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.57.7.tgz} + name: '@unocss/extractor-arbitrary-variants' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/inspector@0.57.7: + resolution: {integrity: sha512-b9ckqn5aRsmhTdXJ5cPMKDKuNRe+825M+s9NbYcTjENnP6ellUFZo91sYF5S+LeATmU12TcwJZ83NChF4HpBSA==, tarball: https://registry.npmmirror.com/@unocss/inspector/-/inspector-0.57.7.tgz} + name: '@unocss/inspector' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/rule-utils': registry.npmmirror.com/@unocss/rule-utils@0.57.7 + gzip-size: registry.npmmirror.com/gzip-size@6.0.0 + sirv: registry.npmmirror.com/sirv@2.0.3 + dev: false + + registry.npmmirror.com/@unocss/postcss@0.57.7(postcss@8.4.31): + resolution: {integrity: sha512-13c9p5ecTvYa6inDky++8dlVuxQ0JuKaKW5A0NW3XuJ3Uz1t8Pguji+NAUddfTYEFF6GHu47L3Aac7vpI8pMcQ==, tarball: https://registry.npmmirror.com/@unocss/postcss/-/postcss-0.57.7.tgz} + id: registry.npmmirror.com/@unocss/postcss/0.57.7 + name: '@unocss/postcss' + version: 0.57.7 + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + dependencies: + '@unocss/config': registry.npmmirror.com/@unocss/config@0.57.7 + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/rule-utils': registry.npmmirror.com/@unocss/rule-utils@0.57.7 + css-tree: registry.npmmirror.com/css-tree@2.3.1 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: false + + registry.npmmirror.com/@unocss/preset-attributify@0.57.7: + resolution: {integrity: sha512-vUqfwUokNHt1FJXIuVyj2Xze9LfJdLAy62h79lNyyEISZmiDF4a4hWTKLBe0d6Kyfr33DyXMmkLp57t5YW0V3A==, tarball: https://registry.npmmirror.com/@unocss/preset-attributify/-/preset-attributify-0.57.7.tgz} + name: '@unocss/preset-attributify' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/preset-icons@0.57.7: + resolution: {integrity: sha512-s3AelKCS9CL1ArP1GanYv0XxxPrcFi+XOuQoQCwCRHDo2CiBEq3fLLMIhaUCFEWGtIy7o7wLeL5BRjMvJ2QnMg==, tarball: https://registry.npmmirror.com/@unocss/preset-icons/-/preset-icons-0.57.7.tgz} + name: '@unocss/preset-icons' + version: 0.57.7 + dependencies: + '@iconify/utils': registry.npmmirror.com/@iconify/utils@2.1.12 + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + ofetch: registry.npmmirror.com/ofetch@1.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmmirror.com/@unocss/preset-mini@0.57.7: + resolution: {integrity: sha512-YPmmh+ZIg4J7/nPMfvzD1tOfUFD+8KEFXX9ISRteooflYeosn2YytGW66d/sq97AZos9N630FJ//DvPD2wfGwA==, tarball: https://registry.npmmirror.com/@unocss/preset-mini/-/preset-mini-0.57.7.tgz} + name: '@unocss/preset-mini' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/extractor-arbitrary-variants': registry.npmmirror.com/@unocss/extractor-arbitrary-variants@0.57.7 + '@unocss/rule-utils': registry.npmmirror.com/@unocss/rule-utils@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/preset-rem-to-px@0.57.7: + resolution: {integrity: sha512-oYUiOrcslracgc2UJEdSLWTrRwwHkXYYXMDqzGyiLQmtQRoovSCPYHspPfhYNMWBc7tRRIUzNlpOQKMB1C+x+Q==, tarball: https://registry.npmmirror.com/@unocss/preset-rem-to-px/-/preset-rem-to-px-0.57.7.tgz} + name: '@unocss/preset-rem-to-px' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/preset-tagify@0.57.7: + resolution: {integrity: sha512-va25pTJ5OtbqCHFBIj8myVk0PwuSucUqTx840r/YSHka0P9th6UGRS1LU30OUgjgr7FhLaWXtJMN4gkCUtQSoA==, tarball: https://registry.npmmirror.com/@unocss/preset-tagify/-/preset-tagify-0.57.7.tgz} + name: '@unocss/preset-tagify' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/preset-typography@0.57.7: + resolution: {integrity: sha512-1QuoLhqHVRs+baaVvfH54JxmJhVuBp5jdVw3HCN/vXs1CSnq2Rm/C/+PahcnQg/KLtoW6MgK5S+/hU9TCxGRVQ==, tarball: https://registry.npmmirror.com/@unocss/preset-typography/-/preset-typography-0.57.7.tgz} + name: '@unocss/preset-typography' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/preset-mini': registry.npmmirror.com/@unocss/preset-mini@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/preset-uno@0.57.7: + resolution: {integrity: sha512-yRKvRBaPLmDSUZet5WnV1WNb3BV4EFwvB1Zbvlc3lyVp6uCksP/SYlxuUwht7JefOrfiY2sGugoBxZTyGmj/kQ==, tarball: https://registry.npmmirror.com/@unocss/preset-uno/-/preset-uno-0.57.7.tgz} + name: '@unocss/preset-uno' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/preset-mini': registry.npmmirror.com/@unocss/preset-mini@0.57.7 + '@unocss/preset-wind': registry.npmmirror.com/@unocss/preset-wind@0.57.7 + '@unocss/rule-utils': registry.npmmirror.com/@unocss/rule-utils@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/preset-web-fonts@0.57.7: + resolution: {integrity: sha512-wBPej5GeYb0D/xjMdMmpH6k/3Oe1ujx9DJys2/gtvl/rsBZpSkoWcnl+8Z3bAhooDnwL2gkJCIlpuDiRNtKvGA==, tarball: https://registry.npmmirror.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.57.7.tgz} + name: '@unocss/preset-web-fonts' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + ofetch: registry.npmmirror.com/ofetch@1.3.3 + dev: false + + registry.npmmirror.com/@unocss/preset-wind@0.57.7: + resolution: {integrity: sha512-olQ6+w0fQ84eEC1t7SF4vJyKcyawkDWSRF5YufOqeQZL3zjqBzMQi+3PUlKCstrDO1DNZ3qdcwg1vPHRmuX9VA==, tarball: https://registry.npmmirror.com/@unocss/preset-wind/-/preset-wind-0.57.7.tgz} + name: '@unocss/preset-wind' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/preset-mini': registry.npmmirror.com/@unocss/preset-mini@0.57.7 + '@unocss/rule-utils': registry.npmmirror.com/@unocss/rule-utils@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/reset@0.57.7: + resolution: {integrity: sha512-oN9024WVrMewGbornnAPIpzHeKPIfVmZ5IsZGilWR761TnI5jTjHUkswsVoFx7tZdpCN2/bqS3JK/Ah0aot3NQ==, tarball: https://registry.npmmirror.com/@unocss/reset/-/reset-0.57.7.tgz} + name: '@unocss/reset' + version: 0.57.7 + dev: false + + registry.npmmirror.com/@unocss/rule-utils@0.57.7: + resolution: {integrity: sha512-gLqbKTIetvRynLkhonu1znr+bmWnw+Cl3dFVNgZPGjiqGHd78PGS0gXQKvzuyN0iO2ADub1A7GlCWs826iEHjA==, tarball: https://registry.npmmirror.com/@unocss/rule-utils/-/rule-utils-0.57.7.tgz} + name: '@unocss/rule-utils' + version: 0.57.7 + engines: {node: '>=14'} + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + dev: false + + registry.npmmirror.com/@unocss/scope@0.57.7: + resolution: {integrity: sha512-pqWbKXcrTJ2ovVRTYFLnUX5ryEhdSXp7YfyBQT3zLtQb4nQ2XZcLTvGdWo7F+9jZ09yP7NdHscBLkeWgx+mVgw==, tarball: https://registry.npmmirror.com/@unocss/scope/-/scope-0.57.7.tgz} + name: '@unocss/scope' + version: 0.57.7 + dev: false + + registry.npmmirror.com/@unocss/transformer-attributify-jsx-babel@0.57.7: + resolution: {integrity: sha512-CqxTiT5ikOC6R/HNyBcCIVYUfeazqRbsw7X4hYKmGHO7QsnaKQFWZTpj+sSDRh3oHq+IDtcD6KB2anTEffEQNA==, tarball: https://registry.npmmirror.com/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.57.7.tgz} + name: '@unocss/transformer-attributify-jsx-babel' + version: 0.57.7 + dependencies: + '@babel/core': registry.npmmirror.com/@babel/core@7.23.3 + '@babel/plugin-syntax-jsx': registry.npmmirror.com/@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3) + '@babel/preset-typescript': registry.npmmirror.com/@babel/preset-typescript@7.23.3(@babel/core@7.23.3) + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmmirror.com/@unocss/transformer-attributify-jsx@0.57.7: + resolution: {integrity: sha512-FpCJM+jDN4Kyp7mMMN41tTWEq6pHKAXAyJoW1GwhYw6lLu9cwyXnne6t7rQ11EPU95Z2cIEMpIJo8reDkDaiPg==, tarball: https://registry.npmmirror.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.57.7.tgz} + name: '@unocss/transformer-attributify-jsx' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/transformer-compile-class@0.57.7: + resolution: {integrity: sha512-D+PyD7IOXUm/lzzoCt/yon0Gh1fIK9iKeSBvB6/BREF/ejscNzQ/ia0Pq0pid2cVvOULCSo0z2sO9zljsQtv9A==, tarball: https://registry.npmmirror.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.57.7.tgz} + name: '@unocss/transformer-compile-class' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/transformer-directives@0.57.7: + resolution: {integrity: sha512-m0n7WqU3o+1Vyh1uaeU7H4u5gJqakkRqZqTq3MR3xLCSVfORJ/5XO8r+t6VUkJtaLxcIrtYE2geAbwmGV3zSKA==, tarball: https://registry.npmmirror.com/@unocss/transformer-directives/-/transformer-directives-0.57.7.tgz} + name: '@unocss/transformer-directives' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/rule-utils': registry.npmmirror.com/@unocss/rule-utils@0.57.7 + css-tree: registry.npmmirror.com/css-tree@2.3.1 + dev: false + + registry.npmmirror.com/@unocss/transformer-variant-group@0.57.7: + resolution: {integrity: sha512-O5L5Za0IZtOWd2R66vy0k07pLlB9rCIybmUommUqKWpvd1n/pg8czQ5EkmNDprINvinKObVlGVuY4Uq/JsLM0A==, tarball: https://registry.npmmirror.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.57.7.tgz} + name: '@unocss/transformer-variant-group' + version: 0.57.7 + dependencies: + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + dev: false + + registry.npmmirror.com/@unocss/vite@0.57.7(vite@4.5.0): + resolution: {integrity: sha512-SbJrRgfc35MmgMBlHaEK4YpJVD2B0bmxH9PVgHRuDae/hOEOG0VqNP0f2ijJtX9HG3jOpQVlbEoGnUo8jsZtsw==, tarball: https://registry.npmmirror.com/@unocss/vite/-/vite-0.57.7.tgz} + id: registry.npmmirror.com/@unocss/vite/0.57.7 + name: '@unocss/vite' + version: 0.57.7 + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + dependencies: + '@ampproject/remapping': registry.npmmirror.com/@ampproject/remapping@2.2.1 + '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils@5.0.5 + '@unocss/config': registry.npmmirror.com/@unocss/config@0.57.7 + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/inspector': registry.npmmirror.com/@unocss/inspector@0.57.7 + '@unocss/scope': registry.npmmirror.com/@unocss/scope@0.57.7 + '@unocss/transformer-directives': registry.npmmirror.com/@unocss/transformer-directives@0.57.7 + chokidar: registry.npmmirror.com/chokidar@3.5.3 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + vite: registry.npmmirror.com/vite@4.5.0(sass@1.69.5) + transitivePeerDependencies: + - rollup + dev: false + + registry.npmmirror.com/@vitejs/plugin-vue@4.5.0(vite@4.5.0)(vue@3.3.8): + resolution: {integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.5.0.tgz} + id: registry.npmmirror.com/@vitejs/plugin-vue/4.5.0 + name: '@vitejs/plugin-vue' + version: 4.5.0 + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: registry.npmmirror.com/vite@4.5.0(sass@1.69.5) + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + dev: true + + registry.npmmirror.com/@vue/compiler-core@3.3.8: + resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz} + name: '@vue/compiler-core' + version: 3.3.8 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.4 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + + registry.npmmirror.com/@vue/compiler-dom@3.3.8: + resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz} + name: '@vue/compiler-dom' + version: 3.3.8 + dependencies: + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.3.8 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + + registry.npmmirror.com/@vue/compiler-sfc@3.3.8: + resolution: {integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz} + name: '@vue/compiler-sfc' + version: 3.3.8 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.4 + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.3.8 + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.3.8 + '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr@3.3.8 + '@vue/reactivity-transform': registry.npmmirror.com/@vue/reactivity-transform@3.3.8 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + postcss: registry.npmmirror.com/postcss@8.4.31 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + + registry.npmmirror.com/@vue/compiler-ssr@3.3.8: + resolution: {integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz} + name: '@vue/compiler-ssr' + version: 3.3.8 + dependencies: + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.3.8 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + + registry.npmmirror.com/@vue/devtools-api@6.5.1: + resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==, tarball: https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz} + name: '@vue/devtools-api' + version: 6.5.1 + dev: false + + registry.npmmirror.com/@vue/reactivity-transform@3.3.8: + resolution: {integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==, tarball: https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz} + name: '@vue/reactivity-transform' + version: 3.3.8 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.4 + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.3.8 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + + registry.npmmirror.com/@vue/reactivity@3.3.8: + resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==, tarball: https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.8.tgz} + name: '@vue/reactivity' + version: 3.3.8 + dependencies: + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + + registry.npmmirror.com/@vue/runtime-core@3.3.8: + resolution: {integrity: sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==, tarball: https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz} + name: '@vue/runtime-core' + version: 3.3.8 + dependencies: + '@vue/reactivity': registry.npmmirror.com/@vue/reactivity@3.3.8 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + + registry.npmmirror.com/@vue/runtime-dom@3.3.8: + resolution: {integrity: sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==, tarball: https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz} + name: '@vue/runtime-dom' + version: 3.3.8 + dependencies: + '@vue/runtime-core': registry.npmmirror.com/@vue/runtime-core@3.3.8 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + csstype: registry.npmmirror.com/csstype@3.1.2 + + registry.npmmirror.com/@vue/server-renderer@3.3.8(vue@3.3.8): + resolution: {integrity: sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==, tarball: https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz} + id: registry.npmmirror.com/@vue/server-renderer/3.3.8 + name: '@vue/server-renderer' + version: 3.3.8 + peerDependencies: + vue: 3.3.8 + dependencies: + '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr@3.3.8 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + + registry.npmmirror.com/@vue/shared@3.3.8: + resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.3.8.tgz} + name: '@vue/shared' + version: 3.3.8 + + registry.npmmirror.com/@vueuse/core@10.6.1(vue@3.3.8): + resolution: {integrity: sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q==, tarball: https://registry.npmmirror.com/@vueuse/core/-/core-10.6.1.tgz} + id: registry.npmmirror.com/@vueuse/core/10.6.1 + name: '@vueuse/core' + version: 10.6.1 + dependencies: + '@types/web-bluetooth': registry.npmmirror.com/@types/web-bluetooth@0.0.20 + '@vueuse/metadata': registry.npmmirror.com/@vueuse/metadata@10.6.1 + '@vueuse/shared': registry.npmmirror.com/@vueuse/shared@10.6.1(vue@3.3.8) + vue-demi: registry.npmmirror.com/vue-demi@0.14.6(vue@3.3.8) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + registry.npmmirror.com/@vueuse/metadata@10.6.1: + resolution: {integrity: sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw==, tarball: https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.6.1.tgz} + name: '@vueuse/metadata' + version: 10.6.1 + + registry.npmmirror.com/@vueuse/shared@10.6.1(vue@3.3.8): + resolution: {integrity: sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q==, tarball: https://registry.npmmirror.com/@vueuse/shared/-/shared-10.6.1.tgz} + id: registry.npmmirror.com/@vueuse/shared/10.6.1 + name: '@vueuse/shared' + version: 10.6.1 + dependencies: + vue-demi: registry.npmmirror.com/vue-demi@0.14.6(vue@3.3.8) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + registry.npmmirror.com/@zclzone/eslint-config@0.0.5: + resolution: {integrity: sha512-/vYNEoGGPYSC0uBKRLK3YSfIIg+MWLsrSUBFADmhf5yjLtC/CAIMYikY6hLj2bfNtz6UnNAonlKjtHQgetUoBA==, tarball: https://registry.npmmirror.com/@zclzone/eslint-config/-/eslint-config-0.0.5.tgz} + name: '@zclzone/eslint-config' + version: 0.0.5 + dependencies: + eslint: registry.npmmirror.com/eslint@8.54.0 + eslint-config-prettier: registry.npmmirror.com/eslint-config-prettier@8.10.0(eslint@8.54.0) + eslint-plugin-prettier: registry.npmmirror.com/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.54.0)(prettier@2.8.8) + eslint-plugin-vue: registry.npmmirror.com/eslint-plugin-vue@9.18.1(eslint@8.54.0) + prettier: registry.npmmirror.com/prettier@2.8.8 + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmmirror.com/acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, tarball: https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz} + id: registry.npmmirror.com/acorn-jsx/5.3.2 + name: acorn-jsx + version: 5.3.2 + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: registry.npmmirror.com/acorn@8.11.2 + + registry.npmmirror.com/acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==, tarball: https://registry.npmmirror.com/acorn/-/acorn-8.11.2.tgz} + name: acorn + version: 8.11.2 + engines: {node: '>=0.4.0'} + hasBin: true + + registry.npmmirror.com/adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==, tarball: https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz} + name: adler-32 + version: 1.3.1 + engines: {node: '>=0.8'} + dev: false + + registry.npmmirror.com/ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, tarball: https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz} + name: ajv + version: 6.12.6 + dependencies: + fast-deep-equal: registry.npmmirror.com/fast-deep-equal@3.1.3 + fast-json-stable-stringify: registry.npmmirror.com/fast-json-stable-stringify@2.1.0 + json-schema-traverse: registry.npmmirror.com/json-schema-traverse@0.4.1 + uri-js: registry.npmmirror.com/uri-js@4.4.1 + + registry.npmmirror.com/ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz} + name: ansi-regex + version: 5.0.1 + engines: {node: '>=8'} + + registry.npmmirror.com/ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz} + name: ansi-regex + version: 6.0.1 + engines: {node: '>=12'} + dev: true + + registry.npmmirror.com/ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz} + name: ansi-styles + version: 3.2.1 + engines: {node: '>=4'} + dependencies: + color-convert: registry.npmmirror.com/color-convert@1.9.3 + dev: false + + registry.npmmirror.com/ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz} + name: ansi-styles + version: 4.3.0 + engines: {node: '>=8'} + dependencies: + color-convert: registry.npmmirror.com/color-convert@2.0.1 + + registry.npmmirror.com/ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz} + name: ansi-styles + version: 6.2.1 + engines: {node: '>=12'} + dev: true + + registry.npmmirror.com/anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, tarball: https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz} + name: anymatch + version: 3.1.3 + engines: {node: '>= 8'} + dependencies: + normalize-path: registry.npmmirror.com/normalize-path@3.0.0 + picomatch: registry.npmmirror.com/picomatch@2.3.1 + + registry.npmmirror.com/argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, tarball: https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz} + name: argparse + version: 2.0.1 + + registry.npmmirror.com/array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, tarball: https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz} + name: array-union + version: 2.1.0 + engines: {node: '>=8'} + dev: false + + registry.npmmirror.com/async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz} + name: async-validator + version: 4.2.5 + dev: false + + registry.npmmirror.com/async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==, tarball: https://registry.npmmirror.com/async/-/async-3.2.5.tgz} + name: async + version: 3.2.5 + dev: true + + registry.npmmirror.com/asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz} + name: asynckit + version: 0.4.0 + dev: false + + registry.npmmirror.com/axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==, tarball: https://registry.npmmirror.com/axios/-/axios-1.6.2.tgz} + name: axios + version: 1.6.2 + dependencies: + follow-redirects: registry.npmmirror.com/follow-redirects@1.15.3 + form-data: registry.npmmirror.com/form-data@4.0.0 + proxy-from-env: registry.npmmirror.com/proxy-from-env@1.1.0 + transitivePeerDependencies: + - debug + dev: false + + registry.npmmirror.com/balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz} + name: balanced-match + version: 1.0.2 + + registry.npmmirror.com/big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==, tarball: https://registry.npmmirror.com/big-integer/-/big-integer-1.6.52.tgz} + name: big-integer + version: 1.6.52 + engines: {node: '>=0.6'} + dev: false + + registry.npmmirror.com/binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, tarball: https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz} + name: binary-extensions + version: 2.2.0 + engines: {node: '>=8'} + + registry.npmmirror.com/boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, tarball: https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz} + name: boolbase + version: 1.0.0 + dev: true + + registry.npmmirror.com/bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==, tarball: https://registry.npmmirror.com/bplist-parser/-/bplist-parser-0.2.0.tgz} + name: bplist-parser + version: 0.2.0 + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: registry.npmmirror.com/big-integer@1.6.52 + dev: false + + registry.npmmirror.com/brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz} + name: brace-expansion + version: 1.1.11 + dependencies: + balanced-match: registry.npmmirror.com/balanced-match@1.0.2 + concat-map: registry.npmmirror.com/concat-map@0.0.1 + + registry.npmmirror.com/brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz} + name: brace-expansion + version: 2.0.1 + dependencies: + balanced-match: registry.npmmirror.com/balanced-match@1.0.2 + dev: true + + registry.npmmirror.com/braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, tarball: https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz} + name: braces + version: 3.0.2 + engines: {node: '>=8'} + dependencies: + fill-range: registry.npmmirror.com/fill-range@7.0.1 + + registry.npmmirror.com/browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==, tarball: https://registry.npmmirror.com/browserslist/-/browserslist-4.22.1.tgz} + name: browserslist + version: 4.22.1 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: registry.npmmirror.com/caniuse-lite@1.0.30001564 + electron-to-chromium: registry.npmmirror.com/electron-to-chromium@1.4.594 + node-releases: registry.npmmirror.com/node-releases@2.0.13 + update-browserslist-db: registry.npmmirror.com/update-browserslist-db@1.0.13(browserslist@4.22.1) + dev: false + + registry.npmmirror.com/buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, tarball: https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz} + name: buffer-from + version: 1.1.2 + dev: true + + registry.npmmirror.com/bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==, tarball: https://registry.npmmirror.com/bundle-name/-/bundle-name-3.0.0.tgz} + name: bundle-name + version: 3.0.0 + engines: {node: '>=12'} + dependencies: + run-applescript: registry.npmmirror.com/run-applescript@5.0.0 + dev: false + + registry.npmmirror.com/cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, tarball: https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz} + name: cac + version: 6.7.14 + engines: {node: '>=8'} + dev: false + + registry.npmmirror.com/callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, tarball: https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz} + name: callsites + version: 3.1.0 + engines: {node: '>=6'} + + registry.npmmirror.com/camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, tarball: https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz} + name: camel-case + version: 4.1.2 + dependencies: + pascal-case: registry.npmmirror.com/pascal-case@3.1.2 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: true + + registry.npmmirror.com/caniuse-lite@1.0.30001564: + resolution: {integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz} + name: caniuse-lite + version: 1.0.30001564 + dev: false + + registry.npmmirror.com/cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==, tarball: https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz} + name: cfb + version: 1.2.2 + engines: {node: '>=0.8'} + dependencies: + adler-32: registry.npmmirror.com/adler-32@1.3.1 + crc-32: registry.npmmirror.com/crc-32@1.2.2 + dev: false + + registry.npmmirror.com/chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, tarball: https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz} + name: chalk + version: 2.4.2 + engines: {node: '>=4'} + dependencies: + ansi-styles: registry.npmmirror.com/ansi-styles@3.2.1 + escape-string-regexp: registry.npmmirror.com/escape-string-regexp@1.0.5 + supports-color: registry.npmmirror.com/supports-color@5.5.0 + dev: false + + registry.npmmirror.com/chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, tarball: https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz} + name: chalk + version: 4.1.2 + engines: {node: '>=10'} + dependencies: + ansi-styles: registry.npmmirror.com/ansi-styles@4.3.0 + supports-color: registry.npmmirror.com/supports-color@7.2.0 + + registry.npmmirror.com/chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz} + name: chokidar + version: 3.5.3 + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: registry.npmmirror.com/anymatch@3.1.3 + braces: registry.npmmirror.com/braces@3.0.2 + glob-parent: registry.npmmirror.com/glob-parent@5.1.2 + is-binary-path: registry.npmmirror.com/is-binary-path@2.1.0 + is-glob: registry.npmmirror.com/is-glob@4.0.3 + normalize-path: registry.npmmirror.com/normalize-path@3.0.0 + readdirp: registry.npmmirror.com/readdirp@3.6.0 + optionalDependencies: + fsevents: registry.npmmirror.com/fsevents@2.3.3 + + registry.npmmirror.com/clean-css@5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==, tarball: https://registry.npmmirror.com/clean-css/-/clean-css-5.3.2.tgz} + name: clean-css + version: 5.3.2 + engines: {node: '>= 10.0'} + dependencies: + source-map: registry.npmmirror.com/source-map@0.6.1 + dev: true + + registry.npmmirror.com/cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, tarball: https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz} + name: cliui + version: 8.0.1 + engines: {node: '>=12'} + dependencies: + string-width: registry.npmmirror.com/string-width@4.2.3 + strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 + wrap-ansi: registry.npmmirror.com/wrap-ansi@7.0.0 + dev: true + + registry.npmmirror.com/codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==, tarball: https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz} + name: codepage + version: 1.15.0 + engines: {node: '>=0.8'} + dev: false + + registry.npmmirror.com/color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, tarball: https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz} + name: color-convert + version: 1.9.3 + dependencies: + color-name: registry.npmmirror.com/color-name@1.1.3 + dev: false + + registry.npmmirror.com/color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, tarball: https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz} + name: color-convert + version: 2.0.1 + engines: {node: '>=7.0.0'} + dependencies: + color-name: registry.npmmirror.com/color-name@1.1.4 + + registry.npmmirror.com/color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, tarball: https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz} + name: color-name + version: 1.1.3 + dev: false + + registry.npmmirror.com/color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, tarball: https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz} + name: color-name + version: 1.1.4 + + registry.npmmirror.com/colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, tarball: https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz} + name: colorette + version: 2.0.20 + + registry.npmmirror.com/combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz} + name: combined-stream + version: 1.0.8 + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: registry.npmmirror.com/delayed-stream@1.0.0 + dev: false + + registry.npmmirror.com/commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, tarball: https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz} + name: commander + version: 2.20.3 + dev: true + + registry.npmmirror.com/commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==, tarball: https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz} + name: commander + version: 8.3.0 + engines: {node: '>= 12'} + dev: true + + registry.npmmirror.com/concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, tarball: https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz} + name: concat-map + version: 0.0.1 + + registry.npmmirror.com/connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==, tarball: https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz} + name: connect-history-api-fallback + version: 1.6.0 + engines: {node: '>=0.8'} + dev: true + + registry.npmmirror.com/consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==, tarball: https://registry.npmmirror.com/consola/-/consola-2.15.3.tgz} + name: consola + version: 2.15.3 + dev: true + + registry.npmmirror.com/consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==, tarball: https://registry.npmmirror.com/consola/-/consola-3.2.3.tgz} + name: consola + version: 3.2.3 + engines: {node: ^14.18.0 || >=16.10.0} + dev: false + + registry.npmmirror.com/convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, tarball: https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz} + name: convert-source-map + version: 2.0.0 + dev: false + + registry.npmmirror.com/crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==, tarball: https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz} + name: crc-32 + version: 1.2.2 + engines: {node: '>=0.8'} + hasBin: true + dev: false + + registry.npmmirror.com/cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, tarball: https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz} + name: cross-spawn + version: 7.0.3 + engines: {node: '>= 8'} + dependencies: + path-key: registry.npmmirror.com/path-key@3.1.1 + shebang-command: registry.npmmirror.com/shebang-command@2.0.0 + which: registry.npmmirror.com/which@2.0.2 + + registry.npmmirror.com/css-render@0.15.12: + resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==, tarball: https://registry.npmmirror.com/css-render/-/css-render-0.15.12.tgz} + name: css-render + version: 0.15.12 + dependencies: + '@emotion/hash': registry.npmmirror.com/@emotion/hash@0.8.0 + csstype: registry.npmmirror.com/csstype@3.0.11 + dev: false + + registry.npmmirror.com/css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==, tarball: https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz} + name: css-select + version: 4.3.0 + dependencies: + boolbase: registry.npmmirror.com/boolbase@1.0.0 + css-what: registry.npmmirror.com/css-what@6.1.0 + domhandler: registry.npmmirror.com/domhandler@4.3.1 + domutils: registry.npmmirror.com/domutils@2.8.0 + nth-check: registry.npmmirror.com/nth-check@2.1.1 + dev: true + + registry.npmmirror.com/css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, tarball: https://registry.npmmirror.com/css-tree/-/css-tree-2.3.1.tgz} + name: css-tree + version: 2.3.1 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: registry.npmmirror.com/mdn-data@2.0.30 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + dev: false + + registry.npmmirror.com/css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, tarball: https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz} + name: css-what + version: 6.1.0 + engines: {node: '>= 6'} + dev: true + + registry.npmmirror.com/cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz} + name: cssesc + version: 3.0.0 + engines: {node: '>=4'} + hasBin: true + dev: true + + registry.npmmirror.com/csstype@3.0.11: + resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==, tarball: https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz} + name: csstype + version: 3.0.11 + dev: false + + registry.npmmirror.com/csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==, tarball: https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz} + name: csstype + version: 3.1.2 + + registry.npmmirror.com/date-fns-tz@2.0.0(date-fns@2.30.0): + resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==, tarball: https://registry.npmmirror.com/date-fns-tz/-/date-fns-tz-2.0.0.tgz} + id: registry.npmmirror.com/date-fns-tz/2.0.0 + name: date-fns-tz + version: 2.0.0 + peerDependencies: + date-fns: '>=2.0.0' + dependencies: + date-fns: registry.npmmirror.com/date-fns@2.30.0 + dev: false + + registry.npmmirror.com/date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==, tarball: https://registry.npmmirror.com/date-fns/-/date-fns-2.30.0.tgz} + name: date-fns + version: 2.30.0 + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.4 + dev: false + + registry.npmmirror.com/dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==, tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz} + name: dayjs + version: 1.11.10 + dev: false + + registry.npmmirror.com/debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, tarball: https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz} + name: debug + version: 4.3.4 + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: registry.npmmirror.com/ms@2.1.2 + + registry.npmmirror.com/deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, tarball: https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz} + name: deep-is + version: 0.1.4 + + registry.npmmirror.com/default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==, tarball: https://registry.npmmirror.com/default-browser-id/-/default-browser-id-3.0.0.tgz} + name: default-browser-id + version: 3.0.0 + engines: {node: '>=12'} + dependencies: + bplist-parser: registry.npmmirror.com/bplist-parser@0.2.0 + untildify: registry.npmmirror.com/untildify@4.0.0 + dev: false + + registry.npmmirror.com/default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==, tarball: https://registry.npmmirror.com/default-browser/-/default-browser-4.0.0.tgz} + name: default-browser + version: 4.0.0 + engines: {node: '>=14.16'} + dependencies: + bundle-name: registry.npmmirror.com/bundle-name@3.0.0 + default-browser-id: registry.npmmirror.com/default-browser-id@3.0.0 + execa: registry.npmmirror.com/execa@7.2.0 + titleize: registry.npmmirror.com/titleize@3.0.0 + dev: false + + registry.npmmirror.com/define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, tarball: https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz} + name: define-lazy-prop + version: 2.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmmirror.com/define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, tarball: https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz} + name: define-lazy-prop + version: 3.0.0 + engines: {node: '>=12'} + dev: false + + registry.npmmirror.com/defu@6.1.3: + resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==, tarball: https://registry.npmmirror.com/defu/-/defu-6.1.3.tgz} + name: defu + version: 6.1.3 + dev: false + + registry.npmmirror.com/delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, tarball: https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz} + name: delayed-stream + version: 1.0.0 + engines: {node: '>=0.4.0'} + dev: false + + registry.npmmirror.com/destr@2.0.2: + resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==, tarball: https://registry.npmmirror.com/destr/-/destr-2.0.2.tgz} + name: destr + version: 2.0.2 + dev: false + + registry.npmmirror.com/dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, tarball: https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz} + name: dir-glob + version: 3.0.1 + engines: {node: '>=8'} + dependencies: + path-type: registry.npmmirror.com/path-type@4.0.0 + dev: false + + registry.npmmirror.com/doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, tarball: https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz} + name: doctrine + version: 3.0.0 + engines: {node: '>=6.0.0'} + dependencies: + esutils: registry.npmmirror.com/esutils@2.0.3 + + registry.npmmirror.com/dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==, tarball: https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz} + name: dom-serializer + version: 1.4.1 + dependencies: + domelementtype: registry.npmmirror.com/domelementtype@2.3.0 + domhandler: registry.npmmirror.com/domhandler@4.3.1 + entities: registry.npmmirror.com/entities@2.2.0 + dev: true + + registry.npmmirror.com/domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, tarball: https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz} + name: domelementtype + version: 2.3.0 + dev: true + + registry.npmmirror.com/domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==, tarball: https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz} + name: domhandler + version: 4.3.1 + engines: {node: '>= 4'} + dependencies: + domelementtype: registry.npmmirror.com/domelementtype@2.3.0 + dev: true + + registry.npmmirror.com/domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==, tarball: https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz} + name: domutils + version: 2.8.0 + dependencies: + dom-serializer: registry.npmmirror.com/dom-serializer@1.4.1 + domelementtype: registry.npmmirror.com/domelementtype@2.3.0 + domhandler: registry.npmmirror.com/domhandler@4.3.1 + dev: true + + registry.npmmirror.com/dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, tarball: https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz} + name: dot-case + version: 3.0.4 + dependencies: + no-case: registry.npmmirror.com/no-case@3.0.4 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: true + + registry.npmmirror.com/dotenv-expand@8.0.3: + resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==, tarball: https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-8.0.3.tgz} + name: dotenv-expand + version: 8.0.3 + engines: {node: '>=12'} + dev: true + + registry.npmmirror.com/dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==, tarball: https://registry.npmmirror.com/dotenv/-/dotenv-16.3.1.tgz} + name: dotenv + version: 16.3.1 + engines: {node: '>=12'} + dev: true + + registry.npmmirror.com/duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, tarball: https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz} + name: duplexer + version: 0.1.2 + dev: false + + registry.npmmirror.com/eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, tarball: https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz} + name: eastasianwidth + version: 0.2.0 + dev: true + + registry.npmmirror.com/echarts@5.4.3: + resolution: {integrity: sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==, tarball: https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz} + name: echarts + version: 5.4.3 + dependencies: + tslib: registry.npmmirror.com/tslib@2.3.0 + zrender: registry.npmmirror.com/zrender@5.4.4 + dev: false + + registry.npmmirror.com/ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==, tarball: https://registry.npmmirror.com/ejs/-/ejs-3.1.9.tgz} + name: ejs + version: 3.1.9 + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: registry.npmmirror.com/jake@10.8.7 + dev: true + + registry.npmmirror.com/electron-to-chromium@1.4.594: + resolution: {integrity: sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==, tarball: https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz} + name: electron-to-chromium + version: 1.4.594 + dev: false + + registry.npmmirror.com/emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, tarball: https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz} + name: emoji-regex + version: 8.0.0 + dev: true + + registry.npmmirror.com/emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, tarball: https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz} + name: emoji-regex + version: 9.2.2 + dev: true + + registry.npmmirror.com/entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, tarball: https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz} + name: entities + version: 2.2.0 + dev: true + + registry.npmmirror.com/esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz} + name: esbuild + version: 0.18.20 + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm@0.18.20 + '@esbuild/android-arm64': registry.npmmirror.com/@esbuild/android-arm64@0.18.20 + '@esbuild/android-x64': registry.npmmirror.com/@esbuild/android-x64@0.18.20 + '@esbuild/darwin-arm64': registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20 + '@esbuild/darwin-x64': registry.npmmirror.com/@esbuild/darwin-x64@0.18.20 + '@esbuild/freebsd-arm64': registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20 + '@esbuild/freebsd-x64': registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20 + '@esbuild/linux-arm': registry.npmmirror.com/@esbuild/linux-arm@0.18.20 + '@esbuild/linux-arm64': registry.npmmirror.com/@esbuild/linux-arm64@0.18.20 + '@esbuild/linux-ia32': registry.npmmirror.com/@esbuild/linux-ia32@0.18.20 + '@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64@0.18.20 + '@esbuild/linux-mips64el': registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20 + '@esbuild/linux-ppc64': registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20 + '@esbuild/linux-riscv64': registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20 + '@esbuild/linux-s390x': registry.npmmirror.com/@esbuild/linux-s390x@0.18.20 + '@esbuild/linux-x64': registry.npmmirror.com/@esbuild/linux-x64@0.18.20 + '@esbuild/netbsd-x64': registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20 + '@esbuild/openbsd-x64': registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20 + '@esbuild/sunos-x64': registry.npmmirror.com/@esbuild/sunos-x64@0.18.20 + '@esbuild/win32-arm64': registry.npmmirror.com/@esbuild/win32-arm64@0.18.20 + '@esbuild/win32-ia32': registry.npmmirror.com/@esbuild/win32-ia32@0.18.20 + '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64@0.18.20 + + registry.npmmirror.com/escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, tarball: https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz} + name: escalade + version: 3.1.1 + engines: {node: '>=6'} + + registry.npmmirror.com/escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz} + name: escape-string-regexp + version: 1.0.5 + engines: {node: '>=0.8.0'} + dev: false + + registry.npmmirror.com/escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz} + name: escape-string-regexp + version: 4.0.0 + engines: {node: '>=10'} + + registry.npmmirror.com/escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz} + name: escape-string-regexp + version: 5.0.0 + engines: {node: '>=12'} + dev: true + + registry.npmmirror.com/eslint-config-prettier@8.10.0(eslint@8.54.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==, tarball: https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz} + id: registry.npmmirror.com/eslint-config-prettier/8.10.0 + name: eslint-config-prettier + version: 8.10.0 + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: registry.npmmirror.com/eslint@8.54.0 + dev: true + + registry.npmmirror.com/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.54.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==, tarball: https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz} + id: registry.npmmirror.com/eslint-plugin-prettier/4.2.1 + name: eslint-plugin-prettier + version: 4.2.1 + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: registry.npmmirror.com/eslint@8.54.0 + eslint-config-prettier: registry.npmmirror.com/eslint-config-prettier@8.10.0(eslint@8.54.0) + prettier: registry.npmmirror.com/prettier@2.8.8 + prettier-linter-helpers: registry.npmmirror.com/prettier-linter-helpers@1.0.0 + dev: true + + registry.npmmirror.com/eslint-plugin-vue@9.18.1(eslint@8.54.0): + resolution: {integrity: sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==, tarball: https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz} + id: registry.npmmirror.com/eslint-plugin-vue/9.18.1 + name: eslint-plugin-vue + version: 9.18.1 + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': registry.npmmirror.com/@eslint-community/eslint-utils@4.4.0(eslint@8.54.0) + eslint: registry.npmmirror.com/eslint@8.54.0 + natural-compare: registry.npmmirror.com/natural-compare@1.4.0 + nth-check: registry.npmmirror.com/nth-check@2.1.1 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + semver: registry.npmmirror.com/semver@7.5.4 + vue-eslint-parser: registry.npmmirror.com/vue-eslint-parser@9.3.2(eslint@8.54.0) + xml-name-validator: registry.npmmirror.com/xml-name-validator@4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmmirror.com/eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, tarball: https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz} + name: eslint-scope + version: 7.2.2 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: registry.npmmirror.com/esrecurse@4.3.0 + estraverse: registry.npmmirror.com/estraverse@5.3.0 + + registry.npmmirror.com/eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, tarball: https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz} + name: eslint-visitor-keys + version: 3.4.3 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + registry.npmmirror.com/eslint@8.54.0: + resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==, tarball: https://registry.npmmirror.com/eslint/-/eslint-8.54.0.tgz} + name: eslint + version: 8.54.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': registry.npmmirror.com/@eslint-community/eslint-utils@4.4.0(eslint@8.54.0) + '@eslint-community/regexpp': registry.npmmirror.com/@eslint-community/regexpp@4.10.0 + '@eslint/eslintrc': registry.npmmirror.com/@eslint/eslintrc@2.1.3 + '@eslint/js': registry.npmmirror.com/@eslint/js@8.54.0 + '@humanwhocodes/config-array': registry.npmmirror.com/@humanwhocodes/config-array@0.11.13 + '@humanwhocodes/module-importer': registry.npmmirror.com/@humanwhocodes/module-importer@1.0.1 + '@nodelib/fs.walk': registry.npmmirror.com/@nodelib/fs.walk@1.2.8 + '@ungap/structured-clone': registry.npmmirror.com/@ungap/structured-clone@1.2.0 + ajv: registry.npmmirror.com/ajv@6.12.6 + chalk: registry.npmmirror.com/chalk@4.1.2 + cross-spawn: registry.npmmirror.com/cross-spawn@7.0.3 + debug: registry.npmmirror.com/debug@4.3.4 + doctrine: registry.npmmirror.com/doctrine@3.0.0 + escape-string-regexp: registry.npmmirror.com/escape-string-regexp@4.0.0 + eslint-scope: registry.npmmirror.com/eslint-scope@7.2.2 + eslint-visitor-keys: registry.npmmirror.com/eslint-visitor-keys@3.4.3 + espree: registry.npmmirror.com/espree@9.6.1 + esquery: registry.npmmirror.com/esquery@1.5.0 + esutils: registry.npmmirror.com/esutils@2.0.3 + fast-deep-equal: registry.npmmirror.com/fast-deep-equal@3.1.3 + file-entry-cache: registry.npmmirror.com/file-entry-cache@6.0.1 + find-up: registry.npmmirror.com/find-up@5.0.0 + glob-parent: registry.npmmirror.com/glob-parent@6.0.2 + globals: registry.npmmirror.com/globals@13.23.0 + graphemer: registry.npmmirror.com/graphemer@1.4.0 + ignore: registry.npmmirror.com/ignore@5.3.0 + imurmurhash: registry.npmmirror.com/imurmurhash@0.1.4 + is-glob: registry.npmmirror.com/is-glob@4.0.3 + is-path-inside: registry.npmmirror.com/is-path-inside@3.0.3 + js-yaml: registry.npmmirror.com/js-yaml@4.1.0 + json-stable-stringify-without-jsonify: registry.npmmirror.com/json-stable-stringify-without-jsonify@1.0.1 + levn: registry.npmmirror.com/levn@0.4.1 + lodash.merge: registry.npmmirror.com/lodash.merge@4.6.2 + minimatch: registry.npmmirror.com/minimatch@3.1.2 + natural-compare: registry.npmmirror.com/natural-compare@1.4.0 + optionator: registry.npmmirror.com/optionator@0.9.3 + strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 + text-table: registry.npmmirror.com/text-table@0.2.0 + transitivePeerDependencies: + - supports-color + + registry.npmmirror.com/esno@0.17.0: + resolution: {integrity: sha512-w78cQGlptQfsBYfootUCitsKS+MD74uR5L6kNsvwVkJsfzEepIafbvWsx2xK4rcFP4IUftt4F6J8EhagUxX+Bg==, tarball: https://registry.npmmirror.com/esno/-/esno-0.17.0.tgz} + name: esno + version: 0.17.0 + hasBin: true + dependencies: + tsx: registry.npmmirror.com/tsx@3.14.0 + dev: true + + registry.npmmirror.com/espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, tarball: https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz} + name: espree + version: 9.6.1 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: registry.npmmirror.com/acorn@8.11.2 + acorn-jsx: registry.npmmirror.com/acorn-jsx@5.3.2(acorn@8.11.2) + eslint-visitor-keys: registry.npmmirror.com/eslint-visitor-keys@3.4.3 + + registry.npmmirror.com/esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, tarball: https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz} + name: esquery + version: 1.5.0 + engines: {node: '>=0.10'} + dependencies: + estraverse: registry.npmmirror.com/estraverse@5.3.0 + + registry.npmmirror.com/esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, tarball: https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz} + name: esrecurse + version: 4.3.0 + engines: {node: '>=4.0'} + dependencies: + estraverse: registry.npmmirror.com/estraverse@5.3.0 + + registry.npmmirror.com/estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, tarball: https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz} + name: estraverse + version: 5.3.0 + engines: {node: '>=4.0'} + + registry.npmmirror.com/estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz} + name: estree-walker + version: 2.0.2 + + registry.npmmirror.com/esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, tarball: https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz} + name: esutils + version: 2.0.3 + engines: {node: '>=0.10.0'} + + registry.npmmirror.com/evtd@0.2.4: + resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==, tarball: https://registry.npmmirror.com/evtd/-/evtd-0.2.4.tgz} + name: evtd + version: 0.2.4 + dev: false + + registry.npmmirror.com/execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, tarball: https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz} + name: execa + version: 5.1.1 + engines: {node: '>=10'} + dependencies: + cross-spawn: registry.npmmirror.com/cross-spawn@7.0.3 + get-stream: registry.npmmirror.com/get-stream@6.0.1 + human-signals: registry.npmmirror.com/human-signals@2.1.0 + is-stream: registry.npmmirror.com/is-stream@2.0.1 + merge-stream: registry.npmmirror.com/merge-stream@2.0.0 + npm-run-path: registry.npmmirror.com/npm-run-path@4.0.1 + onetime: registry.npmmirror.com/onetime@5.1.2 + signal-exit: registry.npmmirror.com/signal-exit@3.0.7 + strip-final-newline: registry.npmmirror.com/strip-final-newline@2.0.0 + dev: false + + registry.npmmirror.com/execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==, tarball: https://registry.npmmirror.com/execa/-/execa-7.2.0.tgz} + name: execa + version: 7.2.0 + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: registry.npmmirror.com/cross-spawn@7.0.3 + get-stream: registry.npmmirror.com/get-stream@6.0.1 + human-signals: registry.npmmirror.com/human-signals@4.3.1 + is-stream: registry.npmmirror.com/is-stream@3.0.0 + merge-stream: registry.npmmirror.com/merge-stream@2.0.0 + npm-run-path: registry.npmmirror.com/npm-run-path@5.1.0 + onetime: registry.npmmirror.com/onetime@6.0.0 + signal-exit: registry.npmmirror.com/signal-exit@3.0.7 + strip-final-newline: registry.npmmirror.com/strip-final-newline@3.0.0 + dev: false + + registry.npmmirror.com/fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, tarball: https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} + name: fast-deep-equal + version: 3.1.3 + + registry.npmmirror.com/fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, tarball: https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz} + name: fast-diff + version: 1.3.0 + dev: true + + registry.npmmirror.com/fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, tarball: https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz} + name: fast-glob + version: 3.3.2 + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': registry.npmmirror.com/@nodelib/fs.stat@2.0.5 + '@nodelib/fs.walk': registry.npmmirror.com/@nodelib/fs.walk@1.2.8 + glob-parent: registry.npmmirror.com/glob-parent@5.1.2 + merge2: registry.npmmirror.com/merge2@1.4.1 + micromatch: registry.npmmirror.com/micromatch@4.0.5 + + registry.npmmirror.com/fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, tarball: https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} + name: fast-json-stable-stringify + version: 2.1.0 + + registry.npmmirror.com/fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz} + name: fast-levenshtein + version: 2.0.6 + + registry.npmmirror.com/fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, tarball: https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz} + name: fastq + version: 1.15.0 + dependencies: + reusify: registry.npmmirror.com/reusify@1.0.4 + + registry.npmmirror.com/file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, tarball: https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz} + name: file-entry-cache + version: 6.0.1 + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: registry.npmmirror.com/flat-cache@3.2.0 + + registry.npmmirror.com/filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==, tarball: https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz} + name: filelist + version: 1.0.4 + dependencies: + minimatch: registry.npmmirror.com/minimatch@5.1.6 + dev: true + + registry.npmmirror.com/fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, tarball: https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz} + name: fill-range + version: 7.0.1 + engines: {node: '>=8'} + dependencies: + to-regex-range: registry.npmmirror.com/to-regex-range@5.0.1 + + registry.npmmirror.com/find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, tarball: https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz} + name: find-up + version: 5.0.0 + engines: {node: '>=10'} + dependencies: + locate-path: registry.npmmirror.com/locate-path@6.0.0 + path-exists: registry.npmmirror.com/path-exists@4.0.0 + + registry.npmmirror.com/flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==, tarball: https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz} + name: flat-cache + version: 3.2.0 + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: registry.npmmirror.com/flatted@3.2.9 + keyv: registry.npmmirror.com/keyv@4.5.4 + rimraf: registry.npmmirror.com/rimraf@3.0.2 + + registry.npmmirror.com/flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==, tarball: https://registry.npmmirror.com/flatted/-/flatted-3.2.9.tgz} + name: flatted + version: 3.2.9 + + registry.npmmirror.com/follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.3.tgz} + name: follow-redirects + version: 1.15.3 + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + registry.npmmirror.com/foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==, tarball: https://registry.npmmirror.com/foreground-child/-/foreground-child-3.1.1.tgz} + name: foreground-child + version: 3.1.1 + engines: {node: '>=14'} + dependencies: + cross-spawn: registry.npmmirror.com/cross-spawn@7.0.3 + signal-exit: registry.npmmirror.com/signal-exit@4.1.0 + dev: true + + registry.npmmirror.com/form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, tarball: https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz} + name: form-data + version: 4.0.0 + engines: {node: '>= 6'} + dependencies: + asynckit: registry.npmmirror.com/asynckit@0.4.0 + combined-stream: registry.npmmirror.com/combined-stream@1.0.8 + mime-types: registry.npmmirror.com/mime-types@2.1.35 + dev: false + + registry.npmmirror.com/frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==, tarball: https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz} + name: frac + version: 1.1.2 + engines: {node: '>=0.8'} + dev: false + + registry.npmmirror.com/fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz} + name: fs-extra + version: 10.1.0 + engines: {node: '>=12'} + dependencies: + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.11 + jsonfile: registry.npmmirror.com/jsonfile@6.1.0 + universalify: registry.npmmirror.com/universalify@2.0.1 + dev: true + + registry.npmmirror.com/fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-11.1.1.tgz} + name: fs-extra + version: 11.1.1 + engines: {node: '>=14.14'} + dependencies: + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.11 + jsonfile: registry.npmmirror.com/jsonfile@6.1.0 + universalify: registry.npmmirror.com/universalify@2.0.1 + dev: true + + registry.npmmirror.com/fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, tarball: https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz} + name: fs.realpath + version: 1.0.0 + + registry.npmmirror.com/fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz} + name: fsevents + version: 2.3.3 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + registry.npmmirror.com/function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz} + name: function-bind + version: 1.1.2 + dev: true + + registry.npmmirror.com/gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, tarball: https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz} + name: gensync + version: 1.0.0-beta.2 + engines: {node: '>=6.9.0'} + dev: false + + registry.npmmirror.com/get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, tarball: https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz} + name: get-caller-file + version: 2.0.5 + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + registry.npmmirror.com/get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, tarball: https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz} + name: get-stream + version: 6.0.1 + engines: {node: '>=10'} + dev: false + + registry.npmmirror.com/get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==, tarball: https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz} + name: get-tsconfig + version: 4.7.2 + dependencies: + resolve-pkg-maps: registry.npmmirror.com/resolve-pkg-maps@1.0.0 + dev: true + + registry.npmmirror.com/glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, tarball: https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz} + name: glob-parent + version: 5.1.2 + engines: {node: '>= 6'} + dependencies: + is-glob: registry.npmmirror.com/is-glob@4.0.3 + + registry.npmmirror.com/glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, tarball: https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz} + name: glob-parent + version: 6.0.2 + engines: {node: '>=10.13.0'} + dependencies: + is-glob: registry.npmmirror.com/is-glob@4.0.3 + + registry.npmmirror.com/glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==, tarball: https://registry.npmmirror.com/glob/-/glob-10.3.10.tgz} + name: glob + version: 10.3.10 + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: registry.npmmirror.com/foreground-child@3.1.1 + jackspeak: registry.npmmirror.com/jackspeak@2.3.6 + minimatch: registry.npmmirror.com/minimatch@9.0.3 + minipass: registry.npmmirror.com/minipass@7.0.4 + path-scurry: registry.npmmirror.com/path-scurry@1.10.1 + dev: true + + registry.npmmirror.com/glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, tarball: https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz} + name: glob + version: 7.2.3 + dependencies: + fs.realpath: registry.npmmirror.com/fs.realpath@1.0.0 + inflight: registry.npmmirror.com/inflight@1.0.6 + inherits: registry.npmmirror.com/inherits@2.0.4 + minimatch: registry.npmmirror.com/minimatch@3.1.2 + once: registry.npmmirror.com/once@1.4.0 + path-is-absolute: registry.npmmirror.com/path-is-absolute@1.0.1 + + registry.npmmirror.com/globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, tarball: https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz} + name: globals + version: 11.12.0 + engines: {node: '>=4'} + dev: false + + registry.npmmirror.com/globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==, tarball: https://registry.npmmirror.com/globals/-/globals-13.23.0.tgz} + name: globals + version: 13.23.0 + engines: {node: '>=8'} + dependencies: + type-fest: registry.npmmirror.com/type-fest@0.20.2 + + registry.npmmirror.com/globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, tarball: https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz} + name: globby + version: 11.1.0 + engines: {node: '>=10'} + dependencies: + array-union: registry.npmmirror.com/array-union@2.1.0 + dir-glob: registry.npmmirror.com/dir-glob@3.0.1 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + ignore: registry.npmmirror.com/ignore@5.3.0 + merge2: registry.npmmirror.com/merge2@1.4.1 + slash: registry.npmmirror.com/slash@3.0.0 + dev: false + + registry.npmmirror.com/graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz} + name: graceful-fs + version: 4.2.11 + dev: true + + registry.npmmirror.com/graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, tarball: https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz} + name: graphemer + version: 1.4.0 + + registry.npmmirror.com/gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==, tarball: https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz} + name: gzip-size + version: 6.0.0 + engines: {node: '>=10'} + dependencies: + duplexer: registry.npmmirror.com/duplexer@0.1.2 + dev: false + + registry.npmmirror.com/has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz} + name: has-flag + version: 3.0.0 + engines: {node: '>=4'} + dev: false + + registry.npmmirror.com/has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz} + name: has-flag + version: 4.0.0 + engines: {node: '>=8'} + + registry.npmmirror.com/hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==, tarball: https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz} + name: hasown + version: 2.0.0 + engines: {node: '>= 0.4'} + dependencies: + function-bind: registry.npmmirror.com/function-bind@1.1.2 + dev: true + + registry.npmmirror.com/he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, tarball: https://registry.npmmirror.com/he/-/he-1.2.0.tgz} + name: he + version: 1.2.0 + hasBin: true + dev: true + + registry.npmmirror.com/highlight.js@11.9.0: + resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==, tarball: https://registry.npmmirror.com/highlight.js/-/highlight.js-11.9.0.tgz} + name: highlight.js + version: 11.9.0 + engines: {node: '>=12.0.0'} + dev: false + + registry.npmmirror.com/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==, tarball: https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz} + name: html-minifier-terser + version: 6.1.0 + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: registry.npmmirror.com/camel-case@4.1.2 + clean-css: registry.npmmirror.com/clean-css@5.3.2 + commander: registry.npmmirror.com/commander@8.3.0 + he: registry.npmmirror.com/he@1.2.0 + param-case: registry.npmmirror.com/param-case@3.0.4 + relateurl: registry.npmmirror.com/relateurl@0.2.7 + terser: registry.npmmirror.com/terser@5.24.0 + dev: true + + registry.npmmirror.com/human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, tarball: https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz} + name: human-signals + version: 2.1.0 + engines: {node: '>=10.17.0'} + dev: false + + registry.npmmirror.com/human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==, tarball: https://registry.npmmirror.com/human-signals/-/human-signals-4.3.1.tgz} + name: human-signals + version: 4.3.1 + engines: {node: '>=14.18.0'} + dev: false + + registry.npmmirror.com/ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==, tarball: https://registry.npmmirror.com/ignore/-/ignore-5.3.0.tgz} + name: ignore + version: 5.3.0 + engines: {node: '>= 4'} + + registry.npmmirror.com/immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==, tarball: https://registry.npmmirror.com/immutable/-/immutable-4.3.4.tgz} + name: immutable + version: 4.3.4 + + registry.npmmirror.com/import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, tarball: https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz} + name: import-fresh + version: 3.3.0 + engines: {node: '>=6'} + dependencies: + parent-module: registry.npmmirror.com/parent-module@1.0.1 + resolve-from: registry.npmmirror.com/resolve-from@4.0.0 + + registry.npmmirror.com/imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, tarball: https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz} + name: imurmurhash + version: 0.1.4 + engines: {node: '>=0.8.19'} + + registry.npmmirror.com/inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, tarball: https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz} + name: inflight + version: 1.0.6 + dependencies: + once: registry.npmmirror.com/once@1.4.0 + wrappy: registry.npmmirror.com/wrappy@1.0.2 + + registry.npmmirror.com/inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, tarball: https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz} + name: inherits + version: 2.0.4 + + registry.npmmirror.com/is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, tarball: https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz} + name: is-binary-path + version: 2.1.0 + engines: {node: '>=8'} + dependencies: + binary-extensions: registry.npmmirror.com/binary-extensions@2.2.0 + + registry.npmmirror.com/is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz} + name: is-core-module + version: 2.13.1 + dependencies: + hasown: registry.npmmirror.com/hasown@2.0.0 + dev: true + + registry.npmmirror.com/is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, tarball: https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz} + name: is-docker + version: 2.2.1 + engines: {node: '>=8'} + hasBin: true + + registry.npmmirror.com/is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, tarball: https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz} + name: is-docker + version: 3.0.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false + + registry.npmmirror.com/is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, tarball: https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz} + name: is-extglob + version: 2.1.1 + engines: {node: '>=0.10.0'} + + registry.npmmirror.com/is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, tarball: https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} + name: is-fullwidth-code-point + version: 3.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmmirror.com/is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz} + name: is-glob + version: 4.0.3 + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: registry.npmmirror.com/is-extglob@2.1.1 + + registry.npmmirror.com/is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, tarball: https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz} + name: is-inside-container + version: 1.0.0 + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: registry.npmmirror.com/is-docker@3.0.0 + dev: false + + registry.npmmirror.com/is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, tarball: https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz} + name: is-number + version: 7.0.0 + engines: {node: '>=0.12.0'} + + registry.npmmirror.com/is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, tarball: https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz} + name: is-path-inside + version: 3.0.3 + engines: {node: '>=8'} + + registry.npmmirror.com/is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, tarball: https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz} + name: is-stream + version: 2.0.1 + engines: {node: '>=8'} + dev: false + + registry.npmmirror.com/is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, tarball: https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz} + name: is-stream + version: 3.0.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + registry.npmmirror.com/is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, tarball: https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz} + name: is-wsl + version: 2.2.0 + engines: {node: '>=8'} + dependencies: + is-docker: registry.npmmirror.com/is-docker@2.2.1 + + registry.npmmirror.com/isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, tarball: https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz} + name: isexe + version: 2.0.0 + + registry.npmmirror.com/jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==, tarball: https://registry.npmmirror.com/jackspeak/-/jackspeak-2.3.6.tgz} + name: jackspeak + version: 2.3.6 + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': registry.npmmirror.com/@isaacs/cliui@8.0.2 + optionalDependencies: + '@pkgjs/parseargs': registry.npmmirror.com/@pkgjs/parseargs@0.11.0 + dev: true + + registry.npmmirror.com/jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==, tarball: https://registry.npmmirror.com/jake/-/jake-10.8.7.tgz} + name: jake + version: 10.8.7 + engines: {node: '>=10'} + hasBin: true + dependencies: + async: registry.npmmirror.com/async@3.2.5 + chalk: registry.npmmirror.com/chalk@4.1.2 + filelist: registry.npmmirror.com/filelist@1.0.4 + minimatch: registry.npmmirror.com/minimatch@3.1.2 + dev: true + + registry.npmmirror.com/jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==, tarball: https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz} + name: jiti + version: 1.21.0 + hasBin: true + dev: false + + registry.npmmirror.com/js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz} + name: js-tokens + version: 4.0.0 + dev: false + + registry.npmmirror.com/js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, tarball: https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz} + name: js-yaml + version: 4.1.0 + hasBin: true + dependencies: + argparse: registry.npmmirror.com/argparse@2.0.1 + + registry.npmmirror.com/jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, tarball: https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz} + name: jsesc + version: 2.5.2 + engines: {node: '>=4'} + hasBin: true + dev: false + + registry.npmmirror.com/json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, tarball: https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz} + name: json-buffer + version: 3.0.1 + + registry.npmmirror.com/json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, tarball: https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz} + name: json-schema-traverse + version: 0.4.1 + + registry.npmmirror.com/json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, tarball: https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz} + name: json-stable-stringify-without-jsonify + version: 1.0.1 + + registry.npmmirror.com/json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, tarball: https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz} + name: json5 + version: 2.2.3 + engines: {node: '>=6'} + hasBin: true + dev: false + + registry.npmmirror.com/jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, tarball: https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz} + name: jsonc-parser + version: 3.2.0 + + registry.npmmirror.com/jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, tarball: https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz} + name: jsonfile + version: 6.1.0 + dependencies: + universalify: registry.npmmirror.com/universalify@2.0.1 + optionalDependencies: + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.11 + dev: true + + registry.npmmirror.com/keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, tarball: https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz} + name: keyv + version: 4.5.4 + dependencies: + json-buffer: registry.npmmirror.com/json-buffer@3.0.1 + + registry.npmmirror.com/kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==, tarball: https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz} + name: kolorist + version: 1.8.0 + dev: false + + registry.npmmirror.com/levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz} + name: levn + version: 0.4.1 + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: registry.npmmirror.com/prelude-ls@1.2.1 + type-check: registry.npmmirror.com/type-check@0.4.0 + + registry.npmmirror.com/local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==, tarball: https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz} + name: local-pkg + version: 0.4.3 + engines: {node: '>=14'} + + registry.npmmirror.com/local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==, tarball: https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz} + name: local-pkg + version: 0.5.0 + engines: {node: '>=14'} + dependencies: + mlly: registry.npmmirror.com/mlly@1.4.2 + pkg-types: registry.npmmirror.com/pkg-types@1.0.3 + dev: true + + registry.npmmirror.com/locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, tarball: https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz} + name: locate-path + version: 6.0.0 + engines: {node: '>=10'} + dependencies: + p-locate: registry.npmmirror.com/p-locate@5.0.0 + + registry.npmmirror.com/lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, tarball: https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz} + name: lodash-es + version: 4.17.21 + dev: false + + registry.npmmirror.com/lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, tarball: https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz} + name: lodash.merge + version: 4.6.2 + + registry.npmmirror.com/lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, tarball: https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz} + name: lodash + version: 4.17.21 + + registry.npmmirror.com/lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, tarball: https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz} + name: lower-case + version: 2.0.2 + dependencies: + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: true + + registry.npmmirror.com/lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==, tarball: https://registry.npmmirror.com/lru-cache/-/lru-cache-10.1.0.tgz} + name: lru-cache + version: 10.1.0 + engines: {node: 14 || >=16.14} + dev: true + + registry.npmmirror.com/lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz} + name: lru-cache + version: 5.1.1 + dependencies: + yallist: registry.npmmirror.com/yallist@3.1.1 + dev: false + + registry.npmmirror.com/lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, tarball: https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz} + name: lru-cache + version: 6.0.0 + engines: {node: '>=10'} + dependencies: + yallist: registry.npmmirror.com/yallist@4.0.0 + + registry.npmmirror.com/magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz} + name: magic-string + version: 0.30.5 + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15 + + registry.npmmirror.com/mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, tarball: https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.30.tgz} + name: mdn-data + version: 2.0.30 + dev: false + + registry.npmmirror.com/merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, tarball: https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz} + name: merge-stream + version: 2.0.0 + dev: false + + registry.npmmirror.com/merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, tarball: https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz} + name: merge2 + version: 1.4.1 + engines: {node: '>= 8'} + + registry.npmmirror.com/micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, tarball: https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz} + name: micromatch + version: 4.0.5 + engines: {node: '>=8.6'} + dependencies: + braces: registry.npmmirror.com/braces@3.0.2 + picomatch: registry.npmmirror.com/picomatch@2.3.1 + + registry.npmmirror.com/mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, tarball: https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz} + name: mime-db + version: 1.52.0 + engines: {node: '>= 0.6'} + dev: false + + registry.npmmirror.com/mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, tarball: https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz} + name: mime-types + version: 2.1.35 + engines: {node: '>= 0.6'} + dependencies: + mime-db: registry.npmmirror.com/mime-db@1.52.0 + dev: false + + registry.npmmirror.com/mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, tarball: https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz} + name: mimic-fn + version: 2.1.0 + engines: {node: '>=6'} + dev: false + + registry.npmmirror.com/mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, tarball: https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz} + name: mimic-fn + version: 4.0.0 + engines: {node: '>=12'} + dev: false + + registry.npmmirror.com/minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz} + name: minimatch + version: 3.1.2 + dependencies: + brace-expansion: registry.npmmirror.com/brace-expansion@1.1.11 + + registry.npmmirror.com/minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz} + name: minimatch + version: 5.1.6 + engines: {node: '>=10'} + dependencies: + brace-expansion: registry.npmmirror.com/brace-expansion@2.0.1 + dev: true + + registry.npmmirror.com/minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz} + name: minimatch + version: 9.0.3 + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: registry.npmmirror.com/brace-expansion@2.0.1 + dev: true + + registry.npmmirror.com/minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==, tarball: https://registry.npmmirror.com/minipass/-/minipass-7.0.4.tgz} + name: minipass + version: 7.0.4 + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + registry.npmmirror.com/mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==, tarball: https://registry.npmmirror.com/mlly/-/mlly-1.4.2.tgz} + name: mlly + version: 1.4.2 + dependencies: + acorn: registry.npmmirror.com/acorn@8.11.2 + pathe: registry.npmmirror.com/pathe@1.1.1 + pkg-types: registry.npmmirror.com/pkg-types@1.0.3 + ufo: registry.npmmirror.com/ufo@1.3.2 + + registry.npmmirror.com/mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==, tarball: https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz} + name: mrmime + version: 1.0.1 + engines: {node: '>=10'} + dev: false + + registry.npmmirror.com/ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, tarball: https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz} + name: ms + version: 2.1.2 + + registry.npmmirror.com/naive-ui@2.35.0(vue@3.3.8): + resolution: {integrity: sha512-PdnLpOip1LQaKs5+rXLZoPDPQkTq26TnHWeABvUA2eOQjtHxE4+TQvj0Jq/W8clM2On/7jptoGmenLt48G3Bhg==, tarball: https://registry.npmmirror.com/naive-ui/-/naive-ui-2.35.0.tgz} + id: registry.npmmirror.com/naive-ui/2.35.0 + name: naive-ui + version: 2.35.0 + peerDependencies: + vue: ^3.0.0 + dependencies: + '@css-render/plugin-bem': registry.npmmirror.com/@css-render/plugin-bem@0.15.12(css-render@0.15.12) + '@css-render/vue3-ssr': registry.npmmirror.com/@css-render/vue3-ssr@0.15.12(vue@3.3.8) + '@types/katex': registry.npmmirror.com/@types/katex@0.16.7 + '@types/lodash': registry.npmmirror.com/@types/lodash@4.14.202 + '@types/lodash-es': registry.npmmirror.com/@types/lodash-es@4.17.12 + async-validator: registry.npmmirror.com/async-validator@4.2.5 + css-render: registry.npmmirror.com/css-render@0.15.12 + date-fns: registry.npmmirror.com/date-fns@2.30.0 + date-fns-tz: registry.npmmirror.com/date-fns-tz@2.0.0(date-fns@2.30.0) + evtd: registry.npmmirror.com/evtd@0.2.4 + highlight.js: registry.npmmirror.com/highlight.js@11.9.0 + lodash: registry.npmmirror.com/lodash@4.17.21 + lodash-es: registry.npmmirror.com/lodash-es@4.17.21 + seemly: registry.npmmirror.com/seemly@0.3.6 + treemate: registry.npmmirror.com/treemate@0.3.11 + vdirs: registry.npmmirror.com/vdirs@0.1.8(vue@3.3.8) + vooks: registry.npmmirror.com/vooks@0.2.12(vue@3.3.8) + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + vueuc: registry.npmmirror.com/vueuc@0.4.51(vue@3.3.8) + dev: false + + registry.npmmirror.com/nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz} + name: nanoid + version: 3.3.7 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + registry.npmmirror.com/natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, tarball: https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz} + name: natural-compare + version: 1.4.0 + + registry.npmmirror.com/no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, tarball: https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz} + name: no-case + version: 3.0.4 + dependencies: + lower-case: registry.npmmirror.com/lower-case@2.0.2 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: true + + registry.npmmirror.com/node-fetch-native@1.4.1: + resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==, tarball: https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.4.1.tgz} + name: node-fetch-native + version: 1.4.1 + dev: false + + registry.npmmirror.com/node-html-parser@5.4.2: + resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==, tarball: https://registry.npmmirror.com/node-html-parser/-/node-html-parser-5.4.2.tgz} + name: node-html-parser + version: 5.4.2 + dependencies: + css-select: registry.npmmirror.com/css-select@4.3.0 + he: registry.npmmirror.com/he@1.2.0 + dev: true + + registry.npmmirror.com/node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==, tarball: https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz} + name: node-releases + version: 2.0.13 + dev: false + + registry.npmmirror.com/normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, tarball: https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz} + name: normalize-path + version: 3.0.0 + engines: {node: '>=0.10.0'} + + registry.npmmirror.com/npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, tarball: https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz} + name: npm-run-path + version: 4.0.1 + engines: {node: '>=8'} + dependencies: + path-key: registry.npmmirror.com/path-key@3.1.1 + dev: false + + registry.npmmirror.com/npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==, tarball: https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.1.0.tgz} + name: npm-run-path + version: 5.1.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: registry.npmmirror.com/path-key@4.0.0 + dev: false + + registry.npmmirror.com/nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, tarball: https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz} + name: nth-check + version: 2.1.1 + dependencies: + boolbase: registry.npmmirror.com/boolbase@1.0.0 + dev: true + + registry.npmmirror.com/ofetch@1.3.3: + resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==, tarball: https://registry.npmmirror.com/ofetch/-/ofetch-1.3.3.tgz} + name: ofetch + version: 1.3.3 + dependencies: + destr: registry.npmmirror.com/destr@2.0.2 + node-fetch-native: registry.npmmirror.com/node-fetch-native@1.4.1 + ufo: registry.npmmirror.com/ufo@1.3.2 + dev: false + + registry.npmmirror.com/once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, tarball: https://registry.npmmirror.com/once/-/once-1.4.0.tgz} + name: once + version: 1.4.0 + dependencies: + wrappy: registry.npmmirror.com/wrappy@1.0.2 + + registry.npmmirror.com/onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, tarball: https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz} + name: onetime + version: 5.1.2 + engines: {node: '>=6'} + dependencies: + mimic-fn: registry.npmmirror.com/mimic-fn@2.1.0 + dev: false + + registry.npmmirror.com/onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, tarball: https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz} + name: onetime + version: 6.0.0 + engines: {node: '>=12'} + dependencies: + mimic-fn: registry.npmmirror.com/mimic-fn@4.0.0 + dev: false + + registry.npmmirror.com/open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, tarball: https://registry.npmmirror.com/open/-/open-8.4.2.tgz} + name: open + version: 8.4.2 + engines: {node: '>=12'} + dependencies: + define-lazy-prop: registry.npmmirror.com/define-lazy-prop@2.0.0 + is-docker: registry.npmmirror.com/is-docker@2.2.1 + is-wsl: registry.npmmirror.com/is-wsl@2.2.0 + dev: true + + registry.npmmirror.com/open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==, tarball: https://registry.npmmirror.com/open/-/open-9.1.0.tgz} + name: open + version: 9.1.0 + engines: {node: '>=14.16'} + dependencies: + default-browser: registry.npmmirror.com/default-browser@4.0.0 + define-lazy-prop: registry.npmmirror.com/define-lazy-prop@3.0.0 + is-inside-container: registry.npmmirror.com/is-inside-container@1.0.0 + is-wsl: registry.npmmirror.com/is-wsl@2.2.0 + dev: false + + registry.npmmirror.com/optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==, tarball: https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz} + name: optionator + version: 0.9.3 + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': registry.npmmirror.com/@aashutoshrathi/word-wrap@1.2.6 + deep-is: registry.npmmirror.com/deep-is@0.1.4 + fast-levenshtein: registry.npmmirror.com/fast-levenshtein@2.0.6 + levn: registry.npmmirror.com/levn@0.4.1 + prelude-ls: registry.npmmirror.com/prelude-ls@1.2.1 + type-check: registry.npmmirror.com/type-check@0.4.0 + + registry.npmmirror.com/p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz} + name: p-limit + version: 3.1.0 + engines: {node: '>=10'} + dependencies: + yocto-queue: registry.npmmirror.com/yocto-queue@0.1.0 + + registry.npmmirror.com/p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, tarball: https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz} + name: p-locate + version: 5.0.0 + engines: {node: '>=10'} + dependencies: + p-limit: registry.npmmirror.com/p-limit@3.1.0 + + registry.npmmirror.com/param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, tarball: https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz} + name: param-case + version: 3.0.4 + dependencies: + dot-case: registry.npmmirror.com/dot-case@3.0.4 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: true + + registry.npmmirror.com/parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, tarball: https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz} + name: parent-module + version: 1.0.1 + engines: {node: '>=6'} + dependencies: + callsites: registry.npmmirror.com/callsites@3.1.0 + + registry.npmmirror.com/pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, tarball: https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz} + name: pascal-case + version: 3.1.2 + dependencies: + no-case: registry.npmmirror.com/no-case@3.0.4 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: true + + registry.npmmirror.com/path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, tarball: https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz} + name: path-exists + version: 4.0.0 + engines: {node: '>=8'} + + registry.npmmirror.com/path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, tarball: https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz} + name: path-is-absolute + version: 1.0.1 + engines: {node: '>=0.10.0'} + + registry.npmmirror.com/path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, tarball: https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz} + name: path-key + version: 3.1.1 + engines: {node: '>=8'} + + registry.npmmirror.com/path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, tarball: https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz} + name: path-key + version: 4.0.0 + engines: {node: '>=12'} + dev: false + + registry.npmmirror.com/path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, tarball: https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz} + name: path-parse + version: 1.0.7 + dev: true + + registry.npmmirror.com/path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==, tarball: https://registry.npmmirror.com/path-scurry/-/path-scurry-1.10.1.tgz} + name: path-scurry + version: 1.10.1 + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: registry.npmmirror.com/lru-cache@10.1.0 + minipass: registry.npmmirror.com/minipass@7.0.4 + dev: true + + registry.npmmirror.com/path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, tarball: https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz} + name: path-type + version: 4.0.0 + engines: {node: '>=8'} + dev: false + + registry.npmmirror.com/pathe@0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==, tarball: https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz} + name: pathe + version: 0.2.0 + dev: true + + registry.npmmirror.com/pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==, tarball: https://registry.npmmirror.com/pathe/-/pathe-1.1.1.tgz} + name: pathe + version: 1.1.1 + + registry.npmmirror.com/perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, tarball: https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz} + name: perfect-debounce + version: 1.0.0 + dev: false + + registry.npmmirror.com/picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz} + name: picocolors + version: 1.0.0 + + registry.npmmirror.com/picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz} + name: picomatch + version: 2.3.1 + engines: {node: '>=8.6'} + + registry.npmmirror.com/pinia-plugin-persistedstate@3.2.0(pinia@2.1.7): + resolution: {integrity: sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==, tarball: https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz} + id: registry.npmmirror.com/pinia-plugin-persistedstate/3.2.0 + name: pinia-plugin-persistedstate + version: 3.2.0 + peerDependencies: + pinia: ^2.0.0 + dependencies: + pinia: registry.npmmirror.com/pinia@2.1.7(typescript@5.3.2)(vue@3.3.8) + dev: false + + registry.npmmirror.com/pinia@2.1.7(typescript@5.3.2)(vue@3.3.8): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==, tarball: https://registry.npmmirror.com/pinia/-/pinia-2.1.7.tgz} + id: registry.npmmirror.com/pinia/2.1.7 + name: pinia + version: 2.1.7 + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': registry.npmmirror.com/@vue/devtools-api@6.5.1 + typescript: registry.npmmirror.com/typescript@5.3.2 + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + vue-demi: registry.npmmirror.com/vue-demi@0.14.6(vue@3.3.8) + dev: false + + registry.npmmirror.com/pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==, tarball: https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz} + name: pkg-types + version: 1.0.3 + dependencies: + jsonc-parser: registry.npmmirror.com/jsonc-parser@3.2.0 + mlly: registry.npmmirror.com/mlly@1.4.2 + pathe: registry.npmmirror.com/pathe@1.1.1 + + registry.npmmirror.com/postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz} + name: postcss-selector-parser + version: 6.0.13 + engines: {node: '>=4'} + dependencies: + cssesc: registry.npmmirror.com/cssesc@3.0.0 + util-deprecate: registry.npmmirror.com/util-deprecate@1.0.2 + dev: true + + registry.npmmirror.com/postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz} + name: postcss + version: 8.4.31 + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: registry.npmmirror.com/nanoid@3.3.7 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + + registry.npmmirror.com/prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz} + name: prelude-ls + version: 1.2.1 + engines: {node: '>= 0.8.0'} + + registry.npmmirror.com/prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, tarball: https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz} + name: prettier-linter-helpers + version: 1.0.0 + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: registry.npmmirror.com/fast-diff@1.3.0 + dev: true + + registry.npmmirror.com/prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, tarball: https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz} + name: prettier + version: 2.8.8 + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + registry.npmmirror.com/proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz} + name: proxy-from-env + version: 1.1.0 + dev: false + + registry.npmmirror.com/punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz} + name: punycode + version: 2.3.1 + engines: {node: '>=6'} + + registry.npmmirror.com/queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, tarball: https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz} + name: queue-microtask + version: 1.2.3 + + registry.npmmirror.com/readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, tarball: https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz} + name: readdirp + version: 3.6.0 + engines: {node: '>=8.10.0'} + dependencies: + picomatch: registry.npmmirror.com/picomatch@2.3.1 + + registry.npmmirror.com/regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz} + name: regenerator-runtime + version: 0.14.0 + dev: false + + registry.npmmirror.com/relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==, tarball: https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz} + name: relateurl + version: 0.2.7 + engines: {node: '>= 0.10'} + dev: true + + registry.npmmirror.com/require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, tarball: https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz} + name: require-directory + version: 2.1.1 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmmirror.com/resize-detector@0.3.0: + resolution: {integrity: sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==, tarball: https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz} + name: resize-detector + version: 0.3.0 + dev: false + + registry.npmmirror.com/resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz} + name: resolve-from + version: 4.0.0 + engines: {node: '>=4'} + + registry.npmmirror.com/resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, tarball: https://registry.npmmirror.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz} + name: resolve-pkg-maps + version: 1.0.0 + dev: true + + registry.npmmirror.com/resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, tarball: https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz} + name: resolve + version: 1.22.8 + hasBin: true + dependencies: + is-core-module: registry.npmmirror.com/is-core-module@2.13.1 + path-parse: registry.npmmirror.com/path-parse@1.0.7 + supports-preserve-symlinks-flag: registry.npmmirror.com/supports-preserve-symlinks-flag@1.0.0 + dev: true + + registry.npmmirror.com/reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, tarball: https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz} + name: reusify + version: 1.0.4 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + registry.npmmirror.com/rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, tarball: https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz} + name: rimraf + version: 3.0.2 + hasBin: true + dependencies: + glob: registry.npmmirror.com/glob@7.2.3 + + registry.npmmirror.com/rollup-plugin-visualizer@5.9.3: + resolution: {integrity: sha512-ieGM5UAbMVqThX67GCuFHu/GkaSXIUZwFKJsSzE+7+k9fibU/6gbUz7SL+9BBzNtv5bIFHj7kEu0TWcqEnT/sQ==, tarball: https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.3.tgz} + name: rollup-plugin-visualizer + version: 5.9.3 + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: registry.npmmirror.com/open@8.4.2 + picomatch: registry.npmmirror.com/picomatch@2.3.1 + source-map: registry.npmmirror.com/source-map@0.7.4 + yargs: registry.npmmirror.com/yargs@17.7.2 + dev: true + + registry.npmmirror.com/rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==, tarball: https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz} + name: rollup + version: 3.29.4 + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: registry.npmmirror.com/fsevents@2.3.3 + + registry.npmmirror.com/run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==, tarball: https://registry.npmmirror.com/run-applescript/-/run-applescript-5.0.0.tgz} + name: run-applescript + version: 5.0.0 + engines: {node: '>=12'} + dependencies: + execa: registry.npmmirror.com/execa@5.1.1 + dev: false + + registry.npmmirror.com/run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, tarball: https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz} + name: run-parallel + version: 1.2.0 + dependencies: + queue-microtask: registry.npmmirror.com/queue-microtask@1.2.3 + + registry.npmmirror.com/sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==, tarball: https://registry.npmmirror.com/sass/-/sass-1.69.5.tgz} + name: sass + version: 1.69.5 + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: registry.npmmirror.com/chokidar@3.5.3 + immutable: registry.npmmirror.com/immutable@4.3.4 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + + registry.npmmirror.com/scule@1.1.0: + resolution: {integrity: sha512-vRUjqhyM/YWYzT+jsMk6tnl3NkY4A4soJ8uyh3O6Um+JXEQL9ozUCe7pqrxn3CSKokw0hw3nFStfskzpgYwR0g==, tarball: https://registry.npmmirror.com/scule/-/scule-1.1.0.tgz} + name: scule + version: 1.1.0 + dev: true + + registry.npmmirror.com/seemly@0.3.6: + resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==, tarball: https://registry.npmmirror.com/seemly/-/seemly-0.3.6.tgz} + name: seemly + version: 0.3.6 + dev: false + + registry.npmmirror.com/semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, tarball: https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz} + name: semver + version: 6.3.1 + hasBin: true + dev: false + + registry.npmmirror.com/semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, tarball: https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz} + name: semver + version: 7.5.4 + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: registry.npmmirror.com/lru-cache@6.0.0 + + registry.npmmirror.com/shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz} + name: shebang-command + version: 2.0.0 + engines: {node: '>=8'} + dependencies: + shebang-regex: registry.npmmirror.com/shebang-regex@3.0.0 + + registry.npmmirror.com/shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz} + name: shebang-regex + version: 3.0.0 + engines: {node: '>=8'} + + registry.npmmirror.com/signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, tarball: https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz} + name: signal-exit + version: 3.0.7 + dev: false + + registry.npmmirror.com/signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, tarball: https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz} + name: signal-exit + version: 4.1.0 + engines: {node: '>=14'} + dev: true + + registry.npmmirror.com/sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==, tarball: https://registry.npmmirror.com/sirv/-/sirv-2.0.3.tgz} + name: sirv + version: 2.0.3 + engines: {node: '>= 10'} + dependencies: + '@polka/url': registry.npmmirror.com/@polka/url@1.0.0-next.23 + mrmime: registry.npmmirror.com/mrmime@1.0.1 + totalist: registry.npmmirror.com/totalist@3.0.1 + dev: false + + registry.npmmirror.com/slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, tarball: https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz} + name: slash + version: 3.0.0 + engines: {node: '>=8'} + dev: false + + registry.npmmirror.com/source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz} + name: source-map-js + version: 1.0.2 + engines: {node: '>=0.10.0'} + + registry.npmmirror.com/source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, tarball: https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz} + name: source-map-support + version: 0.5.21 + dependencies: + buffer-from: registry.npmmirror.com/buffer-from@1.1.2 + source-map: registry.npmmirror.com/source-map@0.6.1 + dev: true + + registry.npmmirror.com/source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz} + name: source-map + version: 0.6.1 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmmirror.com/source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz} + name: source-map + version: 0.7.4 + engines: {node: '>= 8'} + dev: true + + registry.npmmirror.com/ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==, tarball: https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz} + name: ssf + version: 0.11.2 + engines: {node: '>=0.8'} + dependencies: + frac: registry.npmmirror.com/frac@1.1.2 + dev: false + + registry.npmmirror.com/string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, tarball: https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz} + name: string-width + version: 4.2.3 + engines: {node: '>=8'} + dependencies: + emoji-regex: registry.npmmirror.com/emoji-regex@8.0.0 + is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point@3.0.0 + strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 + dev: true + + registry.npmmirror.com/string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, tarball: https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz} + name: string-width + version: 5.1.2 + engines: {node: '>=12'} + dependencies: + eastasianwidth: registry.npmmirror.com/eastasianwidth@0.2.0 + emoji-regex: registry.npmmirror.com/emoji-regex@9.2.2 + strip-ansi: registry.npmmirror.com/strip-ansi@7.1.0 + dev: true + + registry.npmmirror.com/strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz} + name: strip-ansi + version: 6.0.1 + engines: {node: '>=8'} + dependencies: + ansi-regex: registry.npmmirror.com/ansi-regex@5.0.1 + + registry.npmmirror.com/strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz} + name: strip-ansi + version: 7.1.0 + engines: {node: '>=12'} + dependencies: + ansi-regex: registry.npmmirror.com/ansi-regex@6.0.1 + dev: true + + registry.npmmirror.com/strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, tarball: https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz} + name: strip-final-newline + version: 2.0.0 + engines: {node: '>=6'} + dev: false + + registry.npmmirror.com/strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, tarball: https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz} + name: strip-final-newline + version: 3.0.0 + engines: {node: '>=12'} + dev: false + + registry.npmmirror.com/strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, tarball: https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz} + name: strip-json-comments + version: 3.1.1 + engines: {node: '>=8'} + + registry.npmmirror.com/strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==, tarball: https://registry.npmmirror.com/strip-literal/-/strip-literal-1.3.0.tgz} + name: strip-literal + version: 1.3.0 + dependencies: + acorn: registry.npmmirror.com/acorn@8.11.2 + dev: true + + registry.npmmirror.com/supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz} + name: supports-color + version: 5.5.0 + engines: {node: '>=4'} + dependencies: + has-flag: registry.npmmirror.com/has-flag@3.0.0 + dev: false + + registry.npmmirror.com/supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz} + name: supports-color + version: 7.2.0 + engines: {node: '>=8'} + dependencies: + has-flag: registry.npmmirror.com/has-flag@4.0.0 + + registry.npmmirror.com/supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, tarball: https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz} + name: supports-preserve-symlinks-flag + version: 1.0.0 + engines: {node: '>= 0.4'} + dev: true + + registry.npmmirror.com/synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==, tarball: https://registry.npmmirror.com/synckit/-/synckit-0.8.5.tgz} + name: synckit + version: 0.8.5 + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': registry.npmmirror.com/@pkgr/utils@2.4.2 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: false + + registry.npmmirror.com/terser@5.24.0: + resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==, tarball: https://registry.npmmirror.com/terser/-/terser-5.24.0.tgz} + name: terser + version: 5.24.0 + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': registry.npmmirror.com/@jridgewell/source-map@0.3.5 + acorn: registry.npmmirror.com/acorn@8.11.2 + commander: registry.npmmirror.com/commander@2.20.3 + source-map-support: registry.npmmirror.com/source-map-support@0.5.21 + dev: true + + registry.npmmirror.com/text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, tarball: https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz} + name: text-table + version: 0.2.0 + + registry.npmmirror.com/titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==, tarball: https://registry.npmmirror.com/titleize/-/titleize-3.0.0.tgz} + name: titleize + version: 3.0.0 + engines: {node: '>=12'} + dev: false + + registry.npmmirror.com/to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, tarball: https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz} + name: to-fast-properties + version: 2.0.0 + engines: {node: '>=4'} + + registry.npmmirror.com/to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, tarball: https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz} + name: to-regex-range + version: 5.0.1 + engines: {node: '>=8.0'} + dependencies: + is-number: registry.npmmirror.com/is-number@7.0.0 + + registry.npmmirror.com/totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, tarball: https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz} + name: totalist + version: 3.0.1 + engines: {node: '>=6'} + dev: false + + registry.npmmirror.com/treemate@0.3.11: + resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==, tarball: https://registry.npmmirror.com/treemate/-/treemate-0.3.11.tgz} + name: treemate + version: 0.3.11 + dev: false + + registry.npmmirror.com/ts-api-utils@1.0.3(typescript@5.3.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==, tarball: https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz} + id: registry.npmmirror.com/ts-api-utils/1.0.3 + name: ts-api-utils + version: 1.0.3 + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: registry.npmmirror.com/typescript@5.3.2 + dev: false + + registry.npmmirror.com/tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz} + name: tslib + version: 2.3.0 + dev: false + + registry.npmmirror.com/tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz} + name: tslib + version: 2.6.2 + + registry.npmmirror.com/tsx@3.14.0: + resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==, tarball: https://registry.npmmirror.com/tsx/-/tsx-3.14.0.tgz} + name: tsx + version: 3.14.0 + hasBin: true + dependencies: + esbuild: registry.npmmirror.com/esbuild@0.18.20 + get-tsconfig: registry.npmmirror.com/get-tsconfig@4.7.2 + source-map-support: registry.npmmirror.com/source-map-support@0.5.21 + optionalDependencies: + fsevents: registry.npmmirror.com/fsevents@2.3.3 + dev: true + + registry.npmmirror.com/type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, tarball: https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz} + name: type-check + version: 0.4.0 + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: registry.npmmirror.com/prelude-ls@1.2.1 + + registry.npmmirror.com/type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, tarball: https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz} + name: type-fest + version: 0.20.2 + engines: {node: '>=10'} + + registry.npmmirror.com/typescript@5.3.2: + resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==, tarball: https://registry.npmmirror.com/typescript/-/typescript-5.3.2.tgz} + name: typescript + version: 5.3.2 + engines: {node: '>=14.17'} + hasBin: true + + registry.npmmirror.com/ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==, tarball: https://registry.npmmirror.com/ufo/-/ufo-1.3.2.tgz} + name: ufo + version: 1.3.2 + + registry.npmmirror.com/unconfig@0.3.11: + resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==, tarball: https://registry.npmmirror.com/unconfig/-/unconfig-0.3.11.tgz} + name: unconfig + version: 0.3.11 + dependencies: + '@antfu/utils': registry.npmmirror.com/@antfu/utils@0.7.6 + defu: registry.npmmirror.com/defu@6.1.3 + jiti: registry.npmmirror.com/jiti@1.21.0 + mlly: registry.npmmirror.com/mlly@1.4.2 + dev: false + + registry.npmmirror.com/unimport@3.6.0: + resolution: {integrity: sha512-yXW3Z30yk1vX8fxO8uHlq9wY9K+L56LHp4Hlbv8i7tW+NENSOv8AaFJUPtOQchxlT7/JBAzCtkrBtcVjKIr1VQ==, tarball: https://registry.npmmirror.com/unimport/-/unimport-3.6.0.tgz} + name: unimport + version: 3.6.0 + dependencies: + '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils@5.0.5 + escape-string-regexp: registry.npmmirror.com/escape-string-regexp@5.0.0 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + local-pkg: registry.npmmirror.com/local-pkg@0.5.0 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + mlly: registry.npmmirror.com/mlly@1.4.2 + pathe: registry.npmmirror.com/pathe@1.1.1 + pkg-types: registry.npmmirror.com/pkg-types@1.0.3 + scule: registry.npmmirror.com/scule@1.1.0 + strip-literal: registry.npmmirror.com/strip-literal@1.3.0 + unplugin: registry.npmmirror.com/unplugin@1.5.1 + transitivePeerDependencies: + - rollup + dev: true + + registry.npmmirror.com/universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, tarball: https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz} + name: universalify + version: 2.0.1 + engines: {node: '>= 10.0.0'} + dev: true + + registry.npmmirror.com/unocss@0.57.7(postcss@8.4.31)(vite@4.5.0): + resolution: {integrity: sha512-Z99ZZPkbkjIUXEM7L+K/7Y5V5yqUS0VigG7ZIFzLf/npieKmXHKlrPyvQWFQaf3OqooMFuKBQivh75TwvSOkcQ==, tarball: https://registry.npmmirror.com/unocss/-/unocss-0.57.7.tgz} + id: registry.npmmirror.com/unocss/0.57.7 + name: unocss + version: 0.57.7 + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.57.7 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + dependencies: + '@unocss/astro': registry.npmmirror.com/@unocss/astro@0.57.7(vite@4.5.0) + '@unocss/cli': registry.npmmirror.com/@unocss/cli@0.57.7 + '@unocss/core': registry.npmmirror.com/@unocss/core@0.57.7 + '@unocss/extractor-arbitrary-variants': registry.npmmirror.com/@unocss/extractor-arbitrary-variants@0.57.7 + '@unocss/postcss': registry.npmmirror.com/@unocss/postcss@0.57.7(postcss@8.4.31) + '@unocss/preset-attributify': registry.npmmirror.com/@unocss/preset-attributify@0.57.7 + '@unocss/preset-icons': registry.npmmirror.com/@unocss/preset-icons@0.57.7 + '@unocss/preset-mini': registry.npmmirror.com/@unocss/preset-mini@0.57.7 + '@unocss/preset-tagify': registry.npmmirror.com/@unocss/preset-tagify@0.57.7 + '@unocss/preset-typography': registry.npmmirror.com/@unocss/preset-typography@0.57.7 + '@unocss/preset-uno': registry.npmmirror.com/@unocss/preset-uno@0.57.7 + '@unocss/preset-web-fonts': registry.npmmirror.com/@unocss/preset-web-fonts@0.57.7 + '@unocss/preset-wind': registry.npmmirror.com/@unocss/preset-wind@0.57.7 + '@unocss/reset': registry.npmmirror.com/@unocss/reset@0.57.7 + '@unocss/transformer-attributify-jsx': registry.npmmirror.com/@unocss/transformer-attributify-jsx@0.57.7 + '@unocss/transformer-attributify-jsx-babel': registry.npmmirror.com/@unocss/transformer-attributify-jsx-babel@0.57.7 + '@unocss/transformer-compile-class': registry.npmmirror.com/@unocss/transformer-compile-class@0.57.7 + '@unocss/transformer-directives': registry.npmmirror.com/@unocss/transformer-directives@0.57.7 + '@unocss/transformer-variant-group': registry.npmmirror.com/@unocss/transformer-variant-group@0.57.7 + '@unocss/vite': registry.npmmirror.com/@unocss/vite@0.57.7(vite@4.5.0) + vite: registry.npmmirror.com/vite@4.5.0(sass@1.69.5) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + dev: false + + registry.npmmirror.com/unplugin-auto-import@0.16.7(@vueuse/core@10.6.1): + resolution: {integrity: sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==, tarball: https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz} + id: registry.npmmirror.com/unplugin-auto-import/0.16.7 + name: unplugin-auto-import + version: 0.16.7 + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + dependencies: + '@antfu/utils': registry.npmmirror.com/@antfu/utils@0.7.6 + '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils@5.0.5 + '@vueuse/core': registry.npmmirror.com/@vueuse/core@10.6.1(vue@3.3.8) + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + local-pkg: registry.npmmirror.com/local-pkg@0.5.0 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + minimatch: registry.npmmirror.com/minimatch@9.0.3 + unimport: registry.npmmirror.com/unimport@3.6.0 + unplugin: registry.npmmirror.com/unplugin@1.5.1 + transitivePeerDependencies: + - rollup + dev: true + + registry.npmmirror.com/unplugin-vue-components@0.25.2(vue@3.3.8): + resolution: {integrity: sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==, tarball: https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.25.2.tgz} + id: registry.npmmirror.com/unplugin-vue-components/0.25.2 + name: unplugin-vue-components + version: 0.25.2 + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + dependencies: + '@antfu/utils': registry.npmmirror.com/@antfu/utils@0.7.6 + '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils@5.0.5 + chokidar: registry.npmmirror.com/chokidar@3.5.3 + debug: registry.npmmirror.com/debug@4.3.4 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + local-pkg: registry.npmmirror.com/local-pkg@0.4.3 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + minimatch: registry.npmmirror.com/minimatch@9.0.3 + resolve: registry.npmmirror.com/resolve@1.22.8 + unplugin: registry.npmmirror.com/unplugin@1.5.1 + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + registry.npmmirror.com/unplugin@1.5.1: + resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==, tarball: https://registry.npmmirror.com/unplugin/-/unplugin-1.5.1.tgz} + name: unplugin + version: 1.5.1 + dependencies: + acorn: registry.npmmirror.com/acorn@8.11.2 + chokidar: registry.npmmirror.com/chokidar@3.5.3 + webpack-sources: registry.npmmirror.com/webpack-sources@3.2.3 + webpack-virtual-modules: registry.npmmirror.com/webpack-virtual-modules@0.6.1 + dev: true + + registry.npmmirror.com/untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==, tarball: https://registry.npmmirror.com/untildify/-/untildify-4.0.0.tgz} + name: untildify + version: 4.0.0 + engines: {node: '>=8'} + dev: false + + registry.npmmirror.com/update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==, tarball: https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz} + id: registry.npmmirror.com/update-browserslist-db/1.0.13 + name: update-browserslist-db + version: 1.0.13 + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: registry.npmmirror.com/browserslist@4.22.1 + escalade: registry.npmmirror.com/escalade@3.1.1 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + dev: false + + registry.npmmirror.com/uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, tarball: https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz} + name: uri-js + version: 4.4.1 + dependencies: + punycode: registry.npmmirror.com/punycode@2.3.1 + + registry.npmmirror.com/util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, tarball: https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz} + name: util-deprecate + version: 1.0.2 + dev: true + + registry.npmmirror.com/vdirs@0.1.8(vue@3.3.8): + resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==, tarball: https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz} + id: registry.npmmirror.com/vdirs/0.1.8 + name: vdirs + version: 0.1.8 + peerDependencies: + vue: ^3.0.11 + dependencies: + evtd: registry.npmmirror.com/evtd@0.2.4 + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + dev: false + + registry.npmmirror.com/vite-plugin-html@3.2.0(vite@4.5.0): + resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==, tarball: https://registry.npmmirror.com/vite-plugin-html/-/vite-plugin-html-3.2.0.tgz} + id: registry.npmmirror.com/vite-plugin-html/3.2.0 + name: vite-plugin-html + version: 3.2.0 + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils@4.2.1 + colorette: registry.npmmirror.com/colorette@2.0.20 + connect-history-api-fallback: registry.npmmirror.com/connect-history-api-fallback@1.6.0 + consola: registry.npmmirror.com/consola@2.15.3 + dotenv: registry.npmmirror.com/dotenv@16.3.1 + dotenv-expand: registry.npmmirror.com/dotenv-expand@8.0.3 + ejs: registry.npmmirror.com/ejs@3.1.9 + fast-glob: registry.npmmirror.com/fast-glob@3.3.2 + fs-extra: registry.npmmirror.com/fs-extra@10.1.0 + html-minifier-terser: registry.npmmirror.com/html-minifier-terser@6.1.0 + node-html-parser: registry.npmmirror.com/node-html-parser@5.4.2 + pathe: registry.npmmirror.com/pathe@0.2.0 + vite: registry.npmmirror.com/vite@4.5.0(sass@1.69.5) + dev: true + + registry.npmmirror.com/vite@4.5.0(sass@1.69.5): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==, tarball: https://registry.npmmirror.com/vite/-/vite-4.5.0.tgz} + id: registry.npmmirror.com/vite/4.5.0 + name: vite + version: 4.5.0 + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: registry.npmmirror.com/esbuild@0.18.20 + postcss: registry.npmmirror.com/postcss@8.4.31 + rollup: registry.npmmirror.com/rollup@3.29.4 + sass: registry.npmmirror.com/sass@1.69.5 + optionalDependencies: + fsevents: registry.npmmirror.com/fsevents@2.3.3 + + registry.npmmirror.com/vooks@0.2.12(vue@3.3.8): + resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==, tarball: https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz} + id: registry.npmmirror.com/vooks/0.2.12 + name: vooks + version: 0.2.12 + peerDependencies: + vue: ^3.0.0 + dependencies: + evtd: registry.npmmirror.com/evtd@0.2.4 + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + dev: false + + registry.npmmirror.com/vue-demi@0.13.11(vue@3.3.8): + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==, tarball: https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz} + id: registry.npmmirror.com/vue-demi/0.13.11 + name: vue-demi + version: 0.13.11 + 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: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + dev: false + + registry.npmmirror.com/vue-demi@0.14.6(vue@3.3.8): + resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==, tarball: https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz} + id: registry.npmmirror.com/vue-demi/0.14.6 + name: vue-demi + version: 0.14.6 + 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: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + + registry.npmmirror.com/vue-echarts@6.6.1(echarts@5.4.3)(vue@3.3.8): + resolution: {integrity: sha512-EpreTzlNeJ+eaUn0AhXEmKJk98xJGecgTqAdyZovoXWnhTxnlW2HuBM0ei3y8rLw1JCUabf8/sYvxjlr8SzBKQ==, tarball: https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.6.1.tgz} + id: registry.npmmirror.com/vue-echarts/6.6.1 + name: vue-echarts + version: 6.6.1 + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.5 + echarts: ^5.4.1 + vue: ^2.6.12 || ^3.1.1 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + echarts: registry.npmmirror.com/echarts@5.4.3 + resize-detector: registry.npmmirror.com/resize-detector@0.3.0 + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + vue-demi: registry.npmmirror.com/vue-demi@0.13.11(vue@3.3.8) + dev: false + + registry.npmmirror.com/vue-eslint-parser@9.3.2(eslint@8.54.0): + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==, tarball: https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz} + id: registry.npmmirror.com/vue-eslint-parser/9.3.2 + name: vue-eslint-parser + version: 9.3.2 + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: registry.npmmirror.com/debug@4.3.4 + eslint: registry.npmmirror.com/eslint@8.54.0 + eslint-scope: registry.npmmirror.com/eslint-scope@7.2.2 + eslint-visitor-keys: registry.npmmirror.com/eslint-visitor-keys@3.4.3 + espree: registry.npmmirror.com/espree@9.6.1 + esquery: registry.npmmirror.com/esquery@1.5.0 + lodash: registry.npmmirror.com/lodash@4.17.21 + semver: registry.npmmirror.com/semver@7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmmirror.com/vue-router@4.2.5(vue@3.3.8): + resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==, tarball: https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz} + id: registry.npmmirror.com/vue-router/4.2.5 + name: vue-router + version: 4.2.5 + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': registry.npmmirror.com/@vue/devtools-api@6.5.1 + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + dev: false + + registry.npmmirror.com/vue@3.3.8(typescript@5.3.2): + resolution: {integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==, tarball: https://registry.npmmirror.com/vue/-/vue-3.3.8.tgz} + id: registry.npmmirror.com/vue/3.3.8 + name: vue + version: 3.3.8 + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.3.8 + '@vue/compiler-sfc': registry.npmmirror.com/@vue/compiler-sfc@3.3.8 + '@vue/runtime-dom': registry.npmmirror.com/@vue/runtime-dom@3.3.8 + '@vue/server-renderer': registry.npmmirror.com/@vue/server-renderer@3.3.8(vue@3.3.8) + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.8 + typescript: registry.npmmirror.com/typescript@5.3.2 + + registry.npmmirror.com/vueuc@0.4.51(vue@3.3.8): + resolution: {integrity: sha512-pLiMChM4f+W8czlIClGvGBYo656lc2Y0/mXFSCydcSmnCR1izlKPGMgiYBGjbY9FDkFG8a2HEVz7t0DNzBWbDw==, tarball: https://registry.npmmirror.com/vueuc/-/vueuc-0.4.51.tgz} + id: registry.npmmirror.com/vueuc/0.4.51 + name: vueuc + version: 0.4.51 + peerDependencies: + vue: ^3.0.11 + dependencies: + '@css-render/vue3-ssr': registry.npmmirror.com/@css-render/vue3-ssr@0.15.12(vue@3.3.8) + '@juggle/resize-observer': registry.npmmirror.com/@juggle/resize-observer@3.4.0 + css-render: registry.npmmirror.com/css-render@0.15.12 + evtd: registry.npmmirror.com/evtd@0.2.4 + seemly: registry.npmmirror.com/seemly@0.3.6 + vdirs: registry.npmmirror.com/vdirs@0.1.8(vue@3.3.8) + vooks: registry.npmmirror.com/vooks@0.2.12(vue@3.3.8) + vue: registry.npmmirror.com/vue@3.3.8(typescript@5.3.2) + dev: false + + registry.npmmirror.com/webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, tarball: https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz} + name: webpack-sources + version: 3.2.3 + engines: {node: '>=10.13.0'} + dev: true + + registry.npmmirror.com/webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==, tarball: https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz} + name: webpack-virtual-modules + version: 0.6.1 + dev: true + + registry.npmmirror.com/which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmmirror.com/which/-/which-2.0.2.tgz} + name: which + version: 2.0.2 + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: registry.npmmirror.com/isexe@2.0.0 + + registry.npmmirror.com/wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==, tarball: https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz} + name: wmf + version: 1.0.2 + engines: {node: '>=0.8'} + dev: false + + registry.npmmirror.com/word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==, tarball: https://registry.npmmirror.com/word/-/word-0.3.0.tgz} + name: word + version: 0.3.0 + engines: {node: '>=0.8'} + dev: false + + registry.npmmirror.com/wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz} + name: wrap-ansi + version: 7.0.0 + engines: {node: '>=10'} + dependencies: + ansi-styles: registry.npmmirror.com/ansi-styles@4.3.0 + string-width: registry.npmmirror.com/string-width@4.2.3 + strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 + dev: true + + registry.npmmirror.com/wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz} + name: wrap-ansi + version: 8.1.0 + engines: {node: '>=12'} + dependencies: + ansi-styles: registry.npmmirror.com/ansi-styles@6.2.1 + string-width: registry.npmmirror.com/string-width@5.1.2 + strip-ansi: registry.npmmirror.com/strip-ansi@7.1.0 + dev: true + + registry.npmmirror.com/wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, tarball: https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz} + name: wrappy + version: 1.0.2 + + registry.npmmirror.com/xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==, tarball: https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz} + name: xlsx + version: 0.18.5 + engines: {node: '>=0.8'} + hasBin: true + dependencies: + adler-32: registry.npmmirror.com/adler-32@1.3.1 + cfb: registry.npmmirror.com/cfb@1.2.2 + codepage: registry.npmmirror.com/codepage@1.15.0 + crc-32: registry.npmmirror.com/crc-32@1.2.2 + ssf: registry.npmmirror.com/ssf@0.11.2 + wmf: registry.npmmirror.com/wmf@1.0.2 + word: registry.npmmirror.com/word@0.3.0 + dev: false + + registry.npmmirror.com/xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, tarball: https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz} + name: xml-name-validator + version: 4.0.0 + engines: {node: '>=12'} + dev: true + + registry.npmmirror.com/y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, tarball: https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz} + name: y18n + version: 5.0.8 + engines: {node: '>=10'} + dev: true + + registry.npmmirror.com/yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, tarball: https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz} + name: yallist + version: 3.1.1 + dev: false + + registry.npmmirror.com/yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, tarball: https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz} + name: yallist + version: 4.0.0 + + registry.npmmirror.com/yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, tarball: https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz} + name: yargs-parser + version: 21.1.1 + engines: {node: '>=12'} + dev: true + + registry.npmmirror.com/yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, tarball: https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz} + name: yargs + version: 17.7.2 + engines: {node: '>=12'} + dependencies: + cliui: registry.npmmirror.com/cliui@8.0.1 + escalade: registry.npmmirror.com/escalade@3.1.1 + get-caller-file: registry.npmmirror.com/get-caller-file@2.0.5 + require-directory: registry.npmmirror.com/require-directory@2.1.1 + string-width: registry.npmmirror.com/string-width@4.2.3 + y18n: registry.npmmirror.com/y18n@5.0.8 + yargs-parser: registry.npmmirror.com/yargs-parser@21.1.1 + dev: true + + registry.npmmirror.com/yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz} + name: yocto-queue + version: 0.1.0 + engines: {node: '>=10'} + + registry.npmmirror.com/zrender@5.4.4: + resolution: {integrity: sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==, tarball: https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz} + name: zrender + version: 5.4.4 + dependencies: + tslib: registry.npmmirror.com/tslib@2.3.0 + dev: false diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..929c58aa1707fb2320f9bab31262bfaab60a6a47 GIT binary patch literal 3859 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 F{|9)eUV#7r literal 0 HcmV?d00001 diff --git a/public/resource/loading.css b/public/resource/loading.css new file mode 100644 index 0000000..2806a7d --- /dev/null +++ b/public/resource/loading.css @@ -0,0 +1,93 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:50:18 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +.loading-container { + position: fixed; + left: 0; + top: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; +} + +.loading-spin__container { + width: 56px; + height: 56px; + margin: 36px 0; +} + +.loading-spin { + position: relative; + height: 100%; + animation: loadingSpin 1s linear infinite; +} + +.left-0 { + left: 0; +} +.right-0 { + right: 0; +} +.top-0 { + top: 0; +} +.bottom-0 { + bottom: 0; +} + +.loading-spin-item { + position: absolute; + height: 16px; + width: 16px; + background-color: var(--primary-color); + border-radius: 8px; + -webkit-animation: loadingPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + animation: loadingPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; +} + +@keyframes loadingSpin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loadingPulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: .5; + } +} + +.loading-delay-500 { + -webkit-animation-delay: 500ms; + animation-delay: 500ms; +} +.loading-delay-1000 { + -webkit-animation-delay: 1000ms; + animation-delay: 1000ms; +} +.loading-delay-1500 { + -webkit-animation-delay: 1500ms; + animation-delay: 1500ms; +} + +.loading-title { + font-size: 28px; + font-weight: 500; + color: var(--primary-color); +} diff --git a/public/resource/loading.js b/public/resource/loading.js new file mode 100644 index 0000000..1908e00 --- /dev/null +++ b/public/resource/loading.js @@ -0,0 +1,18 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:50:27 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +function addThemeColorCssVars() { + const key = '__THEME_COLOR__' + const defaultColor = '#316c72' + const themeColor = localStorage.getItem(key) || defaultColor + const cssVars = `--primary-color: ${themeColor}` + document.documentElement.style.cssText = cssVars +} + +addThemeColorCssVars() + diff --git a/public/resource/logo.png b/public/resource/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..187ff0bc8b5d29c1a573702ca1b64dda2293cdcd GIT binary patch literal 8572 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 + + + + diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..ba1f67e --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,24 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:50:38 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { request } from '@/utils' + +export default { + // 获取用户信息 + getUser: () => request.get('/user/detail'), + // 刷新token + refreshToken: () => request.get('/auth/refresh/token'), + // 登出 + logout: () => request.post('/auth/logout'), + // 切换当前角色 + switchCurrentRole: (role) => request.post(`/auth/current-role/switch/${role}`), + // 获取角色权限 + getRolePermissions: () => request.get('/role/permissions/tree'), + // 验证菜单路径 + validateMenuPath: (path) => request.get(`/permission/menu/validate?path=${path}`), +} diff --git a/src/assets/icons/dynamic-icons.js b/src/assets/icons/dynamic-icons.js new file mode 100644 index 0000000..5326f66 --- /dev/null +++ b/src/assets/icons/dynamic-icons.js @@ -0,0 +1,10 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:50:49 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +// 需要动态渲染的iconify图标,以i-开头 +export default ['i-simple-icons:juejin'] diff --git a/src/assets/icons/feather/activity.svg b/src/assets/icons/feather/activity.svg new file mode 100644 index 0000000..669a57a --- /dev/null +++ b/src/assets/icons/feather/activity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/airplay.svg b/src/assets/icons/feather/airplay.svg new file mode 100644 index 0000000..7ce7302 --- /dev/null +++ b/src/assets/icons/feather/airplay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/alert-circle.svg b/src/assets/icons/feather/alert-circle.svg new file mode 100644 index 0000000..8d02b7d --- /dev/null +++ b/src/assets/icons/feather/alert-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/alert-octagon.svg b/src/assets/icons/feather/alert-octagon.svg new file mode 100644 index 0000000..de9b03f --- /dev/null +++ b/src/assets/icons/feather/alert-octagon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/alert-triangle.svg b/src/assets/icons/feather/alert-triangle.svg new file mode 100644 index 0000000..6dcb096 --- /dev/null +++ b/src/assets/icons/feather/alert-triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/align-center.svg b/src/assets/icons/feather/align-center.svg new file mode 100644 index 0000000..5b8842e --- /dev/null +++ b/src/assets/icons/feather/align-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/align-justify.svg b/src/assets/icons/feather/align-justify.svg new file mode 100644 index 0000000..0539876 --- /dev/null +++ b/src/assets/icons/feather/align-justify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/align-left.svg b/src/assets/icons/feather/align-left.svg new file mode 100644 index 0000000..9ac852a --- /dev/null +++ b/src/assets/icons/feather/align-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/align-right.svg b/src/assets/icons/feather/align-right.svg new file mode 100644 index 0000000..ef139ff --- /dev/null +++ b/src/assets/icons/feather/align-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/anchor.svg b/src/assets/icons/feather/anchor.svg new file mode 100644 index 0000000..e01627a --- /dev/null +++ b/src/assets/icons/feather/anchor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/aperture.svg b/src/assets/icons/feather/aperture.svg new file mode 100644 index 0000000..9936e86 --- /dev/null +++ b/src/assets/icons/feather/aperture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/archive.svg b/src/assets/icons/feather/archive.svg new file mode 100644 index 0000000..428882c --- /dev/null +++ b/src/assets/icons/feather/archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-down-circle.svg b/src/assets/icons/feather/arrow-down-circle.svg new file mode 100644 index 0000000..3238091 --- /dev/null +++ b/src/assets/icons/feather/arrow-down-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-down-left.svg b/src/assets/icons/feather/arrow-down-left.svg new file mode 100644 index 0000000..7248358 --- /dev/null +++ b/src/assets/icons/feather/arrow-down-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-down-right.svg b/src/assets/icons/feather/arrow-down-right.svg new file mode 100644 index 0000000..81d9822 --- /dev/null +++ b/src/assets/icons/feather/arrow-down-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-down.svg b/src/assets/icons/feather/arrow-down.svg new file mode 100644 index 0000000..4f84f62 --- /dev/null +++ b/src/assets/icons/feather/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-left-circle.svg b/src/assets/icons/feather/arrow-left-circle.svg new file mode 100644 index 0000000..3b19ff8 --- /dev/null +++ b/src/assets/icons/feather/arrow-left-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-left.svg b/src/assets/icons/feather/arrow-left.svg new file mode 100644 index 0000000..a5058fc --- /dev/null +++ b/src/assets/icons/feather/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-right-circle.svg b/src/assets/icons/feather/arrow-right-circle.svg new file mode 100644 index 0000000..ff01dd5 --- /dev/null +++ b/src/assets/icons/feather/arrow-right-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-right.svg b/src/assets/icons/feather/arrow-right.svg new file mode 100644 index 0000000..939b57c --- /dev/null +++ b/src/assets/icons/feather/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-up-circle.svg b/src/assets/icons/feather/arrow-up-circle.svg new file mode 100644 index 0000000..044a75d --- /dev/null +++ b/src/assets/icons/feather/arrow-up-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-up-left.svg b/src/assets/icons/feather/arrow-up-left.svg new file mode 100644 index 0000000..cea55e8 --- /dev/null +++ b/src/assets/icons/feather/arrow-up-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-up-right.svg b/src/assets/icons/feather/arrow-up-right.svg new file mode 100644 index 0000000..95678e0 --- /dev/null +++ b/src/assets/icons/feather/arrow-up-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/arrow-up.svg b/src/assets/icons/feather/arrow-up.svg new file mode 100644 index 0000000..16b13ab --- /dev/null +++ b/src/assets/icons/feather/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/at-sign.svg b/src/assets/icons/feather/at-sign.svg new file mode 100644 index 0000000..5a5e5d0 --- /dev/null +++ b/src/assets/icons/feather/at-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/award.svg b/src/assets/icons/feather/award.svg new file mode 100644 index 0000000..be70d5a --- /dev/null +++ b/src/assets/icons/feather/award.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/bar-chart-2.svg b/src/assets/icons/feather/bar-chart-2.svg new file mode 100644 index 0000000..864167a --- /dev/null +++ b/src/assets/icons/feather/bar-chart-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/bar-chart.svg b/src/assets/icons/feather/bar-chart.svg new file mode 100644 index 0000000..074d7c1 --- /dev/null +++ b/src/assets/icons/feather/bar-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/battery-charging.svg b/src/assets/icons/feather/battery-charging.svg new file mode 100644 index 0000000..644cb59 --- /dev/null +++ b/src/assets/icons/feather/battery-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/battery.svg b/src/assets/icons/feather/battery.svg new file mode 100644 index 0000000..7fe8771 --- /dev/null +++ b/src/assets/icons/feather/battery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/bell-off.svg b/src/assets/icons/feather/bell-off.svg new file mode 100644 index 0000000..4b07c84 --- /dev/null +++ b/src/assets/icons/feather/bell-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/bell.svg b/src/assets/icons/feather/bell.svg new file mode 100644 index 0000000..bba561c --- /dev/null +++ b/src/assets/icons/feather/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/bluetooth.svg b/src/assets/icons/feather/bluetooth.svg new file mode 100644 index 0000000..cebed7b --- /dev/null +++ b/src/assets/icons/feather/bluetooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/bold.svg b/src/assets/icons/feather/bold.svg new file mode 100644 index 0000000..d1a4efd --- /dev/null +++ b/src/assets/icons/feather/bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/book-open.svg b/src/assets/icons/feather/book-open.svg new file mode 100644 index 0000000..5e0ca0a --- /dev/null +++ b/src/assets/icons/feather/book-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/book.svg b/src/assets/icons/feather/book.svg new file mode 100644 index 0000000..12ffcbc --- /dev/null +++ b/src/assets/icons/feather/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/bookmark.svg b/src/assets/icons/feather/bookmark.svg new file mode 100644 index 0000000..2239cc5 --- /dev/null +++ b/src/assets/icons/feather/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/box.svg b/src/assets/icons/feather/box.svg new file mode 100644 index 0000000..d89be30 --- /dev/null +++ b/src/assets/icons/feather/box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/briefcase.svg b/src/assets/icons/feather/briefcase.svg new file mode 100644 index 0000000..e3af050 --- /dev/null +++ b/src/assets/icons/feather/briefcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/calendar.svg b/src/assets/icons/feather/calendar.svg new file mode 100644 index 0000000..6c7fd87 --- /dev/null +++ b/src/assets/icons/feather/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/camera-off.svg b/src/assets/icons/feather/camera-off.svg new file mode 100644 index 0000000..daa3e25 --- /dev/null +++ b/src/assets/icons/feather/camera-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/camera.svg b/src/assets/icons/feather/camera.svg new file mode 100644 index 0000000..0e7f060 --- /dev/null +++ b/src/assets/icons/feather/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cast.svg b/src/assets/icons/feather/cast.svg new file mode 100644 index 0000000..63c954d --- /dev/null +++ b/src/assets/icons/feather/cast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/check-circle.svg b/src/assets/icons/feather/check-circle.svg new file mode 100644 index 0000000..f2f4fd1 --- /dev/null +++ b/src/assets/icons/feather/check-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/check-square.svg b/src/assets/icons/feather/check-square.svg new file mode 100644 index 0000000..72ab7a8 --- /dev/null +++ b/src/assets/icons/feather/check-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/check.svg b/src/assets/icons/feather/check.svg new file mode 100644 index 0000000..1c20989 --- /dev/null +++ b/src/assets/icons/feather/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevron-down.svg b/src/assets/icons/feather/chevron-down.svg new file mode 100644 index 0000000..278c6a3 --- /dev/null +++ b/src/assets/icons/feather/chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevron-left.svg b/src/assets/icons/feather/chevron-left.svg new file mode 100644 index 0000000..747d46d --- /dev/null +++ b/src/assets/icons/feather/chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevron-right.svg b/src/assets/icons/feather/chevron-right.svg new file mode 100644 index 0000000..258de41 --- /dev/null +++ b/src/assets/icons/feather/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevron-up.svg b/src/assets/icons/feather/chevron-up.svg new file mode 100644 index 0000000..4eb5ecc --- /dev/null +++ b/src/assets/icons/feather/chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevrons-down.svg b/src/assets/icons/feather/chevrons-down.svg new file mode 100644 index 0000000..e67ef2f --- /dev/null +++ b/src/assets/icons/feather/chevrons-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevrons-left.svg b/src/assets/icons/feather/chevrons-left.svg new file mode 100644 index 0000000..c32e398 --- /dev/null +++ b/src/assets/icons/feather/chevrons-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevrons-right.svg b/src/assets/icons/feather/chevrons-right.svg new file mode 100644 index 0000000..f506814 --- /dev/null +++ b/src/assets/icons/feather/chevrons-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chevrons-up.svg b/src/assets/icons/feather/chevrons-up.svg new file mode 100644 index 0000000..0eaf518 --- /dev/null +++ b/src/assets/icons/feather/chevrons-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/chrome.svg b/src/assets/icons/feather/chrome.svg new file mode 100644 index 0000000..9189815 --- /dev/null +++ b/src/assets/icons/feather/chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/circle.svg b/src/assets/icons/feather/circle.svg new file mode 100644 index 0000000..b009088 --- /dev/null +++ b/src/assets/icons/feather/circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/clipboard.svg b/src/assets/icons/feather/clipboard.svg new file mode 100644 index 0000000..ccee454 --- /dev/null +++ b/src/assets/icons/feather/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/clock.svg b/src/assets/icons/feather/clock.svg new file mode 100644 index 0000000..ea3f5e5 --- /dev/null +++ b/src/assets/icons/feather/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cloud-drizzle.svg b/src/assets/icons/feather/cloud-drizzle.svg new file mode 100644 index 0000000..13af6bb --- /dev/null +++ b/src/assets/icons/feather/cloud-drizzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cloud-lightning.svg b/src/assets/icons/feather/cloud-lightning.svg new file mode 100644 index 0000000..32d154c --- /dev/null +++ b/src/assets/icons/feather/cloud-lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cloud-off.svg b/src/assets/icons/feather/cloud-off.svg new file mode 100644 index 0000000..1e1e7d6 --- /dev/null +++ b/src/assets/icons/feather/cloud-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cloud-rain.svg b/src/assets/icons/feather/cloud-rain.svg new file mode 100644 index 0000000..3e0b85b --- /dev/null +++ b/src/assets/icons/feather/cloud-rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cloud-snow.svg b/src/assets/icons/feather/cloud-snow.svg new file mode 100644 index 0000000..e4eb820 --- /dev/null +++ b/src/assets/icons/feather/cloud-snow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cloud.svg b/src/assets/icons/feather/cloud.svg new file mode 100644 index 0000000..0ee0c63 --- /dev/null +++ b/src/assets/icons/feather/cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/code.svg b/src/assets/icons/feather/code.svg new file mode 100644 index 0000000..c4954b5 --- /dev/null +++ b/src/assets/icons/feather/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/codepen.svg b/src/assets/icons/feather/codepen.svg new file mode 100644 index 0000000..ab2a815 --- /dev/null +++ b/src/assets/icons/feather/codepen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/codesandbox.svg b/src/assets/icons/feather/codesandbox.svg new file mode 100644 index 0000000..49848f5 --- /dev/null +++ b/src/assets/icons/feather/codesandbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/coffee.svg b/src/assets/icons/feather/coffee.svg new file mode 100644 index 0000000..32905e5 --- /dev/null +++ b/src/assets/icons/feather/coffee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/columns.svg b/src/assets/icons/feather/columns.svg new file mode 100644 index 0000000..d264b55 --- /dev/null +++ b/src/assets/icons/feather/columns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/command.svg b/src/assets/icons/feather/command.svg new file mode 100644 index 0000000..93f554c --- /dev/null +++ b/src/assets/icons/feather/command.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/compass.svg b/src/assets/icons/feather/compass.svg new file mode 100644 index 0000000..3296260 --- /dev/null +++ b/src/assets/icons/feather/compass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/copy.svg b/src/assets/icons/feather/copy.svg new file mode 100644 index 0000000..4e0b09f --- /dev/null +++ b/src/assets/icons/feather/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-down-left.svg b/src/assets/icons/feather/corner-down-left.svg new file mode 100644 index 0000000..9fffb3e --- /dev/null +++ b/src/assets/icons/feather/corner-down-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-down-right.svg b/src/assets/icons/feather/corner-down-right.svg new file mode 100644 index 0000000..b27d408 --- /dev/null +++ b/src/assets/icons/feather/corner-down-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-left-down.svg b/src/assets/icons/feather/corner-left-down.svg new file mode 100644 index 0000000..24b8375 --- /dev/null +++ b/src/assets/icons/feather/corner-left-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-left-up.svg b/src/assets/icons/feather/corner-left-up.svg new file mode 100644 index 0000000..e54527c --- /dev/null +++ b/src/assets/icons/feather/corner-left-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-right-down.svg b/src/assets/icons/feather/corner-right-down.svg new file mode 100644 index 0000000..a49e6d6 --- /dev/null +++ b/src/assets/icons/feather/corner-right-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-right-up.svg b/src/assets/icons/feather/corner-right-up.svg new file mode 100644 index 0000000..a5c5dce --- /dev/null +++ b/src/assets/icons/feather/corner-right-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-up-left.svg b/src/assets/icons/feather/corner-up-left.svg new file mode 100644 index 0000000..0a1ffd6 --- /dev/null +++ b/src/assets/icons/feather/corner-up-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/corner-up-right.svg b/src/assets/icons/feather/corner-up-right.svg new file mode 100644 index 0000000..0b8f961 --- /dev/null +++ b/src/assets/icons/feather/corner-up-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/cpu.svg b/src/assets/icons/feather/cpu.svg new file mode 100644 index 0000000..2ed16ef --- /dev/null +++ b/src/assets/icons/feather/cpu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/credit-card.svg b/src/assets/icons/feather/credit-card.svg new file mode 100644 index 0000000..1b7fd02 --- /dev/null +++ b/src/assets/icons/feather/credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/crop.svg b/src/assets/icons/feather/crop.svg new file mode 100644 index 0000000..ffbfd04 --- /dev/null +++ b/src/assets/icons/feather/crop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/crosshair.svg b/src/assets/icons/feather/crosshair.svg new file mode 100644 index 0000000..ba39401 --- /dev/null +++ b/src/assets/icons/feather/crosshair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/database.svg b/src/assets/icons/feather/database.svg new file mode 100644 index 0000000..c296fbc --- /dev/null +++ b/src/assets/icons/feather/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/delete.svg b/src/assets/icons/feather/delete.svg new file mode 100644 index 0000000..8c6074b --- /dev/null +++ b/src/assets/icons/feather/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/disc.svg b/src/assets/icons/feather/disc.svg new file mode 100644 index 0000000..2595b44 --- /dev/null +++ b/src/assets/icons/feather/disc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/divide.svg b/src/assets/icons/feather/divide.svg new file mode 100644 index 0000000..3cbff3a --- /dev/null +++ b/src/assets/icons/feather/divide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/dollar-sign.svg b/src/assets/icons/feather/dollar-sign.svg new file mode 100644 index 0000000..1a124d2 --- /dev/null +++ b/src/assets/icons/feather/dollar-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/download-cloud.svg b/src/assets/icons/feather/download-cloud.svg new file mode 100644 index 0000000..f3126fc --- /dev/null +++ b/src/assets/icons/feather/download-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/download.svg b/src/assets/icons/feather/download.svg new file mode 100644 index 0000000..76767a9 --- /dev/null +++ b/src/assets/icons/feather/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/dribbble.svg b/src/assets/icons/feather/dribbble.svg new file mode 100644 index 0000000..bb8577d --- /dev/null +++ b/src/assets/icons/feather/dribbble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/droplet.svg b/src/assets/icons/feather/droplet.svg new file mode 100644 index 0000000..ca09301 --- /dev/null +++ b/src/assets/icons/feather/droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/edit-2.svg b/src/assets/icons/feather/edit-2.svg new file mode 100644 index 0000000..06830c9 --- /dev/null +++ b/src/assets/icons/feather/edit-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/edit-3.svg b/src/assets/icons/feather/edit-3.svg new file mode 100644 index 0000000..d728efc --- /dev/null +++ b/src/assets/icons/feather/edit-3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/edit.svg b/src/assets/icons/feather/edit.svg new file mode 100644 index 0000000..ec7b4ca --- /dev/null +++ b/src/assets/icons/feather/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/external-link.svg b/src/assets/icons/feather/external-link.svg new file mode 100644 index 0000000..6236df3 --- /dev/null +++ b/src/assets/icons/feather/external-link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/eye-off.svg b/src/assets/icons/feather/eye-off.svg new file mode 100644 index 0000000..77c54cb --- /dev/null +++ b/src/assets/icons/feather/eye-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/eye.svg b/src/assets/icons/feather/eye.svg new file mode 100644 index 0000000..9cde243 --- /dev/null +++ b/src/assets/icons/feather/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/facebook.svg b/src/assets/icons/feather/facebook.svg new file mode 100644 index 0000000..2570f56 --- /dev/null +++ b/src/assets/icons/feather/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/fast-forward.svg b/src/assets/icons/feather/fast-forward.svg new file mode 100644 index 0000000..fa39877 --- /dev/null +++ b/src/assets/icons/feather/fast-forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/feather.svg b/src/assets/icons/feather/feather.svg new file mode 100644 index 0000000..ac3b868 --- /dev/null +++ b/src/assets/icons/feather/feather.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/figma.svg b/src/assets/icons/feather/figma.svg new file mode 100644 index 0000000..66fd217 --- /dev/null +++ b/src/assets/icons/feather/figma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/file-minus.svg b/src/assets/icons/feather/file-minus.svg new file mode 100644 index 0000000..345756e --- /dev/null +++ b/src/assets/icons/feather/file-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/file-plus.svg b/src/assets/icons/feather/file-plus.svg new file mode 100644 index 0000000..eed1200 --- /dev/null +++ b/src/assets/icons/feather/file-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/file-text.svg b/src/assets/icons/feather/file-text.svg new file mode 100644 index 0000000..4197ddd --- /dev/null +++ b/src/assets/icons/feather/file-text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/file.svg b/src/assets/icons/feather/file.svg new file mode 100644 index 0000000..378519a --- /dev/null +++ b/src/assets/icons/feather/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/film.svg b/src/assets/icons/feather/film.svg new file mode 100644 index 0000000..ac46360 --- /dev/null +++ b/src/assets/icons/feather/film.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/filter.svg b/src/assets/icons/feather/filter.svg new file mode 100644 index 0000000..38a47e0 --- /dev/null +++ b/src/assets/icons/feather/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/flag.svg b/src/assets/icons/feather/flag.svg new file mode 100644 index 0000000..037737c --- /dev/null +++ b/src/assets/icons/feather/flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/folder-minus.svg b/src/assets/icons/feather/folder-minus.svg new file mode 100644 index 0000000..d5b7af6 --- /dev/null +++ b/src/assets/icons/feather/folder-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/folder-plus.svg b/src/assets/icons/feather/folder-plus.svg new file mode 100644 index 0000000..898f2fc --- /dev/null +++ b/src/assets/icons/feather/folder-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/folder.svg b/src/assets/icons/feather/folder.svg new file mode 100644 index 0000000..134458b --- /dev/null +++ b/src/assets/icons/feather/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/framer.svg b/src/assets/icons/feather/framer.svg new file mode 100644 index 0000000..3e66347 --- /dev/null +++ b/src/assets/icons/feather/framer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/frown.svg b/src/assets/icons/feather/frown.svg new file mode 100644 index 0000000..f312254 --- /dev/null +++ b/src/assets/icons/feather/frown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/gift.svg b/src/assets/icons/feather/gift.svg new file mode 100644 index 0000000..d2c14bd --- /dev/null +++ b/src/assets/icons/feather/gift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/git-branch.svg b/src/assets/icons/feather/git-branch.svg new file mode 100644 index 0000000..4400372 --- /dev/null +++ b/src/assets/icons/feather/git-branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/git-commit.svg b/src/assets/icons/feather/git-commit.svg new file mode 100644 index 0000000..e959d72 --- /dev/null +++ b/src/assets/icons/feather/git-commit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/git-merge.svg b/src/assets/icons/feather/git-merge.svg new file mode 100644 index 0000000..c65fffd --- /dev/null +++ b/src/assets/icons/feather/git-merge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/git-pull-request.svg b/src/assets/icons/feather/git-pull-request.svg new file mode 100644 index 0000000..fc80bdf --- /dev/null +++ b/src/assets/icons/feather/git-pull-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/github.svg b/src/assets/icons/feather/github.svg new file mode 100644 index 0000000..ff0af48 --- /dev/null +++ b/src/assets/icons/feather/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/gitlab.svg b/src/assets/icons/feather/gitlab.svg new file mode 100644 index 0000000..85d54a1 --- /dev/null +++ b/src/assets/icons/feather/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/globe.svg b/src/assets/icons/feather/globe.svg new file mode 100644 index 0000000..0a0586d --- /dev/null +++ b/src/assets/icons/feather/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/grid.svg b/src/assets/icons/feather/grid.svg new file mode 100644 index 0000000..8ef2e9d --- /dev/null +++ b/src/assets/icons/feather/grid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/hard-drive.svg b/src/assets/icons/feather/hard-drive.svg new file mode 100644 index 0000000..8e90fa1 --- /dev/null +++ b/src/assets/icons/feather/hard-drive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/hash.svg b/src/assets/icons/feather/hash.svg new file mode 100644 index 0000000..c9c8d41 --- /dev/null +++ b/src/assets/icons/feather/hash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/headphones.svg b/src/assets/icons/feather/headphones.svg new file mode 100644 index 0000000..fd8915b --- /dev/null +++ b/src/assets/icons/feather/headphones.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/heart.svg b/src/assets/icons/feather/heart.svg new file mode 100644 index 0000000..a083b7e --- /dev/null +++ b/src/assets/icons/feather/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/help-circle.svg b/src/assets/icons/feather/help-circle.svg new file mode 100644 index 0000000..51fddd8 --- /dev/null +++ b/src/assets/icons/feather/help-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/hexagon.svg b/src/assets/icons/feather/hexagon.svg new file mode 100644 index 0000000..eae7f25 --- /dev/null +++ b/src/assets/icons/feather/hexagon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/home.svg b/src/assets/icons/feather/home.svg new file mode 100644 index 0000000..7bb31b2 --- /dev/null +++ b/src/assets/icons/feather/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/image.svg b/src/assets/icons/feather/image.svg new file mode 100644 index 0000000..a7d84b9 --- /dev/null +++ b/src/assets/icons/feather/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/inbox.svg b/src/assets/icons/feather/inbox.svg new file mode 100644 index 0000000..03a13b4 --- /dev/null +++ b/src/assets/icons/feather/inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/info.svg b/src/assets/icons/feather/info.svg new file mode 100644 index 0000000..a09fa5f --- /dev/null +++ b/src/assets/icons/feather/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/instagram.svg b/src/assets/icons/feather/instagram.svg new file mode 100644 index 0000000..9fdb8e3 --- /dev/null +++ b/src/assets/icons/feather/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/italic.svg b/src/assets/icons/feather/italic.svg new file mode 100644 index 0000000..a123d37 --- /dev/null +++ b/src/assets/icons/feather/italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/key.svg b/src/assets/icons/feather/key.svg new file mode 100644 index 0000000..e778e74 --- /dev/null +++ b/src/assets/icons/feather/key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/layers.svg b/src/assets/icons/feather/layers.svg new file mode 100644 index 0000000..ea788c2 --- /dev/null +++ b/src/assets/icons/feather/layers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/layout.svg b/src/assets/icons/feather/layout.svg new file mode 100644 index 0000000..28743d9 --- /dev/null +++ b/src/assets/icons/feather/layout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/life-buoy.svg b/src/assets/icons/feather/life-buoy.svg new file mode 100644 index 0000000..54c2bd7 --- /dev/null +++ b/src/assets/icons/feather/life-buoy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/link-2.svg b/src/assets/icons/feather/link-2.svg new file mode 100644 index 0000000..8cc7f6d --- /dev/null +++ b/src/assets/icons/feather/link-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/link.svg b/src/assets/icons/feather/link.svg new file mode 100644 index 0000000..c89dd41 --- /dev/null +++ b/src/assets/icons/feather/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/linkedin.svg b/src/assets/icons/feather/linkedin.svg new file mode 100644 index 0000000..3953109 --- /dev/null +++ b/src/assets/icons/feather/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/list.svg b/src/assets/icons/feather/list.svg new file mode 100644 index 0000000..5ce38ea --- /dev/null +++ b/src/assets/icons/feather/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/loader.svg b/src/assets/icons/feather/loader.svg new file mode 100644 index 0000000..e1a70c1 --- /dev/null +++ b/src/assets/icons/feather/loader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/lock.svg b/src/assets/icons/feather/lock.svg new file mode 100644 index 0000000..de09d9d --- /dev/null +++ b/src/assets/icons/feather/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/log-in.svg b/src/assets/icons/feather/log-in.svg new file mode 100644 index 0000000..ba0da59 --- /dev/null +++ b/src/assets/icons/feather/log-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/log-out.svg b/src/assets/icons/feather/log-out.svg new file mode 100644 index 0000000..c9002c9 --- /dev/null +++ b/src/assets/icons/feather/log-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/mail.svg b/src/assets/icons/feather/mail.svg new file mode 100644 index 0000000..2af169e --- /dev/null +++ b/src/assets/icons/feather/mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/map-pin.svg b/src/assets/icons/feather/map-pin.svg new file mode 100644 index 0000000..d5548e9 --- /dev/null +++ b/src/assets/icons/feather/map-pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/map.svg b/src/assets/icons/feather/map.svg new file mode 100644 index 0000000..ecebd7b --- /dev/null +++ b/src/assets/icons/feather/map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/maximize-2.svg b/src/assets/icons/feather/maximize-2.svg new file mode 100644 index 0000000..e41fc0b --- /dev/null +++ b/src/assets/icons/feather/maximize-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/maximize.svg b/src/assets/icons/feather/maximize.svg new file mode 100644 index 0000000..fc30518 --- /dev/null +++ b/src/assets/icons/feather/maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/meh.svg b/src/assets/icons/feather/meh.svg new file mode 100644 index 0000000..6f57fff --- /dev/null +++ b/src/assets/icons/feather/meh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/menu.svg b/src/assets/icons/feather/menu.svg new file mode 100644 index 0000000..e8a84a9 --- /dev/null +++ b/src/assets/icons/feather/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/message-circle.svg b/src/assets/icons/feather/message-circle.svg new file mode 100644 index 0000000..4b21b32 --- /dev/null +++ b/src/assets/icons/feather/message-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/message-square.svg b/src/assets/icons/feather/message-square.svg new file mode 100644 index 0000000..6a2e4e5 --- /dev/null +++ b/src/assets/icons/feather/message-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/mic-off.svg b/src/assets/icons/feather/mic-off.svg new file mode 100644 index 0000000..0786219 --- /dev/null +++ b/src/assets/icons/feather/mic-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/mic.svg b/src/assets/icons/feather/mic.svg new file mode 100644 index 0000000..dc5f780 --- /dev/null +++ b/src/assets/icons/feather/mic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/minimize-2.svg b/src/assets/icons/feather/minimize-2.svg new file mode 100644 index 0000000..a720fa6 --- /dev/null +++ b/src/assets/icons/feather/minimize-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/minimize.svg b/src/assets/icons/feather/minimize.svg new file mode 100644 index 0000000..46d6119 --- /dev/null +++ b/src/assets/icons/feather/minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/minus-circle.svg b/src/assets/icons/feather/minus-circle.svg new file mode 100644 index 0000000..80c0de1 --- /dev/null +++ b/src/assets/icons/feather/minus-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/minus-square.svg b/src/assets/icons/feather/minus-square.svg new file mode 100644 index 0000000..4862832 --- /dev/null +++ b/src/assets/icons/feather/minus-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/minus.svg b/src/assets/icons/feather/minus.svg new file mode 100644 index 0000000..93cc734 --- /dev/null +++ b/src/assets/icons/feather/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/monitor.svg b/src/assets/icons/feather/monitor.svg new file mode 100644 index 0000000..6c3556d --- /dev/null +++ b/src/assets/icons/feather/monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/moon.svg b/src/assets/icons/feather/moon.svg new file mode 100644 index 0000000..dbf7c6c --- /dev/null +++ b/src/assets/icons/feather/moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/more-horizontal.svg b/src/assets/icons/feather/more-horizontal.svg new file mode 100644 index 0000000..dc6a855 --- /dev/null +++ b/src/assets/icons/feather/more-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/more-vertical.svg b/src/assets/icons/feather/more-vertical.svg new file mode 100644 index 0000000..cba6958 --- /dev/null +++ b/src/assets/icons/feather/more-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/mouse-pointer.svg b/src/assets/icons/feather/mouse-pointer.svg new file mode 100644 index 0000000..f5af559 --- /dev/null +++ b/src/assets/icons/feather/mouse-pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/move.svg b/src/assets/icons/feather/move.svg new file mode 100644 index 0000000..4e251b5 --- /dev/null +++ b/src/assets/icons/feather/move.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/music.svg b/src/assets/icons/feather/music.svg new file mode 100644 index 0000000..7bee2f7 --- /dev/null +++ b/src/assets/icons/feather/music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/navigation-2.svg b/src/assets/icons/feather/navigation-2.svg new file mode 100644 index 0000000..ae31db9 --- /dev/null +++ b/src/assets/icons/feather/navigation-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/navigation.svg b/src/assets/icons/feather/navigation.svg new file mode 100644 index 0000000..f600a41 --- /dev/null +++ b/src/assets/icons/feather/navigation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/octagon.svg b/src/assets/icons/feather/octagon.svg new file mode 100644 index 0000000..124c548 --- /dev/null +++ b/src/assets/icons/feather/octagon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/package.svg b/src/assets/icons/feather/package.svg new file mode 100644 index 0000000..f1e09ee --- /dev/null +++ b/src/assets/icons/feather/package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/paperclip.svg b/src/assets/icons/feather/paperclip.svg new file mode 100644 index 0000000..b1f69b7 --- /dev/null +++ b/src/assets/icons/feather/paperclip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/pause-circle.svg b/src/assets/icons/feather/pause-circle.svg new file mode 100644 index 0000000..f6b1a8d --- /dev/null +++ b/src/assets/icons/feather/pause-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/pause.svg b/src/assets/icons/feather/pause.svg new file mode 100644 index 0000000..4e78038 --- /dev/null +++ b/src/assets/icons/feather/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/pen-tool.svg b/src/assets/icons/feather/pen-tool.svg new file mode 100644 index 0000000..0d26fa1 --- /dev/null +++ b/src/assets/icons/feather/pen-tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/percent.svg b/src/assets/icons/feather/percent.svg new file mode 100644 index 0000000..2cb9719 --- /dev/null +++ b/src/assets/icons/feather/percent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/phone-call.svg b/src/assets/icons/feather/phone-call.svg new file mode 100644 index 0000000..8b86660 --- /dev/null +++ b/src/assets/icons/feather/phone-call.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/phone-forwarded.svg b/src/assets/icons/feather/phone-forwarded.svg new file mode 100644 index 0000000..aa21bef --- /dev/null +++ b/src/assets/icons/feather/phone-forwarded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/phone-incoming.svg b/src/assets/icons/feather/phone-incoming.svg new file mode 100644 index 0000000..b2d523a --- /dev/null +++ b/src/assets/icons/feather/phone-incoming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/phone-missed.svg b/src/assets/icons/feather/phone-missed.svg new file mode 100644 index 0000000..4950f09 --- /dev/null +++ b/src/assets/icons/feather/phone-missed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/phone-off.svg b/src/assets/icons/feather/phone-off.svg new file mode 100644 index 0000000..4d00fb3 --- /dev/null +++ b/src/assets/icons/feather/phone-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/phone-outgoing.svg b/src/assets/icons/feather/phone-outgoing.svg new file mode 100644 index 0000000..fea27a3 --- /dev/null +++ b/src/assets/icons/feather/phone-outgoing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/phone.svg b/src/assets/icons/feather/phone.svg new file mode 100644 index 0000000..2a35154 --- /dev/null +++ b/src/assets/icons/feather/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/pie-chart.svg b/src/assets/icons/feather/pie-chart.svg new file mode 100644 index 0000000..b5bbe67 --- /dev/null +++ b/src/assets/icons/feather/pie-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/play-circle.svg b/src/assets/icons/feather/play-circle.svg new file mode 100644 index 0000000..8766dc7 --- /dev/null +++ b/src/assets/icons/feather/play-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/play.svg b/src/assets/icons/feather/play.svg new file mode 100644 index 0000000..fd76e30 --- /dev/null +++ b/src/assets/icons/feather/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/plus-circle.svg b/src/assets/icons/feather/plus-circle.svg new file mode 100644 index 0000000..4291ff0 --- /dev/null +++ b/src/assets/icons/feather/plus-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/plus-square.svg b/src/assets/icons/feather/plus-square.svg new file mode 100644 index 0000000..c380e24 --- /dev/null +++ b/src/assets/icons/feather/plus-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/plus.svg b/src/assets/icons/feather/plus.svg new file mode 100644 index 0000000..703c5b7 --- /dev/null +++ b/src/assets/icons/feather/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/pocket.svg b/src/assets/icons/feather/pocket.svg new file mode 100644 index 0000000..a3b2561 --- /dev/null +++ b/src/assets/icons/feather/pocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/power.svg b/src/assets/icons/feather/power.svg new file mode 100644 index 0000000..598308f --- /dev/null +++ b/src/assets/icons/feather/power.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/printer.svg b/src/assets/icons/feather/printer.svg new file mode 100644 index 0000000..8a9a7ac --- /dev/null +++ b/src/assets/icons/feather/printer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/radio.svg b/src/assets/icons/feather/radio.svg new file mode 100644 index 0000000..5abfcd1 --- /dev/null +++ b/src/assets/icons/feather/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/refresh-ccw.svg b/src/assets/icons/feather/refresh-ccw.svg new file mode 100644 index 0000000..10cff0e --- /dev/null +++ b/src/assets/icons/feather/refresh-ccw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/refresh-cw.svg b/src/assets/icons/feather/refresh-cw.svg new file mode 100644 index 0000000..06c358d --- /dev/null +++ b/src/assets/icons/feather/refresh-cw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/repeat.svg b/src/assets/icons/feather/repeat.svg new file mode 100644 index 0000000..c7657b0 --- /dev/null +++ b/src/assets/icons/feather/repeat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/rewind.svg b/src/assets/icons/feather/rewind.svg new file mode 100644 index 0000000..7b0fa3d --- /dev/null +++ b/src/assets/icons/feather/rewind.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/rotate-ccw.svg b/src/assets/icons/feather/rotate-ccw.svg new file mode 100644 index 0000000..ade5dc4 --- /dev/null +++ b/src/assets/icons/feather/rotate-ccw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/rotate-cw.svg b/src/assets/icons/feather/rotate-cw.svg new file mode 100644 index 0000000..83dca35 --- /dev/null +++ b/src/assets/icons/feather/rotate-cw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/rss.svg b/src/assets/icons/feather/rss.svg new file mode 100644 index 0000000..c9a1368 --- /dev/null +++ b/src/assets/icons/feather/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/save.svg b/src/assets/icons/feather/save.svg new file mode 100644 index 0000000..46c7299 --- /dev/null +++ b/src/assets/icons/feather/save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/scissors.svg b/src/assets/icons/feather/scissors.svg new file mode 100644 index 0000000..fd0647f --- /dev/null +++ b/src/assets/icons/feather/scissors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/search.svg b/src/assets/icons/feather/search.svg new file mode 100644 index 0000000..8710306 --- /dev/null +++ b/src/assets/icons/feather/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/send.svg b/src/assets/icons/feather/send.svg new file mode 100644 index 0000000..42ef2a2 --- /dev/null +++ b/src/assets/icons/feather/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/server.svg b/src/assets/icons/feather/server.svg new file mode 100644 index 0000000..54ce094 --- /dev/null +++ b/src/assets/icons/feather/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/settings.svg b/src/assets/icons/feather/settings.svg new file mode 100644 index 0000000..19c2726 --- /dev/null +++ b/src/assets/icons/feather/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/share-2.svg b/src/assets/icons/feather/share-2.svg new file mode 100644 index 0000000..09b1c7b --- /dev/null +++ b/src/assets/icons/feather/share-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/share.svg b/src/assets/icons/feather/share.svg new file mode 100644 index 0000000..df38c14 --- /dev/null +++ b/src/assets/icons/feather/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/shield-off.svg b/src/assets/icons/feather/shield-off.svg new file mode 100644 index 0000000..18692dd --- /dev/null +++ b/src/assets/icons/feather/shield-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/shield.svg b/src/assets/icons/feather/shield.svg new file mode 100644 index 0000000..c7c4841 --- /dev/null +++ b/src/assets/icons/feather/shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/shopping-bag.svg b/src/assets/icons/feather/shopping-bag.svg new file mode 100644 index 0000000..eaa39e8 --- /dev/null +++ b/src/assets/icons/feather/shopping-bag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/shopping-cart.svg b/src/assets/icons/feather/shopping-cart.svg new file mode 100644 index 0000000..17a40bf --- /dev/null +++ b/src/assets/icons/feather/shopping-cart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/shuffle.svg b/src/assets/icons/feather/shuffle.svg new file mode 100644 index 0000000..8cfb5db --- /dev/null +++ b/src/assets/icons/feather/shuffle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/sidebar.svg b/src/assets/icons/feather/sidebar.svg new file mode 100644 index 0000000..8ba817e --- /dev/null +++ b/src/assets/icons/feather/sidebar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/skip-back.svg b/src/assets/icons/feather/skip-back.svg new file mode 100644 index 0000000..88d024e --- /dev/null +++ b/src/assets/icons/feather/skip-back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/skip-forward.svg b/src/assets/icons/feather/skip-forward.svg new file mode 100644 index 0000000..f3fdac3 --- /dev/null +++ b/src/assets/icons/feather/skip-forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/slack.svg b/src/assets/icons/feather/slack.svg new file mode 100644 index 0000000..5d97346 --- /dev/null +++ b/src/assets/icons/feather/slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/slash.svg b/src/assets/icons/feather/slash.svg new file mode 100644 index 0000000..f4131b8 --- /dev/null +++ b/src/assets/icons/feather/slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/sliders.svg b/src/assets/icons/feather/sliders.svg new file mode 100644 index 0000000..19c9385 --- /dev/null +++ b/src/assets/icons/feather/sliders.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/smartphone.svg b/src/assets/icons/feather/smartphone.svg new file mode 100644 index 0000000..0171a95 --- /dev/null +++ b/src/assets/icons/feather/smartphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/smile.svg b/src/assets/icons/feather/smile.svg new file mode 100644 index 0000000..24dc8a2 --- /dev/null +++ b/src/assets/icons/feather/smile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/speaker.svg b/src/assets/icons/feather/speaker.svg new file mode 100644 index 0000000..75d5ff9 --- /dev/null +++ b/src/assets/icons/feather/speaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/square.svg b/src/assets/icons/feather/square.svg new file mode 100644 index 0000000..6eabc77 --- /dev/null +++ b/src/assets/icons/feather/square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/star.svg b/src/assets/icons/feather/star.svg new file mode 100644 index 0000000..bcdc31a --- /dev/null +++ b/src/assets/icons/feather/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/stop-circle.svg b/src/assets/icons/feather/stop-circle.svg new file mode 100644 index 0000000..c10d9d4 --- /dev/null +++ b/src/assets/icons/feather/stop-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/sun.svg b/src/assets/icons/feather/sun.svg new file mode 100644 index 0000000..7f51b94 --- /dev/null +++ b/src/assets/icons/feather/sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/sunrise.svg b/src/assets/icons/feather/sunrise.svg new file mode 100644 index 0000000..eff4b1e --- /dev/null +++ b/src/assets/icons/feather/sunrise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/sunset.svg b/src/assets/icons/feather/sunset.svg new file mode 100644 index 0000000..a5a2221 --- /dev/null +++ b/src/assets/icons/feather/sunset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/table.svg b/src/assets/icons/feather/table.svg new file mode 100644 index 0000000..679bd57 --- /dev/null +++ b/src/assets/icons/feather/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/tablet.svg b/src/assets/icons/feather/tablet.svg new file mode 100644 index 0000000..9c80b40 --- /dev/null +++ b/src/assets/icons/feather/tablet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/tag.svg b/src/assets/icons/feather/tag.svg new file mode 100644 index 0000000..7219b15 --- /dev/null +++ b/src/assets/icons/feather/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/target.svg b/src/assets/icons/feather/target.svg new file mode 100644 index 0000000..be84b17 --- /dev/null +++ b/src/assets/icons/feather/target.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/terminal.svg b/src/assets/icons/feather/terminal.svg new file mode 100644 index 0000000..af459c0 --- /dev/null +++ b/src/assets/icons/feather/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/thermometer.svg b/src/assets/icons/feather/thermometer.svg new file mode 100644 index 0000000..33142cc --- /dev/null +++ b/src/assets/icons/feather/thermometer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/thumbs-down.svg b/src/assets/icons/feather/thumbs-down.svg new file mode 100644 index 0000000..3e7bcd6 --- /dev/null +++ b/src/assets/icons/feather/thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/thumbs-up.svg b/src/assets/icons/feather/thumbs-up.svg new file mode 100644 index 0000000..226c44d --- /dev/null +++ b/src/assets/icons/feather/thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/toggle-left.svg b/src/assets/icons/feather/toggle-left.svg new file mode 100644 index 0000000..240be29 --- /dev/null +++ b/src/assets/icons/feather/toggle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/toggle-right.svg b/src/assets/icons/feather/toggle-right.svg new file mode 100644 index 0000000..fc6e81c --- /dev/null +++ b/src/assets/icons/feather/toggle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/tool.svg b/src/assets/icons/feather/tool.svg new file mode 100644 index 0000000..f3cbf3d --- /dev/null +++ b/src/assets/icons/feather/tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/trash-2.svg b/src/assets/icons/feather/trash-2.svg new file mode 100644 index 0000000..f24d55b --- /dev/null +++ b/src/assets/icons/feather/trash-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/trash.svg b/src/assets/icons/feather/trash.svg new file mode 100644 index 0000000..55650bd --- /dev/null +++ b/src/assets/icons/feather/trash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/trello.svg b/src/assets/icons/feather/trello.svg new file mode 100644 index 0000000..b2f599b --- /dev/null +++ b/src/assets/icons/feather/trello.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/trending-down.svg b/src/assets/icons/feather/trending-down.svg new file mode 100644 index 0000000..a9d4cfa --- /dev/null +++ b/src/assets/icons/feather/trending-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/trending-up.svg b/src/assets/icons/feather/trending-up.svg new file mode 100644 index 0000000..52026a4 --- /dev/null +++ b/src/assets/icons/feather/trending-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/triangle.svg b/src/assets/icons/feather/triangle.svg new file mode 100644 index 0000000..274b652 --- /dev/null +++ b/src/assets/icons/feather/triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/truck.svg b/src/assets/icons/feather/truck.svg new file mode 100644 index 0000000..3389837 --- /dev/null +++ b/src/assets/icons/feather/truck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/tv.svg b/src/assets/icons/feather/tv.svg new file mode 100644 index 0000000..955bbff --- /dev/null +++ b/src/assets/icons/feather/tv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/twitch.svg b/src/assets/icons/feather/twitch.svg new file mode 100644 index 0000000..1706249 --- /dev/null +++ b/src/assets/icons/feather/twitch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/twitter.svg b/src/assets/icons/feather/twitter.svg new file mode 100644 index 0000000..f8886ec --- /dev/null +++ b/src/assets/icons/feather/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/type.svg b/src/assets/icons/feather/type.svg new file mode 100644 index 0000000..c6b2de3 --- /dev/null +++ b/src/assets/icons/feather/type.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/umbrella.svg b/src/assets/icons/feather/umbrella.svg new file mode 100644 index 0000000..dc77c0c --- /dev/null +++ b/src/assets/icons/feather/umbrella.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/underline.svg b/src/assets/icons/feather/underline.svg new file mode 100644 index 0000000..044945d --- /dev/null +++ b/src/assets/icons/feather/underline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/unlock.svg b/src/assets/icons/feather/unlock.svg new file mode 100644 index 0000000..01dc359 --- /dev/null +++ b/src/assets/icons/feather/unlock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/upload-cloud.svg b/src/assets/icons/feather/upload-cloud.svg new file mode 100644 index 0000000..a1db297 --- /dev/null +++ b/src/assets/icons/feather/upload-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/upload.svg b/src/assets/icons/feather/upload.svg new file mode 100644 index 0000000..91eaff7 --- /dev/null +++ b/src/assets/icons/feather/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/user-check.svg b/src/assets/icons/feather/user-check.svg new file mode 100644 index 0000000..42f91b2 --- /dev/null +++ b/src/assets/icons/feather/user-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/user-minus.svg b/src/assets/icons/feather/user-minus.svg new file mode 100644 index 0000000..44b75f5 --- /dev/null +++ b/src/assets/icons/feather/user-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/user-plus.svg b/src/assets/icons/feather/user-plus.svg new file mode 100644 index 0000000..21460f6 --- /dev/null +++ b/src/assets/icons/feather/user-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/user-x.svg b/src/assets/icons/feather/user-x.svg new file mode 100644 index 0000000..0c41a48 --- /dev/null +++ b/src/assets/icons/feather/user-x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/user.svg b/src/assets/icons/feather/user.svg new file mode 100644 index 0000000..7bb5f29 --- /dev/null +++ b/src/assets/icons/feather/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/users.svg b/src/assets/icons/feather/users.svg new file mode 100644 index 0000000..aacf6b0 --- /dev/null +++ b/src/assets/icons/feather/users.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/video-off.svg b/src/assets/icons/feather/video-off.svg new file mode 100644 index 0000000..08ec697 --- /dev/null +++ b/src/assets/icons/feather/video-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/video.svg b/src/assets/icons/feather/video.svg new file mode 100644 index 0000000..8ff156a --- /dev/null +++ b/src/assets/icons/feather/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/voicemail.svg b/src/assets/icons/feather/voicemail.svg new file mode 100644 index 0000000..5d78a8e --- /dev/null +++ b/src/assets/icons/feather/voicemail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/volume-1.svg b/src/assets/icons/feather/volume-1.svg new file mode 100644 index 0000000..150e875 --- /dev/null +++ b/src/assets/icons/feather/volume-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/volume-2.svg b/src/assets/icons/feather/volume-2.svg new file mode 100644 index 0000000..03d521c --- /dev/null +++ b/src/assets/icons/feather/volume-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/volume-x.svg b/src/assets/icons/feather/volume-x.svg new file mode 100644 index 0000000..be44240 --- /dev/null +++ b/src/assets/icons/feather/volume-x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/volume.svg b/src/assets/icons/feather/volume.svg new file mode 100644 index 0000000..53bfe15 --- /dev/null +++ b/src/assets/icons/feather/volume.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/watch.svg b/src/assets/icons/feather/watch.svg new file mode 100644 index 0000000..a1099da --- /dev/null +++ b/src/assets/icons/feather/watch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/wifi-off.svg b/src/assets/icons/feather/wifi-off.svg new file mode 100644 index 0000000..35eae43 --- /dev/null +++ b/src/assets/icons/feather/wifi-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/wifi.svg b/src/assets/icons/feather/wifi.svg new file mode 100644 index 0000000..748c285 --- /dev/null +++ b/src/assets/icons/feather/wifi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/wind.svg b/src/assets/icons/feather/wind.svg new file mode 100644 index 0000000..82b3646 --- /dev/null +++ b/src/assets/icons/feather/wind.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/x-circle.svg b/src/assets/icons/feather/x-circle.svg new file mode 100644 index 0000000..94aad5e --- /dev/null +++ b/src/assets/icons/feather/x-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/x-octagon.svg b/src/assets/icons/feather/x-octagon.svg new file mode 100644 index 0000000..8543198 --- /dev/null +++ b/src/assets/icons/feather/x-octagon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/x-square.svg b/src/assets/icons/feather/x-square.svg new file mode 100644 index 0000000..7677c38 --- /dev/null +++ b/src/assets/icons/feather/x-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/x.svg b/src/assets/icons/feather/x.svg new file mode 100644 index 0000000..7d5875c --- /dev/null +++ b/src/assets/icons/feather/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/youtube.svg b/src/assets/icons/feather/youtube.svg new file mode 100644 index 0000000..c482438 --- /dev/null +++ b/src/assets/icons/feather/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/zap-off.svg b/src/assets/icons/feather/zap-off.svg new file mode 100644 index 0000000..c636f8b --- /dev/null +++ b/src/assets/icons/feather/zap-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/zap.svg b/src/assets/icons/feather/zap.svg new file mode 100644 index 0000000..8fdafa9 --- /dev/null +++ b/src/assets/icons/feather/zap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/zoom-in.svg b/src/assets/icons/feather/zoom-in.svg new file mode 100644 index 0000000..da4572d --- /dev/null +++ b/src/assets/icons/feather/zoom-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/feather/zoom-out.svg b/src/assets/icons/feather/zoom-out.svg new file mode 100644 index 0000000..fd678d7 --- /dev/null +++ b/src/assets/icons/feather/zoom-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/isme/awesome.svg b/src/assets/icons/isme/awesome.svg new file mode 100644 index 0000000..cfaab8b --- /dev/null +++ b/src/assets/icons/isme/awesome.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/isme/dialog.svg b/src/assets/icons/isme/dialog.svg new file mode 100644 index 0000000..809330d --- /dev/null +++ b/src/assets/icons/isme/dialog.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/isme/gitee.svg b/src/assets/icons/isme/gitee.svg new file mode 100644 index 0000000..5896c65 --- /dev/null +++ b/src/assets/icons/isme/gitee.svg @@ -0,0 +1 @@ + diff --git a/src/assets/images/404.webp b/src/assets/images/404.webp new file mode 100644 index 0000000000000000000000000000000000000000..3482bf96530efee4fbb405eea59b32a875c0e575 GIT binary patch literal 14344 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 z zs3p}w3Pn{PlhhF5)`@M2S`r$=$hjtx@HZ14HC&H6+^S=6XIiOBspRL?*UpLjt^K4T zEO=^Ld|F6aawj@zVvrOTx3)^_7V z5N6~Y+aI8Bt08Nj1UZ{H;nfal7pCGQ!}I+x393s0qJR{|*ghybl+fiP7`dF(!iC@! zoT2^UIIr|uJ=J9I1fdW6nQDsBD}ZN~BSdrl17H3P?C>?l8@k=QzzXei2eNRT$of#$*cAjekPi{H^@))O= ztT&g~LNr8B7V{=u0fN)!tQ;`*OVTQ8R_DHAPY3imsiQ|;Q?{;k z%Aw!Ss5{6>l)T+N-c^1l*t_{B2=cWs*_{i7pBww@P?2g)zoFT)m%feMpj)S zP}^g7ZtfSCv)ZPA=w3hoX*Rrz3I0G+Gz0Ym#Ov^!8wr~U=v@1vP0sBz+8f96BnaGB z0?G(`jY}XGE0M)Mv09Z?-XN=wDk-Yhel5~RN5bBWf<{sU{nPyjNa9s6 zWXc%95>d)2c3Wl7X3rLzKE#}lCzM?di!q}Z&5XK;G*B2y5T~mr`q6>?N*10hHhPe0q~ z<2J-mScQq|oQe-aybQKoI+lEbW*WaG*xk3WZ$DrxcF$*xuOCp_?R zVUvCa&t{BdRDozuAcu{Ejc*#CT;d%I~ zS?v`*bO>FsCqIZW;>VTO@E<_ZAffYX-S2Y3jJE+F#GoqK9yQ|IyLw*R#UQ-TM)1 z*y6irmTSj0%A~g03Tv5PKEbH4>mn3dI$FO1b^piRB5L9siJiy&b7A2Dl0B=7iIGOXfTdWqJw2>s1_yE22(JER!)0 zc&`zy*y<~!0e4v0BrSI zu#S3?IoiSns8LKO<)26VnG>Fc9%)i1+gZnmr5?!#BVNBE({r=5@ip9Gf^m~LEqXVqzml^ zED4CJFsCaC5azR5@wEDIj6{!oIHqVN$!WQOsw9R89FacdbOmI#eVeT?fphHtD-L&z zEdqB!Y1<_}78JNR)UCuxt@#t|(|w_hUr!J9h;1{liVK%+*%?r1yyl(|Nj-S6Or};U ztz@;!CJ0!vog$ipfp{UOD05AoP^yL!=z7AW*o7hCC`FGIZcWkyQ}i87`x#6@jU8m2 z0pSu(PuwW4Mshk#rc@8LS>GoFx$-#%;H`yGt2sv2tT6$^?9lh!2N^(((}vl=J*oz( zW2-d0rYU~hP#1U$L)@H(;?VsOh1G}Kw%i1CAL;G{(8KO7inPq1*s^7n$(2>MsS*FvsjNfK)X6M$gcrl0WMz zUs<^W{MSw2Xf4Va7mWz_$N+?+0>b8HF~ED{#&$ib+#sxmced8^T2V~6QnpwFh>pRD zzWNzTa`K}HP{FSKvv9wtNP&Vx{6zIj{C?*cr z59uT*PAkkhN`!US?Qfw8$&iv#(|i~R%1{WZ+Np97>{LzpBMpmI=&7672$+rx{uzTo zlH9~)$LEJcm!6~zgF}^xT5(MK(_-e%`!g~RYfb4_)r#_}S1Ml(ne{N}}+o4(P*4C|bWUYJsP=Mi%9pXfitD zEIhO}BblWX63h{*#XoQ}ziFzAj?2QbF;SDC41R}={ZV?|J{#N;cTZZLnOKabRahFu zA_qrR`*D@zse?{1pP3_4E(R;7lPPtVL+~?9f>yByegW*)k$~t}=1_t9F(=}yF7%Iq z67=V9=hB~!`HFf9EVwl?e`lbsEr9Zcf|UoAfAvd_`a8V85i(3Y9ah_*oKwvS&p?Fn zeET9)%72g2R7N7L;KZwim(+;Kl3^TjmJ$VQa_YpPGjl~&A68eC zNfrw>`NK_u|9ZwaTmbG?F8?6#{E=;@mZ3j_(hY$G?MFfUGn8B?cl$e1V7mso$n072 z1mx+q36asR1h zW*lOR!Fsad43@{VuuZlklJzJt1AvgU0-CunaLHDZ<|8|B7 z7rgaYGUx4}IUa*0K8xp_GlfW2_3G>V+~p)6O2xzp0*=r9Qf$k!MvAW9{-mU#l^E00$rR%o^kB--<(laQ*q zIw#C+lnr~+lKIY;|0dBL4mJ3|-nJQ7-)yUH(f7Ub~cF%FqIsLwmjL7#|H5<*|Y*h1Njmi9PSHKcD7JB%oT z*y{|7Ma@6*sldK}<{T$jUt~I23c)odJ-%6DMe?I-YeR-v7*!O&+`Q3uC5%IgcVPTM z`7C+OgQ}^DtfAom4?Ii{gKO)4FEz4`gP4~2gP%VN)Su`w6zg|o4}A}x02~*1bZFT# zQ8!R&*L%4~*&b}s&yLujw3X|?>|yINCr!qwLue#^o*ie5yT5gFc#yQ2=Ay7wz#qo? zqYM*cz8ZzQ(a}*9u{Fv zn%!Q&K4JH=pnYOq^r5xBpg))curzi?8>gp>m|n|aOV8LQc}I>sF+bsL>2NW4Anu$Y z^6E^Mxvr3X--iAKLnO#GTxYD@zT*RgU&!m4P*>%{#U6nAw-TPuK7nD&DOMkTK7#!Z zgWMOq0l)8W^?SM)B3D-o)?>8f#YaM^D~2aAcVkwXC=ZG%ifk~gU( z)6Rptk&rd%t0XYgOOuP^8{Jode!=_KTchA+%(k3`&3q=X$YGu<*Rw$;dP{15jyC3WdUP7mY|KTIG zzo%B(Hs&@cP-eY;Z1Ij%#QC|K(;5}{O z%hR;cJwH9y;yM2YsdHjBkwtL;1#knj(C*dIX{J?ISKHXg+Q{N#txBWRl(5&P8*%<@ z(?QUqToR@(#-a%O^@{;(lX}iMW~L>=VhNs|6AM=J1uhqSOP#1nz8pnXRUVecN(2jH z7Uhmg4ZB>}dNJYvy>(YG2);G68)n&tMvIx@_DNBaQZ^ZKM!5QWCM;PX4MQ~#DUm}e z3HTrVa@tc`&N3$~jIz!RCgYI2^O9(}ddVavMrOn$OxWciGU#pZP}JN# zQ8O4Jh+P;7rW~y^$_)Y~TqgYGWed7p!X&J7;fqzLVZG{{qY*>&#f%+NC~?3LxSQM! zvYb^P`g)ujXl)Su7S%!_Q<*w*^nwB-7F6ofdl=D?bRk8dxLe;3rKE66x#VNc4ki>^ zoF64vF=&Y>GjK9JPEIj@7URt`cQ;8D>fr1-|IRAi#Rfj0M`M6zXB+ycY@`oCTT|{z z$|xbo6@t^xwy6Z0m7d%Lkf}U`8MzpEd2Z~7 zp``5cn<|t!pKbCuoaLnfMy4C;H0hVIgH|990m8g32Y!E`?jTm9D5Qlyqr{~T8LYV4of*|O(5~MZLw@)9- z);(Qb@Q!FD(P3dCAA`TFDoJMhYWOv|QMo4Wz6>zw z`Pg~uJ2dt}U<^e_QW=r9fdxO5&3{6$=$=NoPK#a{ICM9G!A%|69^ECI*e8&J`}K(0 zJ)RH0bFgZ|wAJHwS;)(s!X+9c*xE`sKiX}S*FWZMU6rWJ`@%J!cm@rv)R&SmqP=uz zZbRDWVhalJGPf6-&ItMW0wYTT70~B|d%?Kmq|$9!F5-VL&ewd)FFW9R)636ewH4{K zK2_z!$+IPn_ytpB;+VQCU<(zY@8`8k%VK!jqPZzC?u+H5@B*YEklm-uA-H;Qpfm}6 zxg>Aioi8;nvwuw>y)Mr0&X4oL-|tR`0636jVS_N7PlT#wEzInXi0J7Yds1)(^6loE z(4U9J5E-)3ST=44GGTj`~@tSnTC(YW!rti11*N{Z$BDv6@O7F1W7`N40)I@>~Jg)~v zihT1Nv}Xz|%;Sget4SFE3{bLWsb9wit)O@=x>_L#?}DNBZ=2VhPa|EK&K9z_3+Rjq{TcWp+gGfqoS(1b!2}*L}O1myu}O6HwE^)K=s5gEU^JR zYk|TDcwo7Ki6ij4Z2^WGYtdA?@g@R~kEkx!}K1cL=h(FrrOLLYFYksA+zSoVQK zZ*FexM>db=4x4&C{M#>73>MhW4_KZ}p-k+S4YWx1(duUWxk4sax}aTo_Ru(`K@`sH zvb^0phx-9O$a(mhIf#Dz$04H;$H3n_;xH;XCzcoK5TaW}fo>Pz00|BtjBwbcI>Lq^ zstihm`xUTU`CjCl1qM@-}2oQ(^*>4cHFf0ly_STq^ktfs6W#&EyX&Xx9(*+Ok zHJtr$Ou%EOA_q2*}C?^Es%VLWyB#2$(nj0oGv#^0J-um!ZZ1b^$K0@uI7-A!y;_%d|SPh=1tU?Y3ZSvE^3og!RI7 zsx@%#^p;qtG3p`ijW1b(cjUy`n-yRK9s~QGh4qu8(C8I)jCy5&88jjU>q&#kjwQ*B zd8cc}@DFk;3s}`8cwE&KNHRDU8F(0DsP@K%)8Aohww$y#)Qy4)6VQG^x_5|p=hu}U zSWO{D@T;>>AJjrPH7Fv&9iOtvWPNEm!2G&*ukI&XDuO`$bbS1KDxg3UREU2q5avoJ z?4=;oJ#f!uf7QJO*P%aI0QR;(#Ho3XV;;V;1k2NPH=`P)4Pz;5;T3Zud%5QWNvRiF zi2s7GZqyhw=+S!#dssPlM17gHUo}zreOw<*hK^-JboN!q`X{2uCeB=ntmRjx%u zo`DH$_i6KJ;@@`K)Ug>}4a874vH%yxL?^s7bCC8q^Mbpd_zr8!M=vZ5**p#K9L7U1 zQ$ZnZFHbH`p0F&&q3(hX^w4Wbm(YV+$`2Rxj}N(8U#c?Eo%xXeP1|pq1REHj=ZXU+ z2DM3)dwfh%;F}v9>?#)2OoB^*O-QCnz*YifesOe&PJeoG53R6{s|FQV>NFqZj3c@W zwTG#|)kExhPpE*jfvblQc=K{7Si|Q;suc4iet#Q`fAY&=fOZvE4Gp0G;fzcbP7jd; zwPz)00NMF!d~A(DxdCKA2qc}UNXCl5s1)}R^Yk2y^KILuz@S_K(jf=33XUr0(nH&# zw%y&R&HdJKyHDK;QU@S8-A;|X9JN}gll4T@A2vf$7tw_Hg5#XI#V0Jn=iQ0fB#K-$ zy@%8>+25r$navB=zy$JrrC)CRo+kZ)WKy{W?0w}~CY_1uBKXGNqVB)f!US!o&ZHpP zoz;~I_md5+4K~OiwJpR^kSRkZ^N^_us0P&nSH;Umufe(=oRawCh^Z{NB5su~Q=&r6 zha@-RijKB$HIyU;U@e8x8d@X1~>l06e;yOZx~A|V?8^SWKFOgXuFj) zc_Ji~4LC&?t9Hh9v|GXKw-x61I}gn4wk@UreSzYG+{UC2LWq^V58qeTrpSmzMTa5|Aw^&G(WQqc@Rwp0)itioN9=`AKCr9Cq% zwt!z9?X>Q{JxlfUqXEpC2NJ>&Y^*H9I(ladM)|TJxv9IjfXWaPH^0V+{kfxgw=!C? z)VqT>pRa*`2cLVDiCSIL{(`L{&R&GX-WR-QQbEkCP^utAFY){y=qwPmxbF#20n?(? zCwx#0CsPmkVs=dgZSXnrb*e{UtU{AI1RwZZTlb$;piLC9vD6=-g5Xj7{$fHZ&CM-G zMPiKO7H!XCnM^PTU9`E~fmau@r%8p2s)w}Q`j80xh!rhM+_%Gi`NS)k(!S-@P&7hG zK`5;%dgP1DX?y7ZVQCFVt5jpH!W{H599fLtuOIIm=B*<^OKCno1RBY3We@AR3g2wZ zw^sT><;mTo7htK%f~)U^ZvuHy+Ja{YrEQmFSwnb;Kq=lPeWgDnn>79U@TQ_#EzUDHF0-{dQwH0aA5aqyrqASB?IQeKE8%)N2AVMQ@Ux$D%_ zmwtS&L8yqX!!oA_E%HDJbmZ9*!qfCiC??kdY{^Zkt9=ohuXyJsH3qdiCKZ4K$L zBeJ~HR$*Pm*HFJeu^PD0%E-4jEj~67P?n_vFYMDhN`;4f zFU)+3l^`x?&%_99VR~rF?o0a29$B%#Ke#k|$Eh*{hkV|OTJ_jNizeC3-=f#>iQ!sA zacA`@)JDf-$XjiQpnelHUsUcaTO);+gHu(t7Z?n z%Tb!{(@2zlatdbA(G(Se2IC-p=Q*lpVh6g7Y$?q#kG~AmVwcv=&E3vJ3%#=D9t6r+ zP#ww06jqE`SH8Rig((p8optybXzDaR=z)9-zm)BCZjibvh=@NBm$6XlC3 z6zFd)xCNIF8YMGT?Y4}5Hg_II7mE9gs2;o%i{&XxdE`!XLi{p!*zDl%++b8@?O zP?FldC&{m~k6r{l65of&pJG(KyrQ@He~d8u?+#z(7zU?btwZHQbF0G+UwJ`zB8qa5D|k@7gSUezojk%J z@I>AgW*6Gax?`O;DedXTFCOhoX6mzHl2PQV#FkHjO4U^{nt`4)8_9Kz==U zlR^s)9&Sv;6J`7m#w&?U{+89^lQfl_=j?WT;Kv{?E@c7dR6ddv*I0S6w=9+%>6F zN)iSO+t3#384R%GOUf)Ef|km*B&oM*n0FjKHY+!Exoq>O)1%Qmif1$EzxkZgd;Ko& z;P_}{BP%Ow1CPN942)*CO&uuEdC)Ol`0ZHacmK8`(qywaCW)B*cWCGvBV#RNvC^C) z0KL11UJSsBUX(ttgOGOIJ4g~X$lVFhL`GKpFaF!KhVJd{75%GwMOHKoVEr@>nnG&P zFe9<;FXym8r-gPkJi+7@&a*H@k0&ZWh98}Y2g3xxuwG&=$hqxriA zT>ZY|dRBEFFt=F`u*An9jf{^7W}^B*2_x{e7NDpC&w}S#C;ZKaZxt^ex|T^8w%W@@ zX1!pry*$5!lWICJQlv{TL5Eu zTRydE3agoxhXqdgpCJq32fu?EHHe}LXhEVHLsRDUMM8Gj1Y!g>P6qD_YV@)?*_iZ@ znjX#?K4kxWt`%&X4nVT*{6Px;OYC=NeOpm$=`w{xD+3u9K@D~MExbyFWdyOE-pw^X;;~O;p6mfp zi{>0Sc;E}37B4djSMA}Gint~S@2206SKtw7kGCfT9k{n6O1hO*+YDLE+_16)BcF0| z4i4x;R5Hi4HP4kB6*WDrq9f%=80XdpKi8u{K0jcE;u)4_Y_$>t=%+h~D&)JAsM2=h8H-o}Fce7uF->Kc*0f?>*=_KGlk zrvBtK4v0*QB=^MmFqcWGZz;Ag{36o#IHRr-nCm%}>XBf|LVbRXw-!Bdfu*Of)uaOU z!9UYk6Mstuu`e#!#v>qV69jXhY^(>qni8hyV8U2Z^fxqN-$z~vLbZy9+ygtj{ITv~ zn@R}j)qZUzNo-tC7Iu@@Cbn~nZTokb}+&Ylo@0K@{}tl>O~jNG7dGn1||F4^&Q6C4l5)9#$JP+6I=oHz3LqMb{F{h^R;D>PO2(s zTG@)IMDvIres9X&c+Z$O%utyZqRl>;E`sz9RrEA6_f0fog88I^GB4}|0e*I(@@K)g zT;MjOlbwy$?7IqFA4LsHAFSJY5(jdgwQdNDx^g1?|Ot$5-a3pnyr%IST$8by=DaSMrgQDw)a@Q|k^E?XWrM+>- zak(&IOIUKDthGJVepx-#%(FF?6BRh0@crjmOFrmbGW@>~X{%e{0B$GjRgy6p4mhIT z&!bN-CQcxY@n2}=4O|pgY|UXQKPKC1x^lisdB3Ojf?apsl=ggJV4v|_n_~0$C!ov9 z-00#tyl5&zSrxLy0-oqvY>bA9ZS6gO*~NeUd*7{}O92bKQe&rnql8{Cc(8+MN? zVZY~d?Oz57ld771|8b*_GQJ=IB-p2NeWN4n!8z*E-cpz6&3b$i0bRApLO$@|fFTkP z8qE$eI)T8J$cddv__j`_VXAUoY0F|`)|5X8^?QLaON;KwJcN~J)4n5~@r>#UDjcaP zDS|p~7~8sAWqx#)_&_sbqNkY#UK`x2(C=Mb&ahh!*6AGJtqX5-D~oWN(g+8EPtjVy z?|TPqb%e;Sbzr5uB+dms1|X(BOkI5RduC4-nL|+N`CTOmFmPTr;AQ)*1rz+I0Ldpy zNCI7$367SKx(Y}5UL;gxE1kB)8A63_>Ei0C)L@U{r0Y+;^`7T2M;Sc-KWg%Ae+H9s zXvq_og$99YYoTJSB1{BH;X54K5DF|6xymw*GXuAXGW7yDMTKNJWi-dqmUWY^o>F*| z{QTFkx{kdncxck<-;W7XJHi|>*fOMrTsfyon=uMPna$65r+3}Ksi64z-h_+;&pvKS zcY7jC+)!f3j3?^VD<8Hxe)XdLodpJDCxu`61909}*by3BDx6{F(J|~$&LX^uB!CBK zxxeu0BVml3FWV93gb>aHEQ1~rjbd?7CmpC_1ARDwlf80$vM*UstY30B8_G~8*gP(g zkhTuyWTGW7tz|GhA3s;jlEotFMt|ESkHqaX3HM=s*`-1zk3?_$aC;BW{T`|vnN?)3 zZn@lhw1P3gOr!FfqM8iVyi{t4*z#7UQ+=q9_4UOx-jozqb`%9Q2(W~}d)NZ|TP|b^ z{_D508gaJXOx0ssBqw597>lFd2wXrw>d4Vbw^@?Q50vN+*Y9?8Ql(urN(?6Ap>j~3 z{VQ<%=eWCjg;^$P{X3Cn!qMtcnaak9;48LZ!_B`QW>P4!2Z&Hf@Ws^+wb;QjOG%|+ zki-`n2q_RXE>-=Z$lemC$p!YJIg-v3WQwyaFbDdmMb-JXT9-$_J6Da5$&Zhz-C~3x z=cW>8$n2$A-8SBwjHZ0@YHmit<94ELQlvt>Fg9JPrCZr3{>an*XnQo`eH<2ws>T4% z{l;9^UpCHIAELt~X0f#oUXcd&?LINvB+k*=AAji$m00DSs*5`1g+C9?Tf74i$%=)3 zx2o3#w&D?US&9bSiyuo0nd?o{~G~U-x7U1 z?~KJvyxT@~O2*z?oDhQH8h}6Op7;|=#{fFquP~_hhwe%V?vym!IQ(7MqeFfGQMAGA z&kPwMTW;wXX7WFzHv|>(0!uv#;r459w(^`Z?CGdsZ_9ZlM-qX}bBI_T6%QL#1Sx;G z>-EVb`bCT9#ZRzel!KB4|IJnpDuN|)ApbcJaK!rMlB3Um!qFhboTieu9#U}%6&NG@ zO)FmMv~_uS&|p$Uk1t`o5-PA+m@tKvlD0I};sDjOd7b8mGHtNg3D_?2GPG(zefsz9oIk(!4BVM0{YsMTuAgN0VB~kdc=0Zm3t9p< z!eKz^MRexhU=f0x|1_xIIJejTd0S!MzIf@{*`mL0e1Phqpb)kjg8b!uoaaF#<^zim zbeP(YV^+Xf2?<5we~8CGP@`q`_}S=7Dk@5`iHAxqp*zCgoAAQCSgJhJaggh*z)LCR z-hyY!E)V$(guIf{a<+db!}L_@zMtW}&TU4T@*I0+JrkRtuhXkVM}=_}7q6{&)Jk~t zJlu1{;8hM?NL7(xqQuUv>L-N9k0Hl|L27VnsQ4T9xu#?3K?G%d{khQ>nndjNF)!(? z9m_m8I5;gg-GZKkqU@U9w(;A&8J6c!DR12xh5_8fQmubH)V8jg01|3-)0Bn62Xt)+ z`dASHy(&)99;TYeu#S#H-y6h!efxSM5WN|IzV7kZrX43GVfpv;6Gp#GBLAHf$$w*D z0uh_~d>{;h8+BlBXqr-vzTP)C{{uUj`wZ#D%(zq1^}!9{S(}b!ZC>h6d702)e(m7U?;SbJKHak~G!nvB`HGNER%+`3*CroWgy+WD#DWLn@dNn1X}I-k3r zVdwF_<=?(@`P8*#ugU7pe4z>g6^{H1$sU*Oe=+1D0M3SriiV1Ywtuzn?EMnPJf8WS zrpC5BS6q~5dYnmUXqQ!MZnLIi6W2P5CtGgLsymIuXBpaC8lq8u ztZ%n(*|!OV40^Zf)XEUXYPhVl$!~D|&cg;dC$gqwae*^*ay#sF`kg=3>bBc&33M&| zZ2p616UU00e$+fQ6*DE9rbBshR^{xb)DVhFK8j-+Ng9q4+#h_^{XEk}zt(8lHvOlm zbySC3IN7$TfrXuQ(VgPE*{`-A2)JZo-$~{;G2MJ7Y0Y1D{;y0J1gia~jwhku1^`%Y z0eN6_T0ml;AS+g+7#S%kCTJLj1RSEV-S08y_ZXd>6rS2G#@Bp5*ijcAi1&l?c2a~5 z{K4bpx>X&i5P1n11-TG;7hQulWUa$DXIxdqUj1G1*{bf?ZEl-zZSeET7~yTX6Q{(NpAJ|$l1y9y}!e0X&OL4P%WC|(zgU!NQ9 z3!Mg(g7ELaKB3H7uReLQ$_If;3v2F?9&^Y^s9zhmnY;PQIK zHO$8s_=v5aMJ)84!FO}XW!b3C-3#B+J4WC-JM_`}|GURL#_gK)>;F6Y-!AVEVrPfJ z%D>6STrTuna5x(4WQ(wom2xyX1Z5Jj)N)b8QbPSw?0zI5Fyix2F{A&O9V00th&EpG ztu@kzI{Rm)jpv`wK=e!#kn?|xYFPqo_Uzp|Wy07fe5XdwjA$5m zSX@V!90ntAz~N%;cGWi~g}^QS-o+9y?s82O#3>Cq-Z6uN&oz06;23vo$PGc}6?~eU zJ>f_4CQ6W)oFI@>KFd9&Pn9AGTJ^kADM{4p)Heyuwh4#&T_0p9s8nZr8wp8@?EL*f zcGx@~-_1lxS1!$)y}z~TM8jBg;(bO@S^k2sKv7dPl4}?r88lM+xT`_M&CuNpDkyWI ze15t%tWYKWLtZ|s-@!u(HM9gb4v9h$TagC9nAvrf;{n^k?Jo^aD_n>EpCEt*(tWer z8ev0^5a-*krpzT#It)w0F1Ry@YVs^WNI=sW3MFK#(YDC`Tu6Ie{HB26v(ni2mY7#W z{B-l$UjKW`uF)Zu-GynoY?@O|#EC}UO>Cv$ss{=~rDcTdNXiE}D^r*PE}FzABI+Ix z3nX+Pqb&gWdhEsKI`7d;B*3z1zOoFwRk41*t1*9P6jO>=N&EciDCGdty#ak4&v{nR z#78O>L_ro;O7zrnq@_$3h1*+26O2vUw)VFe?M3`(%M+~olv_J!1xL>u zK)?Pnv#DfLvfBM^H6YMK!cjWAqY(>f(!NGioZ^&{4@alWdVtC@fXZMUB|HMXYxACM zlWXec7P=Zm*6Vr1U3t8-YtKLRp2sprCp`b;%S*pJG9Thp@3k2*9V z@+Wp6w|DV3qC^*%EVp`pQ!+7OY~HD~ozrQO44wFCUcJqz1;dCMgMp8_tYJqY@*AX+ z89cC=$4Sn;3U*{rhOZ<4Q@jcxA5dn{SQ@$z9E^iPOoBf7HS2m*WGCRYGn>}yg?Sbx zQvZM?idXs#w@0T_8>Cb!)xF0XDIf1vTFZdVnrT>J#SR9b`$Gqag1yhAV~w--l8vWa z+mBi^x=DhK_SS|Rs16_XqT$-(fmLemjmx#Ka|vz##{?QFi8>eGDRaV8OQ#mS-W#tk z4+>GOe1#vHcwh)Q@7odlSFEX(%DyLLd2Z<)t;iJl91}XVIS!fH-dROwMBy2VQuubJ z=MKLgPMzy4-{gsAp$W#r{UeYot?j4XX^s@1giV>1Y&A^X{Ug2W3DL}Xv&Si7ywwT3 zK@JdzH>wNy22C(g7xN#F5e44)YRI?e3wj`KMw(u8<330n26LVg*twB{S0K0M$Jo4N zZ^tzSnM;R{T!&6o>9;$Alafg;z?;;$gyU%dbRQTX%EMm$u@}+hPnXrXDH8l1{A8#3 zPt$h|?&UIU56>=WlgN(@xJ8CbMxK5eMh|6<}4HWMmC< z+{T@iL2H9?KHRW6dujQQq5e#iic)9zI~ndD zYx(F;%{}67OQ*qT7^NqT{>kI(u9&!r*5-O_f%HOBkMMXWDaI;T`&0A@n&g%$vLh*CyK@N6- zN#_nq?Sv=mhYoW;as~}K-4%k0`xKVU7AF3lVoP@LI8FuNvDyb~rdgBqu4oKHFZtN@ ztn=RIOkPVofN)Q~-k$otnSEZ9aAiseMn|@LuTjJab@l30u8V;wiT&e{+-{IY!W%-E#)nh~fVFOd)`8uM zgl=V=u_F=hHUdepQrIvB1N(_nDJ})XJLq~v4t9l^H(%qLjbc_|McE>Qk<|3M>Pjba zMyLs1OdAL1TeGzmIqi#cx?k7Fy6Fo5Lu;gaatn#Q?w-R{4P@#59o+#ggsz)1z@s*J6bylXa3e5a>9Zr#@y?0JIbV-GT8*P{nF4(zLm>?0$MFSDvCFQ< zi~QWk0;|VyJa{wS8^JxgXEGz9_$)Zho5(K5$0xM|3T;Gip1LCDonE6lECjZ5It22K za_oClrCLl&*rIsDHB=NM=NBmM*HrzvsiJF%9Faw0Uf_ExI9&hW!%%Zxu`wRf$kh^? zT75UDYN=#&FfS_W2P~%!I3zw_a#?n3GM>SsTfY|9`t!9aG8`fhmQadwowoewpKVP* zlNTbaXLO)X{A}*KKAr#WXS2|NhHDoda}(#W4_@YTbiXOfN~9`4a02v#fnFR@2}*c{ z)INdu*b5dAN3(o}a5&4b)TX^S>+a(@VvZ)s#@CAq9Gnv+`(k4p=P{>%W|Bkk>|4MT zrTE=sx&(xz$C<EqD+h)TWq55TFi z7O~|Eh_e$q#yxl>y7Z)7tJPt&uL*o=N-^3SWXIH9oee#QV$ckIyEmuT&Md7*QuKSg zWTZh(9>{B1JQ*}}%uztuHD|MwYlXZ=7R_7DaZi+Qf#&-G7I#Wufhtq02)bQ)nC_O_RBo;Sdnm;Be$Xtv6s_%oDY31h&s zsm^lPG|GVg-KWtfc&7m3F(Ps*bgV}hrw2jx6n9%(E(?Okes++*%?}ncJ=A^1J-j_1 z{KBHbr=M31{|DNYRE~$jgo52F0%N1%(BiH!{x>xd4{hNv88!FnoWD65;$B0I1@BM7 zH_db_m39Vddrt?dhR)1#&7hSG(Az}=*8T?W#^@`OVJ@zbOdz*ODPydS8smldJ2!3kuYS5}Shztmm zFf9xbz#t!0%FzP1uHZ0FRH0>oyiS)>bVd#^(pwccVz;=8pzzaaol5Zjl(yhiBl zsGCwT6Mf*VDDo0Y72%4E)h{V1QT!nle&lYjKdj}z@@=skxmepatkQ~DnIXcT0&>&M zF)88eXe=@ki#U~~2v#A2AzypEasu;rb>W=gKHAd$tsqSzK9=2d!IHPdb zr&@C3k|2E?w#7UL<DA7TYeB3CNd?!2P7;23N`g30t8HZ2<5(+8_KL%W-N?=RQEb|Mz49;r@n`+- z$3`pmX?n+zO!*u>o&;2I9aq?tRpw3ME@h~+^Ysqm9HL-2h{FKRn0L?8hA<3K%v`Uv zJ!6=qZ{p%04*)Ui9D8z{C7<9!a1e8DG|~bG+`bwJrVCimNc-n~P2kEn=~0Z~Bu1r4 z<$x5xF<>RNA44lBR)8*VA&$x)OU5|N(ewTL- z$B|5USH?qd2B>7s^8d9@9AkkN%GW6RT}#i4inc;1Y?7N=FvXb5Ut4LN zst86q`|rXv`wE6`Z`LKJ1GTBF+n#Tf&cB4+FQzGY)}BZbscJj`pmt!KUGq0adqs}Y z7Xi9^HOf^cyDg+YZ1DUvLz~*NHuJQ&m1@JUE7<)(i6#>7E2r0$JWQrK%o6gBO<4%M z5fgr?8o2MVlNr&34k*4d-6cN5Z}iz>PZ6;>3~kYw`2?W zE_{QEolokU`V`1Y5F{OBHI6e?Ea<^b%x$Rhq$bVI`E;~iK0nZ09c_sM-w_c?R#T#2 z{(8QsKtnYxO)oTCImb{Y1AZnQgNEhevMhg@Ui9{bqj44nBpF=kd2cjN%wXNjh2vFI z(Jh#_30Lfs5jO1uhrj*)0UR6KxB%Ljzsxc*8m;oZHv%m8ErVtrsU?>MR0F#SztOz@ z6V*P@3(5($7ZXr2i00s7$XpiBLFoVsf^G++ww`RO+hvtJ6Po{ag9gJi#pM)AsCs)ahZV1x z(FG(JXvcdA4H0F@%n(^;TRF&8&dyus`SuuK@twvS>%9(}_q}dlY zLVx;o_Nv=jFP;;T*U^ZDQ0k^69>#FUt}@3rpb1)dx4LSl;O%M_t+zztu%RxwfCEBp zzz73E@xg{ftkjSj1F~3khz$Mz4xO%G^?&uYU0Sk+qy2qf3Pz(Hx#+2abXoCDwZ2Zw z*gFb^xU~z-G`|~ke%J1K^+C9I1W;1xy?q$2;hE;J@BaKU4n%L--7Sh?9Yok?gX3wB zlN#<{aPB%qP*iUG$mE4js$@yp-fPl^k$h@W#L6o(Z9}LvAOa_$j9$U+a#{?*UYEzC zh$00(g_h66v~B*b@eibgCiLz|nzjQ7P)6ivz(gz2VY62AwFd6nY|JEb8EYPDW1e4a zG0Dr;t(qT_=P*?s(6O#a5op_rEKmQOn?OfBeTUCr0wA*1pYHvAsGl^#kO3t$J6Ymb2!(iY$A zlOJxxm+}e|ip5MYFQgs=;-f*()!#gRts2cbvJBT*l92wx|6*n+6Ua5 zuKNono_)Wv(i03*o8Rg(Im}eXbCQz|R*%%;s{#idlcroj^ZGJvB?JHnO3iIWIRH;i zP<{d&bf*C8{sAWzaELGs#djb805%6MU-Cpgv1q-=TU#H|OQ@0U+bH`pdpc3_=hl;~ z2g-Dj(hIetH;z1g0)~q+t0>L4JnRPTl8jiI^-8?Lm}MROj097D#QaI8{M`qWej#JSwxSg(GA?sk5&p(z4SkYB$2RsXA}uT}Md8xF4M+N7s}S{fB3Y_ST0HP8Xx_ z`Z~(cZ$j($T~@I%jzKk|#W`V+6{VnHGdSWonnl^q*?B`nkyQ*fWbac8NyHK|Ej>ZvO>8ak!{W5%l6|FlvNo&jm!&;#8X zL=b*b=P7+S)sq()T`1{2I#bMp0R?&AK6Y6({KGGWc>ldIlbD$dXI1wLO_Cjh<1ob< z%kzcz0uH5~Ug`@Gtv$HWwZwP5dH=%fM~CeTxpxn^El_;;E5>vedgg?<$%=h9UqXFQ zYm`_lEnRrsfME;Q+I2dW&*HQTmq*;U?>u*2B>5$#VB<+cM`{2%n%r=4n~uYY)#`?p zslYD!(+-d;mKP0eTnvwsDJd+za{6Y~5H--R$_^2-EU7-_E3Jk$lD-h|46T9f4SV?@ zq-o*8>X5XifbI`uo==BsJ8qmt2maqTDJXgLixjoy9-%|BzkD3tA9 zgg_@o=w)K1A_c(bJVvvMejLLZ;(Wmz`s)h-Wt5pHE$1CsKV{mjEaS&D=(^CZW(oQq zna_r6CN`hMsxFzRNWr-Q$&-j^6=j3PlG*kUAq{mQr6!Ut;>{G@%eQ;#?Q_nPdSk9YCj+|aB&qM+IX>%qc0ESw=o7CNV!)xWVMAr zYVo*|g5wJ{*LG~2&spAS8pJV2oc6bkmY(&oViv*ID1_Oly!$$cjSA08HocR{w_n% z!YgWWl|PRv5EH5WV!oHAB5m;JJ)QmfBJlj#P5m~0Pb=f{H0v6;HYx$GPwKm*p^c~z zFJ6p4i!*v%E@#F?1#|f98G6Mn*S3MsasrSObV@mu+onSSG%%Gv;J5jUfV#xklvAp5mf&TH?fh=fLn=^|*q;nJ#P!}EkdI$RBRBRr;kXxyNq@R);14hTK)O)D zen|=k{QGRwGjJO*fHOBxF3t!>2#A&fMIAo_>va0OB8f`b6Cs3V1Xvwc+dc1e*@39h z3%Y(`ax@qyzo>&_do%Nhk@f6>OOsM4)48lG5w7UeU+q!8_vH+O;U%Lyy1KfibI z56%h+1j01By|KC4bk;H4W_fCpYgIJraoYl@TtT6^=x*%+rImb{C@1=(3WZB@PX}Z> zHxJ|K)dXfC5GO1Llr^ivJ>s(_oYOwVo)R>T+?Qvp>7k2+w3If%<)eWxRkL7<9D|w~ z)FB%;kP0htFpW4_UsR9UQjBq^(e7@;dK2{Dot+v*4b>42I{@3hE?cLvC+ab@?N%_$%|99f@3GvLA$x*dEZOa-sl!hYa(nzqN=eMn@^^)rNW)YH za|#c#!Ia}nLsE;6y8Mr%cqV9nOJCJOJA$U*r;Uyf>>OjEi^L$(e7dEbN4NlK`Tg=< z=tPOsKQ>2?9BBhH+37jdM{uikGY4J!F?lWIc;Nv6MZwxhTRrMpRlj+dZ-I0jdK2{| zZoHmwVs{GZtPk(Xh}R*^tSAi@Na+DY;$uuFqhm^KIT=dNnuLII2)O`z?fWJ)zQEyB z^93TZHm1XPLZ?KFm}RceR+UTSUFV@*11M5vbI>@l=&JHCllS!P zLHvXK2PSngjx*Fqkdw~lBV2sh-rzBldnlaH(AF&1ci^lK;(X+p_UGqP%C(%Nu%rk16xgikqIM^A-X?!R=o0DI;6iYbR z*~@{n<_}%Fh$4b^EfCdD>cqz`h`c+4KY-1(w{I3llp&bPG{HQwDx4Km-Py8k8+fq% z(|;YHu--U~AuS_XLiq39h$!EH0B^NElSZOQi+=Rr{*en*2PiqC4R4G-%t%0$Vbc6x zQm_RV3{|hnNT=oz6_$HS<^m&RVsanJx6d!ByxyS#0T^s`jshIueI%~)^;S^6Q(J9? zCK*=9Cc_;qr_3t&AKah*LQE-p3fJe|XxR-rHB*|sy00sz8Z}WSuy77UP!2lxD5ymK zeXZTHhIB&FENv|^aOZAAzBJs&HP~g=SO}v7fP;LbP~EkQiGZPb(vC?^9%bEOsU+aW z`l1_P216JY^Zj?0tIxe@u?OHMpK^`T`#84CgPeCWKeb~B(1h;7Wq#<)FsUR6Fl@8k z`o!XQ6MfhA^pH$;zyE(z?c#IQ&D3Ox?;S<%SHygfEUh!>WUB#LloNYa6L;*HIc*Wie29bSW<|jC>vS zK+>6LG386W#K&Zs%oKfJPy*<3;i#X@S}A^Jj8lHm*jz?;xR|#yUneMQZDrfFqb(j z*t7sIX5W|+0On%3Rf{0jz;ZHNHmpBK7PJ`1BGx}0Iop@vVbFEzu_+6u9CVmFhxMEP zufQBqmsUFWuLo9Eaq+~sYlW4o$b12|3i`UnOJCYzfz<1U$uA3#oOC@+guyCoclk zhviFfnP>i~GvKjcd_TvR;W;6BQ4jr%oS4L};OK>kEv+$?qM5WzLvoJns9aF6nPn5A zAj>5ZEb}Y+P?I;cRE=-VY>lLnMLxOxn`Q!k43AHs6SuwjaP>nZ0sph91LZl%;!FhR z3#=s2*G8*tPt&Dy2&DfO4*o=GkJeuJdsUMyQ5MqaZgJ(lu50X9d0Uz+&J~>8yFtuK z&ee?JS{!yVo1WO5`-nLq-+TQ%mD_^>h#JK2$y`~t*(d~cMOc1VE-;#@vyYDlZhqPFK+`g*s{k(Uq+MR*wC|~(R-?-WU zP9NF*v{DOEI*<~@W~s5eIkC8QQAV`B(1GmvlBd)}4?cjY+m&j(KktdJOJ)VtoCf*t z;INNS@)s;vIiUN#f;k%UnwMiX_v#9V{W(#T1bCh)&S6l-uP2xF?$dWFHMs(_rPO~x zPQv1Syg8EE0YWCG;e(x_*EGa**V4542%9_fh#vM}u(I&4iM)fx>~JuxCnxLRG&e=@ zOBZW$=@RO&!-8V zq35u)>kG>kKgSQk$xQ(Fi}O@(ZDoJg0`?SkVnOf9V5FD&&oe*~0?c{xKvA zOu8@x)rFkRCCAAchqnz&^R-ILoWj+q)0_-dITuQiGiWlt9todOqIEX;OC&@x-Kt3A z$44B3oUfyz;{^ZF#8>gavg)w+A{s_WpmXW(ME=TJAon*KH#G*Ea89B3-}i1~C6|SlmAPxG_GzkDpuY-A+MVeN(1ARB8OVjDrr-if zeI|=NsL_VOW_#ifht)s{5)Di);;(aNmJK60Fyuh)lJPh3X8aQOJ|8Od@%bwg(=^tk zjNZ@S_f>ZPp%>gnskcpP{l){=0}2joxx_$^4=9YjZec{?f!3xXhAF#7Iw=?OZ`8+i z;if6E6dleG$Iz=EpDyU`{0lT&#*4Pqvoek7u0oOFJj}+X$Ilpx{AWS(`kZ4?H>J7V{ zrq$wnDsK?!qNg+m2mwdkquPvq#kJqzOoM1fblm$!mBv7Xj@=T|zu;BtGOstff?-UH>;9udqBP{MTXgw<>W zlE-0uSH7uKx@{av9e+Vy?LuSB_G(|t`7xV!Y3>EQVkAw`v3QZlsmC*S-f`MdNn@RG zlv0Y@8f19{Ed)egfga_F5wp%^OeaB+?L0d%I_5CeiSJ15QA-phlC5FtRpqf<*I z@!+6LS)ZBD#0c;XTYct$nLbC=*`g{q%pP-DL1ZQ-^#!0!`A}+{*q(v!5s(>&xyHS@ z;Pl&kcIOCWu#AJS@x-6?$X+1+3U0pR#N4+;g+gZX zgds|_18{u67_%C4Vi(aXFzx-fXKIYo4?@to+x>#5ibj|oQXEVF!}yhYPRjNKY}Y(W z#KhL8ph)f0lbZs3KF4FL4B50hTRr6H=zkV+4;x6BdFCKzWf$?gE-T84vemSXgrTyk zK}%R%ab!TOc%w$**WF)Ik1d~{U4e{gOBgB>&DSe4SL)~zvo;8g2P&IHf^DE8)m(}% z->Unmr|8&G*Us`$vK(oHeXU)x>{>d2(N`75W%!gllkyj*;ae;8x1r7|dIA)=g)9=e ztj_B?vuYAbcuPf7AGpVb%7iX{n_pz-&$G6SLqJmPvQb6#))67`t@Kf9A2&G{}eUT$Pho;)cV8lWW3HVpJCF#s)R(rglgMi?U(g<(;! zcz3O3bD^aQAx-bWL)_k`WbU%!*BBM^!(M*Dc=`V}SO5T8{T*R$fi?gcjprinrvwN; z{_G~p94)tKCoY##FR92Rb#KBp`neS%d)Csmn^scwg^=ZoPLu!u2Br-mCB=&^M$*)c zfVlu|q8tmUzk>Vj6@VC3TBa8f&w^rh8cP%xW49v3pfGdg%_!iAY6%e&ih{PVK|&!7 z=hpkHbtr1%2QX;jkpcD>*|&AS=T=SIx5eYAya9)hNH<*CNTT7?5X!r2CYka+bF-Dq z^rI(U_2gD!xcr{YdZ@@9DiWI#Cw^e>%Q?64uPDx28^~w#O(@*7V8DHEd;@sc?FHA> z0P3gKR|6Y#4vro(bWm#i*+HkTOyYt)ls*}>cWv`c_|K;p|LD+aD=P3(Xp{5DJ38&K z8&7TNbMR}<5Q64i^nDa>Ld_k!--lTj%K+*paSu&xj}yt88ItRf(9qM*J&_sf$ch77 za@8?nJxOBRL-Q(jDV^g*F!Xt6^sZ9jT(VwES!B|goxvB~;F2kp1PPkZ)6z|fSeJnX2=yuY7u zv76jXn_D3RZPtWzKs`2c+w-=pFtE;b3>^`yt`rlhcOI}5wt3`-rIrvUMRg{BXo4iCDS*pYrEx0md~dnHgM@Y{1=NoV5;P)7qZG+F z=l&PjzHK1AnRbi{lKHg43-%;*a`@-v4C@Qy0RC&=k@E_F%AC{UMbV&K{5lcE7K_Mt zfz-z;!dvwoflDxdW}Ic}R9KQF04OQ>3WqhXS|&+&ak?cuKHM3A0Xt>;wJXgGlS$I^ zf#zPE@G)nUy$gf^ymxH~roL`J%i(MKhEoQTm_EjMOwID7D9rv{Rfn?F(FTUhz2d!ciM zx=V4=SiTJLP9s{sUAGK1=KKSBUwi{>=Tk-2ZuX)ITvTTs&?lw-Q%zQ{u{|y@;G(|Y z)8OW&gm44H{Phczv4SZqGt6fvmJB$**t;yBoLe*UA~SU-u4Eq7`rDovsg);6S*}HB zjXb#$>|JIKR{c?@*Y^WuN}B_WZ`)-od0M^ib)7iPq3j#NjXLLLS=0S!%C$K%rp8tw zxz8GPvox&nhkmFgK)l)-hu$7-^<`xR@$xFZ_dqwj(l&V{du~#x5&}$G6hYEI=l24% zK&!97v+JH(Q$s>F6iSp+eEQ()MB~Yzfyg!&HnF*zsy5_x(%v8gyT+bzHeC38F__#kXhPIZt&MP_r||b6=AYNSi|6mcOsU>CqcQg8mIgX2@)XLw+Ri zu)yE0R~TuzTUWQzik^!)0N5YmqQ{#q^YHju*{ex+f z>BT~$D`lV+2}uHktW51PAAGOn(&VVcDq_lAzL`(8y`;o_!XDA@1^j@JTQS+H$95b~ z*LGWFZ~jjSE5F+0RWxt7p9K}mm!|N6CP*x8kbCU)2v6f>wA8s&fLtE)<}=NvVRm>Z zqI5Dx=lR-R4Rm5dUaCaEKKS);ik|tdcFL)pRMgntVa6)4(+KR24CxFoo38P^Fq9mr z%y<4f{`2rFsFP%X`LG<4--FTpG=~>_p<2Tb=3e}-oRUf5seGKl(M_MQ}^@|tw#DUHN6=kE#^8J~e$L-P}x{QIG_kb>um zwp!sCEMq8Mi!6WTM`usjT6d5C`(fAi^QaZ!4m@2LjL1r5<{WsA*NzkX#OVZWAexjerOQX-fz`o{*=6!0!IQr| zCrP|#x83!1VGR?O%;&)`;GS}*zOUg$N8FAxw=T2gd}BdOQ@X8x6v-Ugb2*Ra!h{7IO7RZxPyRCV z`GBMz^7r)92{|GTcWS%?mL71M1^&hUQY!*P5`9p6H9o4DZj}iY1f+h?kxIIm-e-f9 zGZm9#a;94_F1xi&Oo}JE6`9^4F%rm$Nl1_uUI|QW*x&6y^}np+Gtn&ih?DOhJ??vk zDU<u ze~MjL7mzVyq*;$JDnvo(ID@KGTl?rD0gtH2QM4>jx^IMjPuVd))8T?o2pZc`O|WRG2Gp+uY!jwXW23hT&K%O`YMdIjGPBTxm`S0V*B|j%W^uq z`Qq68)_pNpK?1g~aE?#4JgLSEm&RFm5zD<^MphYj>qcuH;n*5*2hU8iLMt6OzYkNS zTZCj@M->_mDVd%)#fUIfGhm-i7`9LD#R~5i48&g7&4UOD9T68yt7$-LJ~C=Yl3xm-A>2sS zn&}mUK7w9Ow%du3AB29zRQo(HD?9wQo<$3%>=fw)`;%g*!n)7!!yRC!xgKAC8Zkoi zry&EmqQ1as%nk07IUUVwzhv6sFx_fzMAf3CwI5HS6aQ;Y@C^xjRQF|f8BXN2Jn?ar zSCKLp(?wO&$idKXIbR*Dr^|WYe~}C#6Ps#3W7D{0%HIY3G`5<}+`3u&u{Zl?vCq!! zSNJwuNIdasz&gEyQ$>;g%I?#uD`Cp3Ni#SA1dCB3oqNN+iiv zN_HZOip2K}>P_$K`~LZ!>vG-Cb1&!I=bYd9oij{zwY9nT0)Um4y0N9Pk~KX50F2*;*ZY%EsJnsCh`1kA)REn<_?44;PHTnnGWTz_17t0P}(oh$~@0da6w5g zwd{0aQyR;SqgiI(3YD0IT&5YE14ypVBkHf-f1bf?e}s2Oh5U~w^w`vf$|sXg98`}q zYCGL-^eUA`3!GqlednwoJjnI#eN>5qu)!5Mmp0PhL)sTe7k}+o1-KS zkR_Lah-3aeVg zvX`1LrbTPmAe{H>Ks3Y6tDSTH?E|%Ujx|LWY&nCh#z9AU_bHw7ur2CcV0pUQr`Ru? z_gF!|Wt7sA?d?*FI+FmDl9m;Q4*zr5A1EpEw(XhUFZ-$-jjYDA;<8+s)=ygEOM`N3 z+7!H>MU1$TrS}*AG3>ILUXK?d!6nAF93zmuY@Z>o=~1scqjRN3;*2UvNW%^NFW0rC zC-0ldUVv-He=yvXSx44ck5x@}9Edl#>X?k@&ds_7LlbXC-6lJCo8#TS8}>C)fPUyY znOjSaOAF{SH=?>vbDZh(2u^R-Vuz><7Kj3qcn*jd*707;d&eGm_T2qv(2g*3Za031 zo6z_cytQDNv0Jb&@?Eou(AD+X$}AVS{5KH-vJfTsjy6>xo^sm_oL~2FKkn-+Lf zh{kTpzEFSl_B7mHrF`Niw{IJ3I(vDcV&&^6yjLA9K9VX%B51t18mDFT4T3mrgPu3ZG;STUAdjQTgBB=Qeb*T zcX#WysC}46s5Ks%dlHv#l!+otb#D!MXDnKEMf8_@E;0a{SYr%bMw*2R6_`F*1Hy z?CCA(AgCJ}KkNnz!Vfn@Gw;n+6_3n)hP{2`i)-C0tELsDjp=>=3{^?&>{5CS(Ol1L z)mjoj-=}pD$W#-vIQh79?w&x(?Ft!D_J+gZ*ZyV`jcHp{B5HrmtiC3AgQ+tpGO2)} zN#<*2bPZ7PZll|8;QBAdLSN?zxjg!WL!Fe`Cu)3bbSphL*~dbLbj4V+9@%!^Q#v9y zI97J=v~Sm6M1Zz87iuGcE~TD-k*(&n{CWeYcS`#Hn=#<(*X+n(t12~^WZtLrLigzsq87Xt z$W~NQNc+E;Yx7#1k55Q|>6y1W-6qQ>>OQ&wY9^34x3S!B6LMH+Hj5XSfJu%52iVC} zN+j*%AcaF7OCa0oyno=-6t^dlXM=(68vY%oU!_n3@;Z$%JX7OYzAhzC@Ac19GLa0I;khIRP@gX-X-mM@`V^eDj)K0Vz>AEB49Xdm~OVt?Dhqe01 ziM0{kjll@0J_Wi6JI=;!D@~0Td%C)BOl4UZni^LBBUncoU_d zH5(50xu6Zj0P`Q}e7gjdNMuiwJEexE@`wV66WsWOyB;laPr0OZ@DHr|Y!(@boRZd? zgXQbS!=r5%zuW8dPV%Zp_Nmm7ufrZa7Usbw9N*X)oY1$|DqXQFvew}8Ko{TdLa`-Fd~9&C`bo8;dK4{7q}#TR?cz;wD}OLQ0_qfW44NRHztfYw zNG_q34RyDNR2bNMb0(*%EMp{UW5Lw2EjKI9+=dalx*uo|p0e#!!2E^*;A&{bu8&+& zd!rYhu6C3-LI!2cTF;mJcJU3Kw$kRN+suN^Sh;9Ttw(TymKS#kGJ>7UW{U9eC!}(B z@P2rUBGjT~EZomfm5+tF1h!$p{^HLrnYAtmCDu3=#=TV(K`CH8VIkQKoMco;ck4LM zdfjc`f^iPq?dY8Tn?C`z`m&uFzayx4?&_~uId#6}8L6Gs)vlqa;S zDQ;Ma(~Ozd;o5}&o!Ae5wLLCvVprmcr`Uo;><2AB_seZYj_D=8!i6Tc%1O{5#ANs` z)&29Fhg-nu%$Wpg;%3LAtB?Rs$q2CS_sIDkJu z!Dp|QnHlZGIy&|4!EU7!%^pWzl*E)3d{N9FIb-?Sn?WvVuWtoYoN3(0+%@cy z7G|ITs$iIZiL|$x$8h1v@+$zKE25c3IEsx9W!2~fOAAvoYA19mC7T-Y5}Cm%0>}uh{vp`y5QLl#1mO?T{bjqf*SZ+j{uZ zFVazvSPMT3c9nt)0-h8p)FM}t9{T!4Gy_eRb~NuOFY?lPbj41*nRe<*nK}UAKf8XG z(J`W~UE=m-{dohSU7w(z*#=I(;6B8X}na%dE3T<+Um3Wio$@3f`hi_*C)~1 zXX&bi=)_~72|N{%A^m2V=5ak@;#18IfT*dPn=8}xXJHw4V3gErF|i%KW%l_QBljx& zyx)znq4j%A&b*~F{XsZGfaHIhc_)aE1en74R?II8k7YX;CrOb4BJcqH>3&37P&?lm zwWkW}x$}W@&t;i`8$-Bm-^ zUc7Jq7!SzGJM}a7Yl}Bg$%sK`!^YlNr97VuBK>?~_Tg_6;k6J3 z(uu0ThC2E~`JZs%P=+- zEpq|RcjkkAB%x8$0w?uC{IMc8sYeAa-(UwA+rkd_@}CV#FCP4I+@BSoA__;Re!sW= zMj*3)hE{*@J~kQECny9!+B}0*gXKy?w(4SIzn9?;`RanL|Cq6Q)_F;m4Zjh*7S?`0ICk` z&rw8Goq*0z+hyfHCE;T`_$AwGUR?_(7YvfLSmrh%oN-^-l4G1i&ej8j8 zhD~$o2_5S?*vyQ{YtdB!aGnki#A#pQ$LVf;ar&BQevQa*-1*W(lY7-5wUX0InG{dO zTG5{?VUUiQIjSs40Z&7%8QTC7Ayn{C5DYr`^Vn>9)4fj$S`CYH>&>1gd!L4Ux&L(t zz1KWRyp|C<>b`%-{zWR9zG<$p-cj`#4^^yw<^lP(m!@HuM$H)tlaP_FBy5ZVuP;3|72gqu z0n&o~d$xg8Plj_=x$TpwBsfefVy@`WO4d!9?(VKRsE%(BlK1cud(@XXM(hzaEcJfwSfRnD=K@xi$#TDyvA&y&Yc%X4l`+2?niQw4hnl-Ez8&E(LB|7U2jhkaYWPb5K;Dxb#uY4ivUCmLl^}< ztlRa&loFU|T|O@^(z9dh%uZDHyOv1qCWdM-gZMs%5}y&gVO>%B;lHnv_&Qn>&fHw#tbIx=5N-4n3FY@WOn znD1P_XDAK3!rt=QTW(_buIk+7oHR;lv;LnD?%gAX;nq^fD>jU*0IO(JY+$0~i`nZU zM(08y@CDhNFS#j2<@rzE0|4i^rOd5?4Bq%#DaeL7D~8;KjzylkSL{d%&rI1-jJ{Sn zE2|Ux&7i_WfO5C*KqlL{W5@A&;@>K3uzuFz+Hap~p@^z2?Y#vyOeP-!#tjb;0Ut`5 z(;u!-Sl2)L_->_?vV&V)EbOPn#Yms&Y|Oo27(j2fz%F=Q)b}8VY}=>jBb|32$h@sA zDis<}gQpDE7Kq+cQd-X&AF2aW+=S=krF!Xy`lOWXDQ(@WV5(8`#O{XpK+dXsV;2_~ z#vXd774ivY#f^M&gkh4>0Zd)Y0(?A?wD@xM9Zs+6`rc5FcjHaYl!KHlN1Ny|Ue!km zovRXo>^C9x8ld$QUQA}Bz{K67sl|2*obecCYBj)2)O=Oo`Ft&?Ov_qVo0B{SdAI_A zuC6#h3x552tPPD}tP}unSTzXm=JSwp-A#@$0F z#1CT@Vr1?d;^mBVfvc*(4hNxvuy`zn;0O!Cdi(gJf|TKoE;uI)3VbI|%fMk9TL@mt za5eG*jI2-t=ZAqElva>(M#vw8DI%p23J2toNJ*HSEJ8^}R!IhNKnkINl9xrv$-%ZB zIH=9f#T8|$slBBO{8EOy69{;ej7(r)pmg8?X`G*%3<8Nn%E-#e$jM28JEZ)BeF%<0 zQa=8Iza(g4{GI(g@B|N>4~#6)(FqqoP=H`RBg>DcIjU7>|)L#rWd_{G2i1c0sZ#JW9h4<4C~ynd5NY zzr1Mdjw9gw-EnxBh6dSdNSLUVhmQ*`&|hrhjG-Y)*T)UG@1nWmSsCy$GUVX?5$s=6AcDxRzo83$ P{02Y92SmId2<`s?>zme* literal 0 HcmV?d00001 diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..187ff0bc8b5d29c1a573702ca1b64dda2293cdcd GIT binary patch literal 8572 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 + + + + diff --git a/src/components/common/AppPage.vue b/src/components/common/AppPage.vue new file mode 100644 index 0000000..cef07a2 --- /dev/null +++ b/src/components/common/AppPage.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/src/components/common/CommonPage.vue b/src/components/common/CommonPage.vue new file mode 100644 index 0000000..3c77a7f --- /dev/null +++ b/src/components/common/CommonPage.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/components/common/TheFooter.vue b/src/components/common/TheFooter.vue new file mode 100644 index 0000000..e2cf27e --- /dev/null +++ b/src/components/common/TheFooter.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/common/index.js b/src/components/common/index.js new file mode 100644 index 0000000..e8b1424 --- /dev/null +++ b/src/components/common/index.js @@ -0,0 +1,4 @@ +export { default as AppCard } from './AppCard.vue' +export { default as TheFooter } from './TheFooter.vue' +export { default as AppPage } from './AppPage.vue' +export { default as CommonPage } from './CommonPage.vue' diff --git a/src/components/index.js b/src/components/index.js new file mode 100644 index 0000000..8621d75 --- /dev/null +++ b/src/components/index.js @@ -0,0 +1,2 @@ +export * from './common' +export * from './me' diff --git a/src/components/me/crud/QueryItem.vue b/src/components/me/crud/QueryItem.vue new file mode 100644 index 0000000..88b9589 --- /dev/null +++ b/src/components/me/crud/QueryItem.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/src/components/me/crud/index.vue b/src/components/me/crud/index.vue new file mode 100644 index 0000000..2535058 --- /dev/null +++ b/src/components/me/crud/index.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/components/me/index.js b/src/components/me/index.js new file mode 100644 index 0000000..795b613 --- /dev/null +++ b/src/components/me/index.js @@ -0,0 +1,3 @@ +export { default as MeModal } from './modal/index.vue' +export { default as MeCrud } from './crud/index.vue' +export { default as MeQueryItem } from './crud/QueryItem.vue' diff --git a/src/components/me/modal/index.vue b/src/components/me/modal/index.vue new file mode 100644 index 0000000..b312034 --- /dev/null +++ b/src/components/me/modal/index.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/composables/index.js b/src/composables/index.js new file mode 100644 index 0000000..2e9b5a1 --- /dev/null +++ b/src/composables/index.js @@ -0,0 +1,4 @@ +export * from './useCrud' +export * from './useForm' +export * from './useModal' +export * from './useAliveData' diff --git a/src/composables/useAliveData.js b/src/composables/useAliveData.js new file mode 100644 index 0000000..b66fb35 --- /dev/null +++ b/src/composables/useAliveData.js @@ -0,0 +1,30 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:22:28 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +const lastDataMap = new Map() +export const useAliveForm = (initData = {}, key) => { + key = key ?? useRoute().name + const lastData = lastDataMap.get(key) + const aliveData = ref(lastData || { ...initData }) + + watch( + aliveData, + (v) => { + lastDataMap.set(key, v) + }, + { deep: true } + ) + + return { + aliveData, + reset() { + aliveData.value = { ...initData } + lastDataMap.delete(key) + }, + } +} diff --git a/src/composables/useCrud.js b/src/composables/useCrud.js new file mode 100644 index 0000000..61b2c71 --- /dev/null +++ b/src/composables/useCrud.js @@ -0,0 +1,122 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:22:35 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { useModal, useForm } from '.' + +const ACTIONS = { + view: '查看', + edit: '编辑', + add: '新增', +} + +export const useCrud = ({ name, initForm = {}, doCreate, doDelete, doUpdate, refresh }) => { + const modalAction = ref('') + const [modalRef, okLoading] = useModal() + const [modalFormRef, modalForm, validation] = useForm(initForm) + + /** 新增 */ + function handleAdd(row = {}, title) { + handleOpen({ action: 'add', title, row: { ...initForm, ...row } }) + } + + /** 修改 */ + function handleEdit(row, title) { + handleOpen({ action: 'edit', title, row }) + } + + /** 查看 */ + function handleView(row, title) { + handleOpen({ action: 'view', title, row }) + } + + /** 打开modal */ + function handleOpen(options = {}) { + const { action, row, title, onOk } = options + modalAction.value = action + modalForm.value = { ...row } + modalRef.value?.open({ + ...options, + async onOk() { + if (typeof onOk === 'function') { + return await onOk() + } else { + return await handleSave() + } + }, + title: title ?? (ACTIONS[modalAction.value] || '') + name, + }) + } + + /** 保存 */ + async function handleSave(action) { + if (!action && !['edit', 'add'].includes(modalAction.value)) { + return false + } + if (!(await validation())) return false + const actions = { + add: { + api: () => doCreate(modalForm.value), + cb: () => $message.success('新增成功'), + }, + edit: { + api: () => doUpdate(modalForm.value), + cb: () => $message.success('保存成功'), + }, + } + + action = action || actions[modalAction.value] + + try { + okLoading.value = true + const data = await action.api() + action.cb() + okLoading.value = false + data && refresh(data) + } catch (error) { + okLoading.value = false + } + } + + /** 删除 */ + function handleDelete(id, confirmOptions) { + if (!id && id !== 0) return + const d = $dialog.warning({ + content: '确定删除?', + title: '提示', + positiveText: '确定', + negativeText: '取消', + async onPositiveClick() { + try { + d.loading = true + const data = await doDelete(id) + $message.success('删除成功') + d.loading = false + refresh(data) + } catch (error) { + d.loading = false + } + }, + ...confirmOptions, + }) + } + + return { + modalRef, + modalFormRef, + modalAction, + modalForm, + okLoading, + validation, + handleAdd, + handleDelete, + handleEdit, + handleView, + handleOpen, + handleSave, + } +} diff --git a/src/composables/useForm.js b/src/composables/useForm.js new file mode 100644 index 0000000..66782db --- /dev/null +++ b/src/composables/useForm.js @@ -0,0 +1,28 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:22:43 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +export const useForm = (initFormData = {}) => { + const formRef = ref(null) + const formModel = ref({ ...initFormData }) + async function validation() { + try { + await formRef.value?.validate() + return true + } catch (error) { + return false + } + } + const rules = { + required: { + required: true, + message: '此为必填项', + trigger: ['blur', 'change'], + }, + } + return [formRef, formModel, validation, rules] +} diff --git a/src/composables/useModal.js b/src/composables/useModal.js new file mode 100644 index 0000000..14adcfa --- /dev/null +++ b/src/composables/useModal.js @@ -0,0 +1,20 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:22:49 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +export const useModal = () => { + const modalRef = ref(null) + const okLoading = computed({ + get() { + return modalRef.value?.okLoading + }, + set(v) { + modalRef.value.okLoading = v + }, + }) + return [modalRef, okLoading] +} diff --git a/src/directives/index.js b/src/directives/index.js new file mode 100644 index 0000000..a398f99 --- /dev/null +++ b/src/directives/index.js @@ -0,0 +1,23 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:23:01 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { router } from '@/router' + +const permission = { + mounted(el, binding) { + const currentRoute = unref(router.currentRoute) + const btns = currentRoute.meta?.btns?.map((item) => item.code) || [] + if (!btns.includes(binding.value)) { + el.remove() + } + }, +} + +export function setupDirectives(app) { + app.directive('permission', permission) +} diff --git a/src/layouts/components/RoleSelect.vue b/src/layouts/components/RoleSelect.vue new file mode 100644 index 0000000..4cf0fa1 --- /dev/null +++ b/src/layouts/components/RoleSelect.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/layouts/components/index.js b/src/layouts/components/index.js new file mode 100644 index 0000000..fd91831 --- /dev/null +++ b/src/layouts/components/index.js @@ -0,0 +1 @@ +export { default as RoleSelect } from './RoleSelect.vue' diff --git a/src/layouts/default/header/components/UserAvatar.vue b/src/layouts/default/header/components/UserAvatar.vue new file mode 100644 index 0000000..e1c85e3 --- /dev/null +++ b/src/layouts/default/header/components/UserAvatar.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/layouts/default/header/components/index.js b/src/layouts/default/header/components/index.js new file mode 100644 index 0000000..19570cb --- /dev/null +++ b/src/layouts/default/header/components/index.js @@ -0,0 +1,2 @@ +export { default as UserAvatar } from './UserAvatar.vue' +export { default as AppTab } from './tab/index.vue' diff --git a/src/layouts/default/header/components/tab/ContextMenu.vue b/src/layouts/default/header/components/tab/ContextMenu.vue new file mode 100644 index 0000000..9e89efe --- /dev/null +++ b/src/layouts/default/header/components/tab/ContextMenu.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/layouts/default/header/components/tab/index.vue b/src/layouts/default/header/components/tab/index.vue new file mode 100644 index 0000000..117daeb --- /dev/null +++ b/src/layouts/default/header/components/tab/index.vue @@ -0,0 +1,101 @@ + + + + + + + diff --git a/src/layouts/default/header/index.vue b/src/layouts/default/header/index.vue new file mode 100644 index 0000000..9aba3ba --- /dev/null +++ b/src/layouts/default/header/index.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/layouts/default/index.vue b/src/layouts/default/index.vue new file mode 100644 index 0000000..5594838 --- /dev/null +++ b/src/layouts/default/index.vue @@ -0,0 +1,41 @@ + + + + + + + diff --git a/src/layouts/default/sidebar/components/SideLogo.vue b/src/layouts/default/sidebar/components/SideLogo.vue new file mode 100644 index 0000000..bf5a025 --- /dev/null +++ b/src/layouts/default/sidebar/components/SideLogo.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/layouts/default/sidebar/components/SideMenu.vue b/src/layouts/default/sidebar/components/SideMenu.vue new file mode 100644 index 0000000..a51d6df --- /dev/null +++ b/src/layouts/default/sidebar/components/SideMenu.vue @@ -0,0 +1,62 @@ + + + + + + + diff --git a/src/layouts/default/sidebar/index.vue b/src/layouts/default/sidebar/index.vue new file mode 100644 index 0000000..bd6545e --- /dev/null +++ b/src/layouts/default/sidebar/index.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/src/layouts/empty/index.vue b/src/layouts/empty/index.vue new file mode 100644 index 0000000..31d7e98 --- /dev/null +++ b/src/layouts/empty/index.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..5028942 --- /dev/null +++ b/src/main.js @@ -0,0 +1,31 @@ +/********************************** + * @Description: 入口文件 + * @FilePath: main.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:41:32 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import '@/styles/reset.css' +import '@/styles/global.scss' +import 'uno.css' + +import { createApp } from 'vue' +import App from './App.vue' +import { setupRouter } from './router' +import { setupStore } from './store' +import { setupNaiveDiscreteApi } from './utils' +import { setupDirectives } from './directives' + +async function bootstrap() { + const app = createApp(App) + setupStore(app) + setupNaiveDiscreteApi() + setupDirectives(app) + await setupRouter(app) + app.mount('#app') +} + +bootstrap() diff --git a/src/router/guards/index.js b/src/router/guards/index.js new file mode 100644 index 0000000..35f274b --- /dev/null +++ b/src/router/guards/index.js @@ -0,0 +1,19 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:24:46 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { createPageLoadingGuard } from './page-loading-guard' +import { createPageTitleGuard } from './page-title-guard' +import { createPermissionGuard } from './permission-guard' +import { createTabGuard } from './tab-guard' + +export function setupRouterGuards(router) { + createPageLoadingGuard(router) + createPermissionGuard(router) + createPageTitleGuard(router) + createTabGuard(router) +} diff --git a/src/router/guards/page-loading-guard.js b/src/router/guards/page-loading-guard.js new file mode 100644 index 0000000..ba145fa --- /dev/null +++ b/src/router/guards/page-loading-guard.js @@ -0,0 +1,23 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:24:53 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +export function createPageLoadingGuard(router) { + router.beforeEach(() => { + $loadingBar.start() + }) + + router.afterEach(() => { + setTimeout(() => { + $loadingBar.finish() + }, 200) + }) + + router.onError(() => { + $loadingBar.error() + }) +} diff --git a/src/router/guards/page-title-guard.js b/src/router/guards/page-title-guard.js new file mode 100644 index 0000000..96c1cf8 --- /dev/null +++ b/src/router/guards/page-title-guard.js @@ -0,0 +1,20 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:00 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +const baseTitle = import.meta.env.VITE_TITLE + +export function createPageTitleGuard(router) { + router.afterEach((to) => { + const pageTitle = to.meta?.title + if (pageTitle) { + document.title = `${pageTitle} | ${baseTitle}` + } else { + document.title = baseTitle + } + }) +} diff --git a/src/router/guards/permission-guard.js b/src/router/guards/permission-guard.js new file mode 100644 index 0000000..b41d391 --- /dev/null +++ b/src/router/guards/permission-guard.js @@ -0,0 +1,37 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:07 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { useAuthStore } from '@/store' +import api from '@/api' + +const WHITE_LIST = ['/login', '/404', '/role-select'] +export function createPermissionGuard(router) { + router.beforeEach(async (to) => { + const authStore = useAuthStore() + const token = authStore.accessToken + + /** 没有token */ + if (!token) { + if (WHITE_LIST.includes(to.path)) return true + return { path: 'login', query: { ...to.query, redirect: to.path } } + } + + // 有token的情况 + if (to.path === '/login') return { path: '/' } + if (WHITE_LIST.includes(to.path)) return true + + const routes = router.getRoutes() + if (routes.find((route) => route.name === to.name)) return true + + // 判断是无权限还是404 + const { data: hasMenu } = await api.validateMenuPath(to.path) + return hasMenu + ? { name: '403', query: { path: to.fullPath }, state: { from: 'permission-guard' } } + : { name: '404', query: { path: to.fullPath } } + }) +} diff --git a/src/router/guards/tab-guard.js b/src/router/guards/tab-guard.js new file mode 100644 index 0000000..a599e9b --- /dev/null +++ b/src/router/guards/tab-guard.js @@ -0,0 +1,23 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:17 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { useTabStore } from '@/store' + +export const EXCLUDE_TAB = ['/404', '/403', '/login', '/role-select'] + +export function createTabGuard(router) { + router.afterEach((to) => { + if (EXCLUDE_TAB.includes(to.path)) return + const tabStore = useTabStore() + const { name, fullPath: path } = to + const title = to.meta?.title + const icon = to.meta?.icon + const keepAlive = to.meta?.keepAlive + tabStore.addTab({ name, path, title, icon, keepAlive }) + }) +} diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..4ab9972 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,105 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:23 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router' +import { setupRouterGuards } from './guards' +import { useAuthStore, usePermissionStore, useUserStore } from '@/store' + +export const basicRoutes = [ + { + name: 'Login', + path: '/login', + component: () => import('@/views/login/index.vue'), + meta: { + title: '登录页', + layout: 'empty', + }, + }, + + { + name: 'Home', + path: '/', + component: () => import('@/views/home/index.vue'), + meta: { + title: '首页', + }, + }, + + { + name: '404', + path: '/404', + component: () => import('@/views/error-page/404.vue'), + meta: { + title: '页面飞走了', + layout: 'empty', + }, + }, + + { + name: '403', + path: '/403', + component: () => import('@/views/error-page/403.vue'), + meta: { + title: '没有权限', + layout: 'empty', + }, + }, +] + +export const router = createRouter({ + history: + import.meta.env.VITE_USE_HASH === 'true' ? createWebHashHistory('/') : createWebHistory('/'), + routes: basicRoutes, + scrollBehavior: () => ({ left: 0, top: 0 }), +}) + +export async function setupRouter(app) { + try { + await initUserAndPermissions() + } catch (error) { + console.error('🚀 初始化失败', error) + } + setupRouterGuards(router) + app.use(router) +} + +export async function initUserAndPermissions() { + const permissionStore = usePermissionStore() + const userStore = useUserStore() + const authStore = useAuthStore() + + if (!authStore.accessToken) { + authStore.toLogin() + return + } + await Promise.all([userStore.getUserInfo(), permissionStore.initPermissions()]) + permissionStore.accessRoutes.forEach((route) => { + !router.hasRoute(route.name) && router.addRoute(route) + }) +} + +export async function resetRouter() { + const basicRouteNames = getRouteNames(basicRoutes) + router.getRoutes().forEach((route) => { + const name = route.name + if (!basicRouteNames.includes(name)) { + router.removeRoute(name) + } + }) +} + +export function getRouteNames(routes) { + const names = [] + for (const route of routes) { + names.push(route.name) + if (route.children?.length) { + names.push(...getRouteNames(route.children)) + } + } + return names +} diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 0000000..8c3680c --- /dev/null +++ b/src/settings.js @@ -0,0 +1,70 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:30:24 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +export default { + defaultLayout: 'default', + header: { + height: 60, + }, + tab: { + visible: true, + height: 50, + }, + naiveThemeOverrides: { + common: { + primaryColor: '#316C72FF', + primaryColorHover: '#316C72E3', + primaryColorPressed: '#2B4C59FF', + primaryColorSuppl: '#316C72E3', + + infoColor: '#2080F0FF', + infoColorHover: '#4098FCFF', + infoColorPressed: '#1060C9FF', + infoColorSuppl: '#4098FCFF', + + successColor: '#18A058FF', + successColorHover: '#36AD6AFF', + successColorPressed: '#0C7A43FF', + successColorSuppl: '#36AD6AFF', + + warningColor: '#F0A020FF', + warningColorHover: '#FCB040FF', + warningColorPressed: '#C97C10FF', + warningColorSuppl: '#FCB040FF', + + errorColor: '#D03050FF', + errorColorHover: '#DE576DFF', + errorColorPressed: '#AB1F3FFF', + errorColorSuppl: '#DE576DFF', + }, + }, +} + +export const basePermissions = [ + { + code: 'ExternalLink', + name: '外链', + type: 'MENU', + icon: 'i-fe:external-link', + order: 98, + enable: true, + show: true, + children: [ + { + code: 'MyBlog', + name: '博客-掘金', + type: 'MENU', + path: 'https://juejin.cn/user/1961184475483255', + icon: 'i-simple-icons:juejin', + order: 1, + enable: true, + show: true, + }, + ], + }, +] diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..a193337 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,18 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:26:15 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { createPinia } from 'pinia' +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' + +export function setupStore(app) { + const pinia = createPinia() + pinia.use(piniaPluginPersistedstate) + app.use(pinia) +} + +export * from './modules' diff --git a/src/store/modules/app.js b/src/store/modules/app.js new file mode 100644 index 0000000..e251d8a --- /dev/null +++ b/src/store/modules/app.js @@ -0,0 +1,37 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:31 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { defineStore } from 'pinia' +import { useDark } from '@vueuse/core' +import settings from '@/settings' + +export const useAppStore = defineStore('app', { + state: () => ({ + collapsed: false, + isDark: useDark(), + layout: settings.defaultLayout, + }), + actions: { + switchCollapsed() { + this.collapsed = !this.collapsed + }, + setCollapsed(b) { + this.collapsed = b + }, + toggleDark() { + this.isDark = !this.isDark + }, + setDeaultLayout(v) { + this.layout = v + }, + }, + persist: { + paths: ['layout', 'collapsed'], + storage: localStorage, + }, +}) diff --git a/src/store/modules/auth.js b/src/store/modules/auth.js new file mode 100644 index 0000000..4b68f37 --- /dev/null +++ b/src/store/modules/auth.js @@ -0,0 +1,54 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:39 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { defineStore } from 'pinia' +import { useUserStore, usePermissionStore, useTabStore } from '@/store' +import { resetRouter, router } from '@/router' + +export const useAuthStore = defineStore('auth', { + state: () => ({ + accessToken: undefined, + }), + actions: { + setToken({ accessToken }) { + this.accessToken = accessToken + }, + resetToken() { + this.$reset() + }, + toLogin() { + const currentRoute = unref(router.currentRoute) + router.replace({ + path: '/login', + query: currentRoute.query, + }) + }, + resetLoginState() { + const { resetUser } = useUserStore() + const { resetPermission } = usePermissionStore() + const { resetTabs } = useTabStore() + // 重置用户 + resetUser() + // 重置权限 + resetPermission() + // 重置Tabs + resetTabs() + // 重置路由 + resetRouter() + // 重置token + this.resetToken() + }, + async logout() { + this.resetLoginState() + this.toLogin() + }, + }, + persist: { + key: 'vue-naivue-admin_auth', + }, +}) diff --git a/src/store/modules/index.js b/src/store/modules/index.js new file mode 100644 index 0000000..5e83e85 --- /dev/null +++ b/src/store/modules/index.js @@ -0,0 +1,5 @@ +export * from './app' +export * from './auth' +export * from './permission' +export * from './tab' +export * from './user' diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js new file mode 100644 index 0000000..c3b425e --- /dev/null +++ b/src/store/modules/permission.js @@ -0,0 +1,80 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:47 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { defineStore } from 'pinia' +import { isExternal } from '@/utils' +import { basePermissions } from '@/settings' +import api from '@/api' + +const routeComponents = import.meta.glob('@/views/**/*.vue') + +export const usePermissionStore = defineStore('permission', { + state: () => ({ + menus: [], + accessRoutes: [], + asyncPermissions: [], + }), + getters: { + permissions() { + return basePermissions.concat(this.asyncPermissions) + }, + }, + actions: { + async initPermissions() { + const { data } = (await api.getRolePermissions()) || [] + this.asyncPermissions = data + this.menus = this.permissions + .filter((item) => item.type === 'MENU') + .map((item) => this.getMenuItem(item)) + .filter((item) => !!item) + .sort((a, b) => a.order - b.order) + }, + getMenuItem(item, parent) { + const route = this.generateRoute(item, item.show ? null : parent?.key) + if (item.enable && route.path && !isExternal(route.path)) this.accessRoutes.push(route) + if (!item.show) return null + const menuItem = { + label: route.meta.title, + key: route.name, + path: route.path, + icon: () => h('i', { class: `${route.meta.icon}?mask text-16` }), + order: item.order ?? 0, + } + const children = item.children?.filter((item) => item.type === 'MENU') || [] + if (children.length) { + menuItem.children = children + .map((child) => this.getMenuItem(child, menuItem)) + .filter((item) => !!item) + .sort((a, b) => a.order - b.order) + if (!menuItem.children.length) delete menuItem.children + } + return menuItem + }, + generateRoute(item, parentKey) { + return { + name: item.code, + path: item.path, + redirect: item.redirect, + component: routeComponents[item.component] || undefined, + meta: { + icon: item.icon, + title: item.name, + layout: item.layout || 'default', + keepAlive: !!item.keepAlive, + parentKey, + btns: item.children + ?.filter((item) => item.type === 'BUTTON') + .map((item) => ({ code: item.code, name: item.name })), + }, + } + }, + resetPermission() { + this.$reset() + }, + }, +}) diff --git a/src/store/modules/tab.js b/src/store/modules/tab.js new file mode 100644 index 0000000..4037358 --- /dev/null +++ b/src/store/modules/tab.js @@ -0,0 +1,91 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:52 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { defineStore } from 'pinia' +import { router } from '@/router' + +export const useTabStore = defineStore('tab', { + state: () => ({ + tabs: [], + activeTab: '', + reloading: false, + }), + getters: { + activeIndex() { + return this.tabs.findIndex((item) => item.path === this.activeTab) + }, + }, + actions: { + async setActiveTab(path) { + await nextTick() // tab栏dom更新完再设置激活,让tab栏定位到新增的tab上生效 + this.activeTab = path + }, + setTabs(tabs) { + this.tabs = tabs + }, + addTab(tab = {}) { + const findIndex = this.tabs.findIndex((item) => item.path === tab.path) + if (findIndex !== -1) { + this.tabs.splice(findIndex, 1, tab) + } else { + this.setTabs([...this.tabs, tab]) + } + this.setActiveTab(tab.path) + }, + async reloadTab(path, keepAlive) { + const findItem = this.tabs.find((item) => item.path === path) + if (!findItem) return + // 更新key可让keepAlive失效 + if (keepAlive) findItem.keepAlive = false + $loadingBar.start() + this.reloading = true + await nextTick() + this.reloading = false + findItem.keepAlive = !!keepAlive + setTimeout(() => { + document.documentElement.scrollTo({ left: 0, top: 0 }) + $loadingBar.finish() + }, 100) + }, + async removeTab(path) { + this.setTabs(this.tabs.filter((tab) => tab.path !== path)) + if (path === this.activeTab) { + router.push(this.tabs[this.tabs.length - 1].path) + } + }, + removeOther(curPath = this.activeTab) { + this.setTabs(this.tabs.filter((tab) => tab.path === curPath)) + if (curPath !== this.activeTab) { + router.push(this.tabs[this.tabs.length - 1].path) + } + }, + removeLeft(curPath) { + const curIndex = this.tabs.findIndex((item) => item.path === curPath) + const filterTabs = this.tabs.filter((item, index) => index >= curIndex) + this.setTabs(filterTabs) + if (!filterTabs.find((item) => item.path === this.activeTab)) { + router.push(filterTabs[filterTabs.length - 1].path) + } + }, + removeRight(curPath) { + const curIndex = this.tabs.findIndex((item) => item.path === curPath) + const filterTabs = this.tabs.filter((item, index) => index <= curIndex) + this.setTabs(filterTabs) + if (!filterTabs.find((item) => item.path === this.activeTab.value)) { + router.push(filterTabs[filterTabs.length - 1].path) + } + }, + resetTabs() { + this.$reset() + }, + }, + persist: { + paths: ['tabs'], + storage: sessionStorage, + }, +}) diff --git a/src/store/modules/user.js b/src/store/modules/user.js new file mode 100644 index 0000000..5a3f98d --- /dev/null +++ b/src/store/modules/user.js @@ -0,0 +1,69 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:25:59 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { defineStore } from 'pinia' +import api from '@/api' +import { useAuthStore } from '@/store' + +export const useUserStore = defineStore('user', { + state: () => ({ + userInfo: null, + }), + getters: { + userId() { + return this.userInfo?.id + }, + username() { + return this.userInfo?.username + }, + nickName() { + return this.userInfo?.nickName + }, + avatar() { + return this.userInfo?.avatar + }, + currentRole() { + return this.userInfo?.currentRole || {} + }, + roles() { + return this.userInfo?.roles || [] + }, + }, + actions: { + async getUserInfo() { + try { + const res = await api.getUser() + const { id, username, profile, roles, currentRole } = res.data || {} + this.userInfo = { + id, + username, + avatar: profile?.avatar, + nickName: profile?.nickName, + gender: profile?.gender, + address: profile?.address, + email: profile?.email, + roles, + currentRole, + } + return Promise.resolve(res.data) + } catch (error) { + return Promise.reject(error) + } + }, + async switchCurrentRole(roleCode) { + const { data } = await api.switchCurrentRole(roleCode) + const authStore = useAuthStore() + authStore.resetLoginState() + await nextTick() + authStore.setToken(data) + }, + resetUser() { + this.$reset() + }, + }, +}) diff --git a/src/styles/global.scss b/src/styles/global.scss new file mode 100644 index 0000000..3aafc13 --- /dev/null +++ b/src/styles/global.scss @@ -0,0 +1,74 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:26:28 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +html, +body { + width: 100%; + height: 100%; + overflow: hidden; +} + +#app { + width: 100%; + height: 100%; +} + +/* transition fade-slide */ +.fade-slide-leave-active, +.fade-slide-enter-active { + transition: all 0.3s; +} + +.fade-slide-enter-from { + opacity: 0; + transform: translateX(-30px); +} + +.fade-slide-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* 自定义滚动条样式 */ +.cus-scroll { + overflow: auto; + &::-webkit-scrollbar { + width: 8px; + height: 8px; + } +} +.cus-scroll-x { + overflow-x: auto; + &::-webkit-scrollbar { + width: 0; + height: 8px; + } +} +.cus-scroll-y { + overflow-y: auto; + &::-webkit-scrollbar { + width: 8px; + height: 0; + } +} +.cus-scroll, +.cus-scroll-x, +.cus-scroll-y { + &::-webkit-scrollbar-thumb { + background-color: transparent; + border-radius: 4px; + } + &:hover { + &::-webkit-scrollbar-thumb { + background: #bfbfbf; + } + &::-webkit-scrollbar-thumb:hover { + background: var(--primary-color); + } + } +} diff --git a/src/styles/reset.css b/src/styles/reset.css new file mode 100644 index 0000000..be95e91 --- /dev/null +++ b/src/styles/reset.css @@ -0,0 +1,43 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:26:38 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +html { + box-sizing: border-box; +} + +*, +::before, +::after { + margin: 0; + padding: 0; + box-sizing: inherit; +} + +a { + text-decoration: none; + color: inherit; +} + +a:hover, +a:link, +a:visited, +a:active { + text-decoration: none; +} + +ol, +ul { + list-style: none; +} + +input, +textarea { + outline: none; + border: none; + resize: none; +} diff --git a/src/utils/common.js b/src/utils/common.js new file mode 100644 index 0000000..4a887d1 --- /dev/null +++ b/src/utils/common.js @@ -0,0 +1,107 @@ +/********************************** + * @FilePath: common.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:45:46 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import dayjs from 'dayjs' + +/** + * @desc 格式化时间 + * @param {(Object|string|number)} time + * @param {string} format + * @returns {string | null} + */ +export function formatDateTime(time = undefined, format = 'YYYY-MM-DD HH:mm:ss') { + return dayjs(time).format(format) +} + +export function formatDate(date = undefined, format = 'YYYY-MM-DD') { + return formatDateTime(date, format) +} + +/** + * @desc 函数节流 + * @param {Function} fn + * @param {Number} wait + * @returns {Function} + */ +export function throttle(fn, wait) { + var context, args + var previous = 0 + + return function () { + var now = +new Date() + context = this + args = arguments + if (now - previous > wait) { + fn.apply(context, args) + previous = now + } + } +} + +/** + * @desc 函数防抖 + * @param {Function} func + * @param {number} wait + * @param {boolean} immediate + * @return {*} + */ +export function debounce(method, wait, immediate) { + let timeout + return function (...args) { + let context = this + if (timeout) { + clearTimeout(timeout) + } + // 立即执行需要两个条件,一是immediate为true,二是timeout未被赋值或被置为null + if (immediate) { + /** + * 如果定时器不存在,则立即执行,并设置一个定时器,wait毫秒后将定时器置为null + * 这样确保立即执行后wait毫秒内不会被再次触发 + */ + let callNow = !timeout + timeout = setTimeout(() => { + timeout = null + }, wait) + if (callNow) { + method.apply(context, args) + } + } else { + // 如果immediate为false,则函数wait毫秒后执行 + timeout = setTimeout(() => { + /** + * args是一个类数组对象,所以使用fn.apply + * 也可写作method.call(context, ...args) + */ + method.apply(context, args) + }, wait) + } + } +} + +/** + * @desc 睡一会儿,让子弹暂停一下 + * @param {number} time 毫秒数 + * @returns + */ +export function sleep(time) { + return new Promise((resolve) => setTimeout(resolve, time)) +} + +/** + * @param {HTMLElement} el + * @param {Function} cb + * @return {ResizeObserver} + */ +export function useResize(el, cb) { + const observer = new ResizeObserver((entries) => { + cb(entries[0].contentRect) + }) + observer.observe(el) + return observer +} diff --git a/src/utils/http/helpers.js b/src/utils/http/helpers.js new file mode 100644 index 0000000..cc056f3 --- /dev/null +++ b/src/utils/http/helpers.js @@ -0,0 +1,64 @@ +/********************************** + * @FilePath: helpers.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:46:22 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { useAuthStore } from '@/store' + +let isConfirming = false +export function resolveResError(code, message) { + switch (code) { + case 401: + if (isConfirming) return + isConfirming = true + $dialog.confirm({ + title: '提示', + type: 'info', + content: '登录已过期,是否重新登录?', + confirm() { + useAuthStore().logout() + window.$message?.success('已退出登录') + isConfirming = false + }, + cancel() { + isConfirming = false + }, + }) + return false + case 11007: + case 11008: + if (isConfirming) return + isConfirming = true + $dialog.confirm({ + title: '提示', + type: 'info', + content: `${message},是否重新登录?`, + confirm() { + useAuthStore().logout() + window.$message?.success('已退出登录') + isConfirming = false + }, + cancel() { + isConfirming = false + }, + }) + return false + case 403: + message = '请求被拒绝' + break + case 404: + message = '请求资源或接口不存在' + break + case 500: + message = '服务器发生异常' + break + default: + message = message ?? `【${code}】: 未知异常!` + break + } + return message +} diff --git a/src/utils/http/index.js b/src/utils/http/index.js new file mode 100644 index 0000000..d607959 --- /dev/null +++ b/src/utils/http/index.js @@ -0,0 +1,30 @@ +/********************************** + * @FilePath: index.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:46:28 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import axios from 'axios' +import { setupInterceptors } from './interceptors' + +export function createAxios(options = {}) { + const defaultOptions = { + baseURL: '/api', + timeout: 12000, + } + const service = axios.create({ + ...defaultOptions, + ...options, + }) + setupInterceptors(service) + return service +} + +export const request = createAxios() + +export const mockRequest = createAxios({ + baseURL: '/mock-api', +}) diff --git a/src/utils/http/interceptors.js b/src/utils/http/interceptors.js new file mode 100644 index 0000000..8ade23d --- /dev/null +++ b/src/utils/http/interceptors.js @@ -0,0 +1,72 @@ +/********************************** + * @FilePath: interceptors.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:46:40 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { resolveResError } from './helpers' +import { useAuthStore } from '@/store' + +export function setupInterceptors(axiosInstance) { + function reqResolve(config) { + // 处理不需要token的请求 + if (config.noNeedToken) { + return config + } + + const { accessToken } = useAuthStore() + if (accessToken) { + // token: Bearer + xxx + config.headers.Authorization = 'Bearer ' + accessToken + } + + return config + } + + function reqReject(error) { + return Promise.reject(error) + } + + const SUCCESS_CODES = [0, 200] + function resResolve(response) { + const { data, status, config, statusText, headers } = response + if (headers['content-type']?.includes('json')) { + if (SUCCESS_CODES.includes(data?.code)) { + return Promise.resolve(data) + } + const code = data?.code ?? status + + // 根据code处理对应的操作,并返回处理后的message + const message = resolveResError(code, data?.message ?? statusText) + + //需要错误提醒 + !config.noNeedTip && window.$message?.error(message) + return Promise.reject({ code, message, error: data ?? response }) + } + return Promise.resolve(data ?? response) + } + + async function resReject(error) { + if (!error || !error.response) { + const code = error?.code + /** 根据code处理对应的操作,并返回处理后的message */ + const message = resolveResError(code, error.message) + window.$message?.error(message) + return Promise.reject({ code, message, error }) + } + + const { data, status, config } = error.response + const code = data?.code ?? status + + const message = resolveResError(code, data?.message ?? error.message) + /** 需要错误提醒 */ + !config?.noNeedTip && message && window.$message?.error(message) + return Promise.reject({ code, message, error: error.response?.data || error.response }) + } + + axiosInstance.interceptors.request.use(reqResolve, reqReject) + axiosInstance.interceptors.response.use(resResolve, resReject) +} diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..a18642a --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,14 @@ +/********************************** + * @FilePath: index.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:45:53 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +export * from './common' +export * from './http' +export * from './is' +export * from './naiveTools' +export * from './storage' diff --git a/src/utils/is.js b/src/utils/is.js new file mode 100644 index 0000000..c4d76c3 --- /dev/null +++ b/src/utils/is.js @@ -0,0 +1,128 @@ +/********************************** + * @FilePath: is.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:45:32 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +const toString = Object.prototype.toString + +export function is(val, type) { + return toString.call(val) === `[object ${type}]` +} + +export function isDef(val) { + return typeof val !== 'undefined' +} + +export function isUndef(val) { + return typeof val === 'undefined' +} + +export function isNull(val) { + return val === null +} + +export function isWhitespace(val) { + return val === '' +} + +export function isObject(val) { + return !isNull(val) && is(val, 'Object') +} + +export function isArray(val) { + return val && Array.isArray(val) +} + +export function isString(val) { + return is(val, 'String') +} + +export function isNumber(val) { + return is(val, 'Number') +} + +export function isBoolean(val) { + return is(val, 'Boolean') +} + +export function isDate(val) { + return is(val, 'Date') +} + +export function isRegExp(val) { + return is(val, 'RegExp') +} + +export function isFunction(val) { + return typeof val === 'function' +} + +export function isPromise(val) { + return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch) +} + +export function isElement(val) { + return isObject(val) && !!val.tagName +} + +export function isWindow(val) { + return typeof window !== 'undefined' && isDef(window) && is(val, 'Window') +} + +export function isNullOrUndef(val) { + return isNull(val) || isUndef(val) +} + +export function isNullOrWhitespace(val) { + return isNullOrUndef(val) || isWhitespace(val) +} + +/** 空数组 | 空字符串 | 空对象 | 空Map | 空Set */ +export function isEmpty(val) { + if (isArray(val) || isString(val)) { + return val.length === 0 + } + + if (val instanceof Map || val instanceof Set) { + return val.size === 0 + } + + if (isObject(val)) { + return Object.keys(val).length === 0 + } + + return false +} + +/** + * * 类似mysql的IFNULL函数 + * * 第一个参数为null/undefined/'' 则返回第二个参数作为备用值,否则返回第一个参数 + * @param {Number|Boolean|String} val + * @param {Number|Boolean|String} def + * @returns + */ +export function ifNull(val, def = '') { + return isNullOrWhitespace(val) ? def : val +} + +export function isUrl(path) { + const reg = + /(((^https?:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)$/ + return reg.test(path) +} + +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path) { + return /^(https?:|mailto:|tel:)/.test(path) +} + +export const isServer = typeof window === 'undefined' + +export const isClient = !isServer diff --git a/src/utils/naiveTools.js b/src/utils/naiveTools.js new file mode 100644 index 0000000..754ef12 --- /dev/null +++ b/src/utils/naiveTools.js @@ -0,0 +1,121 @@ +/********************************** + * @FilePath: naiveTools.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:45:20 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import * as NaiveUI from 'naive-ui' +import { isNullOrUndef } from '@/utils' +import settings from '@/settings' +import { useAppStore } from '@/store/modules/app' + +export function setupMessage(NMessage) { + class Message { + static instance + constructor() { + // 单例模式 + if (Message.instance) return Message.instance + Message.instance = this + this.message = {} + this.removeTimer = {} + } + + removeMessage(key, duration = 5000) { + this.removeTimer[key] && clearTimeout(this.removeTimer[key]) + this.removeTimer[key] = setTimeout(() => { + this.message[key]?.destroy() + }, duration) + } + + destroy(key, duration = 200) { + setTimeout(() => { + this.message[key]?.destroy() + }, duration) + } + + showMessage(type, content, option = {}) { + if (Array.isArray(content)) { + return content.forEach((msg) => NMessage[type](msg, option)) + } + + if (!option.key) { + return NMessage[type](content, option) + } + + const currentMessage = this.message[option.key] + if (currentMessage) { + currentMessage.type = type + currentMessage.content = content + } else { + this.message[option.key] = NMessage[type](content, { + ...option, + duration: 0, + onAfterLeave: () => { + delete this.message[option.key] + }, + }) + } + this.removeMessage(option.key, option.duration) + } + + loading(content, option) { + this.showMessage('loading', content, option) + } + + success(content, option) { + this.showMessage('success', content, option) + } + + error(content, option) { + this.showMessage('error', content, option) + } + + info(content, option) { + this.showMessage('info', content, option) + } + + warning(content, option) { + this.showMessage('warning', content, option) + } + } + + return new Message() +} + +export function setupDialog(NDialog) { + NDialog.confirm = function (option = {}) { + const showIcon = !isNullOrUndef(option.title) + return NDialog[option.type || 'warning']({ + showIcon, + positiveText: '确定', + negativeText: '取消', + onPositiveClick: option.confirm, + onNegativeClick: option.cancel, + onMaskClick: option.cancel, + ...option, + }) + } + + return NDialog +} + +export function setupNaiveDiscreteApi() { + const appStore = useAppStore() + const { naiveThemeOverrides: themeOverrides } = settings + const configProviderProps = computed(() => ({ + theme: appStore.isDark ? NaiveUI.darkTheme : undefined, + themeOverrides, + })) + const { message, dialog, notification, loadingBar } = NaiveUI.createDiscreteApi( + ['message', 'dialog', 'notification', 'loadingBar'], + { configProviderProps } + ) + + window.$loadingBar = loadingBar + window.$notification = notification + window.$message = setupMessage(message) + window.$dialog = setupDialog(dialog) +} diff --git a/src/utils/storage/index.js b/src/utils/storage/index.js new file mode 100644 index 0000000..f173867 --- /dev/null +++ b/src/utils/storage/index.js @@ -0,0 +1,30 @@ +/********************************** + * @FilePath: index.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:46:07 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { createStorage } from './storage' + +const prefixKey = 'vue-naive-admin_' + +export const createLocalStorage = function (option = {}) { + return createStorage({ + prefixKey: option.prefixKey || '', + storage: localStorage, + }) +} + +export const createSessionStorage = function (option = {}) { + return createStorage({ + prefixKey: option.prefixKey || '', + storage: sessionStorage, + }) +} + +export const lStorage = createLocalStorage({ prefixKey }) + +export const sStorage = createSessionStorage({ prefixKey }) diff --git a/src/utils/storage/storage.js b/src/utils/storage/storage.js new file mode 100644 index 0000000..85f0968 --- /dev/null +++ b/src/utils/storage/storage.js @@ -0,0 +1,64 @@ +/********************************** + * @FilePath: storage.js + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/04 22:46:13 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { isNullOrUndef } from '@/utils' + +class Storage { + constructor(option) { + this.storage = option.storage + this.prefixKey = option.prefixKey + } + + getKey(key) { + return `${this.prefixKey}${key}`.toLowerCase() + } + + set(key, value, expire) { + const stringData = JSON.stringify({ + value, + time: Date.now(), + expire: !isNullOrUndef(expire) ? new Date().getTime() + expire * 1000 : null, + }) + this.storage.setItem(this.getKey(key), stringData) + } + + get(key) { + const { value } = this.getItem(key, {}) + return value + } + + getItem(key, def = null) { + const val = this.storage.getItem(this.getKey(key)) + if (!val) return def + try { + const data = JSON.parse(val) + const { value, time, expire } = data + if (isNullOrUndef(expire) || expire > new Date().getTime()) { + return { value, time } + } + this.remove(key) + return def + } catch (error) { + this.remove(key) + return def + } + } + + remove(key) { + this.storage.removeItem(this.getKey(key)) + } + + clear() { + this.storage.clear() + } +} + +export function createStorage({ prefixKey = '', storage = sessionStorage }) { + return new Storage({ prefixKey, storage }) +} diff --git a/src/views/base/index.vue b/src/views/base/index.vue new file mode 100644 index 0000000..504ea35 --- /dev/null +++ b/src/views/base/index.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/views/base/keep-alive.vue b/src/views/base/keep-alive.vue new file mode 100644 index 0000000..6d23694 --- /dev/null +++ b/src/views/base/keep-alive.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/views/base/test-modal.vue b/src/views/base/test-modal.vue new file mode 100644 index 0000000..0d9c919 --- /dev/null +++ b/src/views/base/test-modal.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/base/unocss-icon.vue b/src/views/base/unocss-icon.vue new file mode 100644 index 0000000..a0b273a --- /dev/null +++ b/src/views/base/unocss-icon.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/src/views/base/unocss.vue b/src/views/base/unocss.vue new file mode 100644 index 0000000..980d2f3 --- /dev/null +++ b/src/views/base/unocss.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/views/demo/upload/index.vue b/src/views/demo/upload/index.vue new file mode 100644 index 0000000..58705f4 --- /dev/null +++ b/src/views/demo/upload/index.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/error-page/403.vue b/src/views/error-page/403.vue new file mode 100644 index 0000000..4ea9ed5 --- /dev/null +++ b/src/views/error-page/403.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/views/error-page/404.vue b/src/views/error-page/404.vue new file mode 100644 index 0000000..d455763 --- /dev/null +++ b/src/views/error-page/404.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..28625ce --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/src/views/login/api.js b/src/views/login/api.js new file mode 100644 index 0000000..15d9a2a --- /dev/null +++ b/src/views/login/api.js @@ -0,0 +1,15 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:28:30 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { request } from '@/utils' + +export default { + toggleRole: (data) => request.post('/auth/role/toggle', data), + login: (data) => request.post('/auth/login', data, { noNeedToken: true }), + getUser: () => request.get('/user/detail'), +} diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 0000000..03b3b01 --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/views/pms/resource/api.js b/src/views/pms/resource/api.js new file mode 100644 index 0000000..0d96b94 --- /dev/null +++ b/src/views/pms/resource/api.js @@ -0,0 +1,19 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:28:47 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import axios from 'axios' +import { request } from '@/utils' + +export default { + getMenuTree: () => request.get('/permission/menu/tree'), + getButtonAndApi: (parentId) => request.get(`/permission/button-and-api/${parentId}`), + getComponents: () => axios.get(`${import.meta.env.VITE_PUBLIC_PATH}components.json`), + addPermission: (data) => request.post('/permission', data), + savePermission: (id, data) => request.patch(`/permission/${id}`, data), + deletePermission: (id) => request.delete(`permission/${id}`), +} diff --git a/src/views/pms/resource/components/MenuTree.vue b/src/views/pms/resource/components/MenuTree.vue new file mode 100644 index 0000000..7823c2f --- /dev/null +++ b/src/views/pms/resource/components/MenuTree.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/pms/resource/components/QuestionLabel.vue b/src/views/pms/resource/components/QuestionLabel.vue new file mode 100644 index 0000000..cc2285d --- /dev/null +++ b/src/views/pms/resource/components/QuestionLabel.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/views/pms/resource/components/ResAddOrEdit.vue b/src/views/pms/resource/components/ResAddOrEdit.vue new file mode 100644 index 0000000..f4b62ee --- /dev/null +++ b/src/views/pms/resource/components/ResAddOrEdit.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/views/pms/resource/index.vue b/src/views/pms/resource/index.vue new file mode 100644 index 0000000..63c2809 --- /dev/null +++ b/src/views/pms/resource/index.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/views/pms/role/api.js b/src/views/pms/role/api.js new file mode 100644 index 0000000..01741fd --- /dev/null +++ b/src/views/pms/role/api.js @@ -0,0 +1,21 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:29:27 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { request } from '@/utils' + +export default { + create: (data) => request.post('/role', data), + read: (params = {}) => request.get('/role/page', { params }), + update: (data) => request.patch(`/role/${data.id}`, data), + delete: (id) => request.delete(`/role/${id}`), + + getAllPermissionTree: () => request.get('/permission/tree'), + getAllUsers: (params = {}) => request.get('/user', { params }), + addRoleUsers: (roleId, data) => request.patch(`/role/users/add/${roleId}`, data), + removeRoleUsers: (roleId, data) => request.patch(`/role/users/remove/${roleId}`, data), +} diff --git a/src/views/pms/role/components/CascadeTree.vue b/src/views/pms/role/components/CascadeTree.vue new file mode 100644 index 0000000..9968312 --- /dev/null +++ b/src/views/pms/role/components/CascadeTree.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/views/pms/role/index.vue b/src/views/pms/role/index.vue new file mode 100644 index 0000000..762d70a --- /dev/null +++ b/src/views/pms/role/index.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/views/pms/role/role-user.vue b/src/views/pms/role/role-user.vue new file mode 100644 index 0000000..0c13327 --- /dev/null +++ b/src/views/pms/role/role-user.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/views/pms/user/api.js b/src/views/pms/user/api.js new file mode 100644 index 0000000..24a9792 --- /dev/null +++ b/src/views/pms/user/api.js @@ -0,0 +1,19 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:29:51 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { request } from '@/utils' + +export default { + create: (data) => request.post('/user', data), + read: (params = {}) => request.get('/user', { params }), + update: (data) => request.patch(`/user/${data.id}`, data), + delete: (id) => request.delete(`/user/${id}`), + resetPwd: (id, data) => request.patch(`/user/password/reset/${id}`, data), + + getAllRoles: () => request.get('/role?enable=1'), +} diff --git a/src/views/pms/user/index.vue b/src/views/pms/user/index.vue new file mode 100644 index 0000000..b014375 --- /dev/null +++ b/src/views/pms/user/index.vue @@ -0,0 +1,306 @@ + + + + + diff --git a/src/views/profile/api.js b/src/views/profile/api.js new file mode 100644 index 0000000..98849fe --- /dev/null +++ b/src/views/profile/api.js @@ -0,0 +1,14 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:30:03 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { request } from '@/utils' + +export default { + changePassword: (data) => request.post('/auth/password', data), + updateProfile: (data) => request.patch(`/user/profile/${data.id}`, data), +} diff --git a/src/views/profile/index.vue b/src/views/profile/index.vue new file mode 100644 index 0000000..7bc7229 --- /dev/null +++ b/src/views/profile/index.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/uno.config.js b/uno.config.js new file mode 100644 index 0000000..20d2f1d --- /dev/null +++ b/uno.config.js @@ -0,0 +1,76 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:30:57 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import { defineConfig, presetUno, presetIcons, presetAttributify } from 'unocss' +import presetRemToPx from '@unocss/preset-rem-to-px' +import { FileSystemIconLoader } from '@iconify/utils/lib/loader/node-loaders' +import { getIcons } from './build' + +const icons = getIcons() +export default defineConfig({ + presets: [ + presetUno(), + presetAttributify(), + presetIcons({ + warn: true, + prefix: ['i-'], + extraProperties: { + display: 'inline-block', + }, + collections: { + me: FileSystemIconLoader('./src/assets/icons/isme'), + fe: FileSystemIconLoader('./src/assets/icons/feather'), + }, + }), + presetRemToPx({ baseFontSize: 4 }), + ], + safelist: icons.map((icon) => `${icon} ${icon}?mask`.split(' ')).flat(), + shortcuts: [ + ['wh-full', 'w-full h-full'], + ['f-c-c', 'flex justify-center items-center'], + ['flex-col', 'flex flex-col'], + ['card-border', 'border border-solid border-light_border dark:border-dark_border'], + ['auto-bg', 'bg-white dark:bg-dark'], + ['auto-bg-hover', 'hover:bg-#eaf0f1 hover:dark:bg-#1b2429'], + ['auto-bg-highlight', 'bg-#eaf0f1 dark:bg-#1b2429'], + ['text-highlight', 'rounded-4 px-8 py-2 auto-bg-highlight'], + ], + rules: [ + [ + 'card-shadow', + { 'box-shadow': '0 1px 2px -2px #00000029, 0 3px 6px #0000001f, 0 5px 12px 4px #00000017' }, + ], + ], + theme: { + colors: { + primary: 'var(--primary-color)', + primary_hover: 'var(--primary-color-hover)', + primary_pressed: 'var(--primary-color-pressed)', + primary_active: 'var(--primary-color-active)', + info: 'var(--info-color)', + info_hover: 'var(--info-color-hover)', + info_pressed: 'var(--info-color-pressed)', + info_active: 'var(--info-color-active)', + success: 'var(--success-color)', + success_hover: 'var(--success-color-hover)', + success_pressed: 'var(--success-color-pressed)', + success_active: 'var(--success-color-active)', + warning: 'var(--warning-color)', + warning_hover: 'var(--warning-color-hover)', + warning_pressed: 'var(--warning-color-pressed)', + warning_active: 'var(--warning-color-active)', + error: 'var(--error-color)', + error_hover: 'var(--error-color-hover)', + error_pressed: 'var(--error-color-pressed)', + error_active: 'var(--error-color-active)', + dark: '#18181c', + light_border: '#efeff5', + dark_border: '#2d2d30', + }, + }, +}) diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..eb5605e --- /dev/null +++ b/vite.config.js @@ -0,0 +1,78 @@ +/********************************** + * @Author: Ronnie Zhang + * @LastEditor: Ronnie Zhang + * @LastEditTime: 2023/12/05 21:31:02 + * @Email: zclzone@outlook.com + * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top + **********************************/ + +import path from 'path' +import { defineConfig, loadEnv } from 'vite' +import Vue from '@vitejs/plugin-vue' +import Unocss from 'unocss/vite' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { NaiveUiResolver } from 'unplugin-vue-components/resolvers' +import { createHtmlPlugin } from 'vite-plugin-html' +import { pluginPagePathes, pluginIcons } from './build/plugin-isme' + +export default defineConfig(({ command, mode }) => { + const isBuild = command === 'build' + const viteEnv = loadEnv(mode, process.cwd()) + const { VITE_TITLE, VITE_PUBLIC_PATH, VITE_PROXY_TARGET } = viteEnv + + return { + base: VITE_PUBLIC_PATH || '/', + plugins: [ + Vue(), + Unocss(), + AutoImport({ + imports: ['vue', 'vue-router'], + dts: false, + }), + Components({ + resolvers: [NaiveUiResolver()], + dts: false, + }), + createHtmlPlugin({ + minify: isBuild, + inject: { + data: { + title: VITE_TITLE, + }, + }, + }), + // 自定义插件,用于生成页面文件的path,并添加到虚拟模块 + pluginPagePathes(), + // 自定义插件,用于生成自定义icon,并添加到虚拟模块 + pluginIcons(), + ], + resolve: { + alias: { + '@': path.resolve(process.cwd(), 'src'), + '~': path.resolve(process.cwd()), + }, + }, + server: { + host: '0.0.0.0', + port: 3200, + open: false, + proxy: { + '/api': { + target: VITE_PROXY_TARGET, + changeOrigin: true, + rewrite: (path) => path.replace(new RegExp('^/api'), ''), + configure: (proxy, options) => { + // 配置此项可在响应头中看到请求的真实地址 + proxy.on('proxyRes', (proxyRes, req) => { + proxyRes.headers['x-real-url'] = new URL(req.url || '', options.target)?.href || '' + }) + }, + }, + }, + }, + build: { + chunkSizeWarningLimit: 1024, // chunk 大小警告的限制(单位kb) + }, + } +})