From 013373d61f3361289da718fa13d3837ae8973439 Mon Sep 17 00:00:00 2001 From: sjeam <359824901@qq.com> Date: Tue, 22 Jul 2025 09:14:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 22 + .github/workflows/deploy.yml | 38 + .gitignore | 29 + .npmrc | 12 + .vscode/extensions.json | 21 + .vscode/settings.json | 36 + .vscode/unocss.json | 11 + .vscode/vue3.code-snippets | 48 + CONTRIBUTING.md | 67 + LICENSE | 21 + README.md | 328 +- build/config/index.ts | 1 + build/config/proxy.ts | 17 + build/plugins/autoImport.ts | 13 + build/plugins/cleanImage.ts | 12 + build/plugins/component.ts | 11 + build/plugins/index.ts | 43 + build/plugins/replaceUrl.ts | 13 + build/plugins/unocss.ts | 9 + build/plugins/visualizer.ts | 13 + cz.config.js | 58 + env/.env | 23 + env/.env.development | 8 + env/.env.production | 8 + env/.env.test | 8 + eslint.config.js | 53 + index.html | 20 + package.json | 132 + pnpm-lock.yaml | 13277 ++++++++++++++++ scripts/post-upgrade.js | 36 + scripts/verify-commit.js | 28 + src/App.vue | 22 + src/api/common/index.ts | 24 + src/api/common/types.ts | 21 + src/api/index.ts | 4 + src/api/user/index.ts | 22 + src/api/user/types.ts | 30 + src/components/.gitkeep | 0 src/components/agree-privacy/index.vue | 214 + src/components/lang-select/index.vue | 51 + src/hooks/index.ts | 8 + src/hooks/use-clipboard/index.ts | 33 + src/hooks/use-loading/index.ts | 24 + src/hooks/use-location/index.ts | 329 + src/hooks/use-location/types.ts | 30 + src/hooks/use-modal/index.ts | 24 + src/hooks/use-permission/index.ts | 10 + src/hooks/use-share/index.ts | 48 + src/hooks/use-share/types.ts | 6 + src/locales/index.ts | 21 + src/locales/langs/en.ts | 11 + src/locales/langs/zh-Hans.ts | 11 + src/main.ts | 14 + src/manifest.json | 85 + src/pages.json | 113 + src/pages/common/404/index.vue | 35 + src/pages/common/goods/address.vue | 240 + src/pages/common/goods/detail.vue | 183 + src/pages/common/goods/order copy.vue | 507 + src/pages/common/goods/order.vue | 309 + src/pages/common/login/index.vue | 180 + src/pages/common/webview/index.vue | 12 + src/pages/tab/home/index.vue | 835 + src/pages/tab/list/index.vue | 1081 ++ src/pages/tab/user/index.vue | 83 + src/plugins/index.ts | 21 + src/plugins/permission.ts | 57 + src/plugins/ui.ts | 28 + src/router/index.ts | 89 + src/static/images/404.png | Bin 0 -> 8486 bytes src/static/images/logo.png | Bin 0 -> 4023 bytes src/static/images/pay.png | Bin 0 -> 68567 bytes src/static/images/tabbar/icon_home.png | Bin 0 -> 693 bytes .../images/tabbar/icon_home_selected.png | Bin 0 -> 689 bytes src/static/images/tabbar/icon_list.png | Bin 0 -> 604 bytes .../images/tabbar/icon_list_selected.png | Bin 0 -> 600 bytes src/static/images/tabbar/icon_me.png | Bin 0 -> 909 bytes src/static/images/tabbar/icon_me_selected.png | Bin 0 -> 897 bytes src/static/styles/common.scss | 160 + src/store/index.ts | 27 + src/store/modules/app/index.ts | 58 + src/store/modules/app/types.ts | 3 + src/store/modules/user/index.ts | 85 + src/store/modules/user/types.ts | 16 + src/uni.scss | 54 + src/uni_modules/uview-plus/LICENSE | 21 + src/uni_modules/uview-plus/README.md | 74 + src/uni_modules/uview-plus/changelog.md | 921 ++ .../uview-plus/components/u--form/u--form.vue | 85 + .../components/u--image/u--image.vue | 50 + .../components/u--input/u--input.vue | 74 + .../uview-plus/components/u--text/u--text.vue | 45 + .../components/u--textarea/u--textarea.vue | 47 + .../u-action-sheet-data.vue | 109 + .../components/u-action-sheet/actionSheet.js | 26 + .../components/u-action-sheet/props.js | 62 + .../u-action-sheet/u-action-sheet.vue | 282 + .../uview-plus/components/u-album/album.js | 28 + .../uview-plus/components/u-album/props.js | 86 + .../uview-plus/components/u-album/u-album.vue | 300 + .../uview-plus/components/u-alert/alert.js | 22 + .../uview-plus/components/u-alert/props.js | 46 + .../uview-plus/components/u-alert/u-alert.vue | 250 + .../components/u-avatar-group/avatarGroup.js | 23 + .../components/u-avatar-group/props.js | 54 + .../u-avatar-group/u-avatar-group.vue | 109 + .../uview-plus/components/u-avatar/avatar.js | 28 + .../uview-plus/components/u-avatar/props.js | 81 + .../components/u-avatar/u-avatar.vue | 179 + .../components/u-back-top/backtop.js | 27 + .../uview-plus/components/u-back-top/props.js | 56 + .../components/u-back-top/u-back-top.vue | 132 + .../uview-plus/components/u-badge/badge.js | 27 + .../uview-plus/components/u-badge/props.js | 79 + .../uview-plus/components/u-badge/u-badge.vue | 176 + .../uview-plus/components/u-box/props.js | 27 + .../uview-plus/components/u-box/u-box.vue | 91 + .../uview-plus/components/u-button/button.js | 43 + .../uview-plus/components/u-button/nvue.scss | 46 + .../uview-plus/components/u-button/props.js | 159 + .../components/u-button/u-button.vue | 503 + .../uview-plus/components/u-button/vue.scss | 81 + .../components/u-calendar/calendar.js | 45 + .../components/u-calendar/header.vue | 109 + .../components/u-calendar/month.vue | 608 + .../uview-plus/components/u-calendar/props.js | 160 + .../components/u-calendar/u-calendar.vue | 411 + .../uview-plus/components/u-calendar/util.js | 86 + .../components/u-car-keyboard/carKeyboard.js | 15 + .../components/u-car-keyboard/props.js | 17 + .../u-car-keyboard/u-car-keyboard.vue | 314 + .../uview-plus/components/u-card/card.js | 40 + .../uview-plus/components/u-card/props.js | 134 + .../uview-plus/components/u-card/u-card.vue | 184 + .../components/u-cate-tab/u-cate-tab.vue | 359 + .../components/u-cell-group/cellGroup.js | 17 + .../components/u-cell-group/props.js | 16 + .../components/u-cell-group/u-cell-group.vue | 66 + .../uview-plus/components/u-cell/cell.js | 35 + .../uview-plus/components/u-cell/props.js | 112 + .../uview-plus/components/u-cell/u-cell.vue | 274 + .../u-checkbox-group/checkboxGroup.js | 29 + .../components/u-checkbox-group/props.js | 93 + .../u-checkbox-group/u-checkbox-group.vue | 133 + .../components/u-checkbox/checkbox.js | 27 + .../uview-plus/components/u-checkbox/props.js | 76 + .../components/u-checkbox/u-checkbox.vue | 388 + .../u-circle-progress/circleProgress.js | 15 + .../components/u-circle-progress/props.js | 10 + .../u-circle-progress/u-circle-progress.vue | 200 + .../components/u-code-input/codeInput.js | 29 + .../components/u-code-input/props.js | 90 + .../components/u-code-input/u-code-input.vue | 299 + .../uview-plus/components/u-code/code.js | 21 + .../uview-plus/components/u-code/props.js | 36 + .../uview-plus/components/u-code/u-code.vue | 131 + .../uview-plus/components/u-col/col.js | 19 + .../uview-plus/components/u-col/props.js | 31 + .../uview-plus/components/u-col/u-col.vue | 169 + .../u-collapse-item/collapseItem.js | 31 + .../components/u-collapse-item/props.js | 97 + .../u-collapse-item/u-collapse-item.vue | 243 + .../components/u-collapse/collapse.js | 17 + .../uview-plus/components/u-collapse/props.js | 21 + .../components/u-collapse/u-collapse.vue | 90 + .../u-column-notice/columnNotice.js | 25 + .../components/u-column-notice/props.js | 61 + .../u-column-notice/u-column-notice.vue | 165 + .../uview-plus/components/u-copy/u-copy.vue | 70 + .../components/u-count-down/countDown.js | 18 + .../components/u-count-down/props.js | 26 + .../components/u-count-down/u-count-down.vue | 165 + .../components/u-count-down/utils.js | 62 + .../components/u-count-to/countTo.js | 25 + .../uview-plus/components/u-count-to/props.js | 61 + .../components/u-count-to/u-count-to.vue | 187 + .../u-datetime-picker/datetimePicker.js | 42 + .../components/u-datetime-picker/props.js | 168 + .../u-datetime-picker/u-datetime-picker.vue | 520 + .../components/u-divider/divider.js | 23 + .../uview-plus/components/u-divider/props.js | 46 + .../components/u-divider/u-divider.vue | 120 + .../components/u-dropdown-item/props.js | 47 + .../u-dropdown-item/u-dropdown-item.vue | 120 + .../uview-plus/components/u-dropdown/props.js | 61 + .../components/u-dropdown/u-dropdown.vue | 255 + .../uview-plus/components/u-empty/empty.js | 26 + .../uview-plus/components/u-empty/props.js | 61 + .../uview-plus/components/u-empty/u-empty.vue | 132 + .../u-float-button/u-float-button.vue | 167 + .../components/u-form-item/formItem.js | 24 + .../components/u-form-item/props.js | 55 + .../components/u-form-item/u-form-item.vue | 261 + .../uview-plus/components/u-form/form.js | 22 + .../uview-plus/components/u-form/props.js | 47 + .../uview-plus/components/u-form/u-form.vue | 258 + .../uview-plus/components/u-gap/gap.js | 19 + .../uview-plus/components/u-gap/props.js | 26 + .../uview-plus/components/u-gap/u-gap.vue | 40 + .../components/u-grid-item/gridItem.js | 16 + .../components/u-grid-item/props.js | 16 + .../components/u-grid-item/u-grid-item.vue | 218 + .../uview-plus/components/u-grid/grid.js | 17 + .../uview-plus/components/u-grid/props.js | 26 + .../uview-plus/components/u-grid/u-grid.vue | 113 + .../uview-plus/components/u-icon/icon.js | 36 + .../uview-plus/components/u-icon/icons.js | 214 + .../uview-plus/components/u-icon/props.js | 91 + .../uview-plus/components/u-icon/u-icon.vue | 283 + .../uview-plus/components/u-icon/util.js | 73 + .../uview-plus/components/u-image/image.js | 30 + .../uview-plus/components/u-image/props.js | 86 + .../uview-plus/components/u-image/u-image.vue | 267 + .../components/u-index-anchor/indexAnchor.js | 19 + .../components/u-index-anchor/props.js | 31 + .../u-index-anchor/u-index-anchor.vue | 106 + .../components/u-index-item/props.js | 8 + .../components/u-index-item/u-index-item.vue | 89 + .../components/u-index-list/indexList.js | 20 + .../components/u-index-list/props.js | 36 + .../components/u-index-list/u-index-list.vue | 589 + .../uview-plus/components/u-input/input.js | 48 + .../uview-plus/components/u-input/props.js | 198 + .../uview-plus/components/u-input/u-input.vue | 399 + .../components/u-keyboard/keyboard.js | 30 + .../uview-plus/components/u-keyboard/props.js | 86 + .../components/u-keyboard/u-keyboard.vue | 166 + .../components/u-lazy-load/u-lazy-load.vue | 260 + .../u-line-progress/lineProgress.js | 20 + .../components/u-line-progress/props.js | 35 + .../u-line-progress/u-line-progress.vue | 152 + .../uview-plus/components/u-line/line.js | 20 + .../uview-plus/components/u-line/props.js | 35 + .../uview-plus/components/u-line/u-line.vue | 64 + .../uview-plus/components/u-link/link.js | 26 + .../uview-plus/components/u-link/props.js | 41 + .../uview-plus/components/u-link/u-link.vue | 86 + .../components/u-list-item/listItem.js | 15 + .../components/u-list-item/props.js | 11 + .../components/u-list-item/u-list-item.vue | 118 + .../uview-plus/components/u-list/list.js | 28 + .../uview-plus/components/u-list/props.js | 101 + .../uview-plus/components/u-list/u-list.vue | 182 + .../components/u-loading-icon/loadingIcon.js | 30 + .../components/u-loading-icon/props.js | 61 + .../u-loading-icon/u-loading-icon.vue | 348 + .../components/u-loading-page/loadingPage.js | 24 + .../components/u-loading-page/props.js | 57 + .../u-loading-page/u-loading-page.vue | 121 + .../components/u-loadmore/loadmore.js | 32 + .../uview-plus/components/u-loadmore/props.js | 96 + .../components/u-loadmore/u-loadmore.vue | 154 + .../u-message-input/u-message-input.vue | 318 + .../uview-plus/components/u-modal/modal.js | 35 + .../uview-plus/components/u-modal/props.js | 111 + .../uview-plus/components/u-modal/u-modal.vue | 265 + .../components/u-navbar-mini/props.js | 51 + .../u-navbar-mini/u-navbar-mini.vue | 137 + .../uview-plus/components/u-navbar/navbar.js | 33 + .../uview-plus/components/u-navbar/props.js | 97 + .../components/u-navbar/u-navbar.vue | 200 + .../components/u-no-network/noNetwork.js | 18 + .../components/u-no-network/props.js | 21 + .../components/u-no-network/u-no-network.vue | 222 + .../components/u-notice-bar/noticeBar.js | 28 + .../components/u-notice-bar/props.js | 76 + .../components/u-notice-bar/u-notice-bar.vue | 105 + .../uview-plus/components/u-notify/notify.js | 22 + .../uview-plus/components/u-notify/props.js | 51 + .../components/u-notify/u-notify.vue | 216 + .../components/u-number-box/numberBox.js | 39 + .../components/u-number-box/props.js | 140 + .../components/u-number-box/u-number-box.vue | 478 + .../u-number-keyboard/numberKeyboard.js | 17 + .../components/u-number-keyboard/props.js | 21 + .../u-number-keyboard/u-number-keyboard.vue | 198 + .../components/u-overlay/overlay.js | 18 + .../uview-plus/components/u-overlay/props.js | 26 + .../components/u-overlay/u-overlay.vue | 71 + .../components/u-pagination/u-pagination.vue | 283 + .../components/u-parse/node/node.vue | 598 + .../uview-plus/components/u-parse/parse.js | 22 + .../uview-plus/components/u-parse/parser.js | 1400 ++ .../uview-plus/components/u-parse/props.js | 48 + .../uview-plus/components/u-parse/u-parse.vue | 504 + .../components/u-picker-column/props.js | 7 + .../u-picker-column/u-picker-column.vue | 28 + .../u-picker-data/u-picker-data.vue | 130 + .../uview-plus/components/u-picker/picker.js | 40 + .../uview-plus/components/u-picker/props.js | 147 + .../components/u-picker/u-picker.vue | 472 + .../uview-plus/components/u-popup/popup.js | 29 + .../uview-plus/components/u-popup/props.js | 81 + .../uview-plus/components/u-popup/u-popup.vue | 335 + .../uview-plus/components/u-qrcode/qrcode.js | 1319 ++ .../components/u-qrcode/u-qrcode.vue | 449 + .../components/u-radio-group/props.js | 100 + .../components/u-radio-group/radioGroup.js | 31 + .../u-radio-group/u-radio-group.vue | 136 + .../uview-plus/components/u-radio/props.js | 71 + .../uview-plus/components/u-radio/radio.js | 27 + .../uview-plus/components/u-radio/u-radio.vue | 350 + .../uview-plus/components/u-rate/props.js | 80 + .../uview-plus/components/u-rate/rate.js | 26 + .../uview-plus/components/u-rate/u-rate.vue | 327 + .../components/u-read-more/props.js | 63 + .../components/u-read-more/readMore.js | 22 + .../components/u-read-more/u-read-more.vue | 165 + .../components/u-row-notice/props.js | 41 + .../components/u-row-notice/rowNotice.js | 21 + .../components/u-row-notice/u-row-notice.vue | 336 + .../uview-plus/components/u-row/props.js | 21 + .../uview-plus/components/u-row/row.js | 17 + .../uview-plus/components/u-row/u-row.vue | 96 + .../components/u-safe-bottom/props.js | 7 + .../u-safe-bottom/u-safe-bottom.vue | 59 + .../components/u-scroll-list/nvue.js | 31 + .../components/u-scroll-list/other.js | 0 .../components/u-scroll-list/props.js | 36 + .../components/u-scroll-list/scrollList.js | 20 + .../components/u-scroll-list/scrollWxs.wxs | 50 + .../u-scroll-list/u-scroll-list.vue | 233 + .../uview-plus/components/u-search/props.js | 138 + .../uview-plus/components/u-search/search.js | 38 + .../components/u-search/u-search.vue | 342 + .../components/u-section/section.js | 24 + .../components/u-select/u-select.vue | 218 + .../uview-plus/components/u-skeleton/props.js | 61 + .../components/u-skeleton/skeleton.js | 25 + .../components/u-skeleton/u-skeleton.vue | 248 + .../uview-plus/components/u-slider/mpother.js | 113 + .../uview-plus/components/u-slider/mpwxs.js | 43 + .../uview-plus/components/u-slider/mpwxs.wxs | 121 + .../uview-plus/components/u-slider/nvue.js | 193 + .../uview-plus/components/u-slider/props.js | 91 + .../uview-plus/components/u-slider/slider.js | 27 + .../components/u-slider/u-slider.vue | 506 + .../components/u-status-bar/props.js | 15 + .../components/u-status-bar/statusBar.js | 16 + .../components/u-status-bar/u-status-bar.vue | 63 + .../components/u-steps-item/props.js | 31 + .../components/u-steps-item/stepsItem.js | 18 + .../components/u-steps-item/u-steps-item.vue | 342 + .../uview-plus/components/u-steps/props.js | 41 + .../uview-plus/components/u-steps/steps.js | 21 + .../uview-plus/components/u-steps/u-steps.vue | 94 + .../uview-plus/components/u-sticky/props.js | 42 + .../uview-plus/components/u-sticky/sticky.js | 20 + .../components/u-sticky/u-sticky.vue | 221 + .../components/u-subsection/props.js | 67 + .../components/u-subsection/subsection.js | 26 + .../components/u-subsection/u-subsection.vue | 401 + .../components/u-swipe-action-item/alipay.sjs | 229 + .../u-swipe-action-item/index - backup.wxs | 256 + .../components/u-swipe-action-item/index.wxs | 234 + .../u-swipe-action-item/nvue - backup.js | 270 + .../components/u-swipe-action-item/nvue.js | 174 + .../components/u-swipe-action-item/other.js | 178 + .../components/u-swipe-action-item/props.js | 47 + .../u-swipe-action-item/swipeActionItem.js | 22 + .../u-swipe-action-item.vue | 249 + .../components/u-swipe-action-item/wxs.js | 15 + .../components/u-swipe-action/props.js | 16 + .../components/u-swipe-action/swipeAction.js | 15 + .../u-swipe-action/u-swipe-action.vue | 84 + .../components/u-swiper-indicator/props.js | 31 + .../u-swiper-indicator/swipterIndicator.js | 19 + .../u-swiper-indicator/u-swiper-indicator.vue | 114 + .../uview-plus/components/u-swiper/props.js | 127 + .../uview-plus/components/u-swiper/swiper.js | 39 + .../components/u-swiper/u-swiper.vue | 269 + .../uview-plus/components/u-switch/props.js | 64 + .../uview-plus/components/u-switch/switch.js | 24 + .../components/u-switch/u-switch.vue | 215 + .../components/u-tabbar-item/props.js | 37 + .../components/u-tabbar-item/tabbarItem.js | 20 + .../u-tabbar-item/u-tabbar-item.vue | 157 + .../uview-plus/components/u-tabbar/props.js | 47 + .../uview-plus/components/u-tabbar/tabbar.js | 22 + .../components/u-tabbar/u-tabbar.vue | 144 + .../uview-plus/components/u-table/props.js | 7 + .../uview-plus/components/u-table/u-table.vue | 104 + .../components/u-table2/u-table2.vue | 517 + .../components/u-tabs-item/props.js | 7 + .../components/u-tabs-item/u-tabs-item.vue | 31 + .../uview-plus/components/u-tabs/props.js | 71 + .../uview-plus/components/u-tabs/tabs.js | 33 + .../uview-plus/components/u-tabs/u-tabs.vue | 411 + .../uview-plus/components/u-tag/props.js | 116 + .../uview-plus/components/u-tag/tag.js | 35 + .../uview-plus/components/u-tag/u-tag.vue | 402 + .../uview-plus/components/u-td/props.js | 7 + .../uview-plus/components/u-td/u-td.vue | 98 + .../uview-plus/components/u-text/props.js | 117 + .../uview-plus/components/u-text/text.js | 39 + .../uview-plus/components/u-text/u-text.vue | 234 + .../uview-plus/components/u-text/value.js | 87 + .../uview-plus/components/u-textarea/props.js | 127 + .../components/u-textarea/textarea.js | 36 + .../components/u-textarea/u-textarea.vue | 285 + .../uview-plus/components/u-th/props.js | 7 + .../uview-plus/components/u-th/u-th.vue | 66 + .../uview-plus/components/u-toast/toast.js | 30 + .../uview-plus/components/u-toast/u-toast.vue | 304 + .../uview-plus/components/u-toolbar/props.js | 41 + .../components/u-toolbar/toolbar.js | 21 + .../components/u-toolbar/u-toolbar.vue | 125 + .../uview-plus/components/u-tooltip/props.js | 61 + .../components/u-tooltip/tooltip.js | 25 + .../components/u-tooltip/u-tooltip.vue | 341 + .../uview-plus/components/u-tr/props.js | 7 + .../uview-plus/components/u-tr/u-tr.vue | 34 + .../components/u-transition/nvue-ani-map.js | 68 + .../components/u-transition/props.js | 26 + .../components/u-transition/transition.js | 18 + .../u-transition/transitionMixin.js | 163 + .../components/u-transition/u-transition.vue | 207 + .../u-transition/vue.ani-style.scss | 113 + .../components/u-tree/tree-node.vue | 128 + .../uview-plus/components/u-tree/u-tree.vue | 117 + .../uview-plus/components/u-upload/mixin.js | 23 + .../uview-plus/components/u-upload/props.js | 176 + .../components/u-upload/u-upload.vue | 925 ++ .../uview-plus/components/u-upload/upload.js | 46 + .../uview-plus/components/u-upload/utils.js | 184 + .../uview-plus/components/u-view/u-view.vue | 71 + .../components/u-waterfall/u-waterfall.vue | 244 + .../components/uview-plus/uview-plus.vue | 15 + src/uni_modules/uview-plus/index.js | 151 + src/uni_modules/uview-plus/index.scss | 25 + .../uview-plus/libs/config/color.js | 17 + .../uview-plus/libs/config/config.js | 54 + .../uview-plus/libs/config/props.js | 216 + .../uview-plus/libs/config/zIndex.js | 20 + .../uview-plus/libs/css/color.scss | 311 + .../uview-plus/libs/css/common.scss | 113 + .../uview-plus/libs/css/components.scss | 34 + src/uni_modules/uview-plus/libs/css/flex.scss | 364 + src/uni_modules/uview-plus/libs/css/h5.scss | 0 .../uview-plus/libs/css/mixin.scss | 8 + src/uni_modules/uview-plus/libs/css/mp.scss | 0 src/uni_modules/uview-plus/libs/css/nvue.scss | 0 src/uni_modules/uview-plus/libs/css/vue.scss | 28 + .../uview-plus/libs/function/calc.js | 64 + .../uview-plus/libs/function/colorGradient.js | 134 + .../uview-plus/libs/function/debounce.js | 29 + .../uview-plus/libs/function/digit.js | 167 + .../uview-plus/libs/function/http.js | 4 + .../uview-plus/libs/function/index.js | 853 + .../uview-plus/libs/function/platform.js | 75 + .../uview-plus/libs/function/test.js | 327 + .../uview-plus/libs/function/throttle.js | 30 + .../libs/luch-request/adapters/index.js | 97 + .../luch-request/core/InterceptorManager.js | 50 + .../libs/luch-request/core/Request.js | 199 + .../libs/luch-request/core/buildFullPath.js | 20 + .../libs/luch-request/core/defaults.js | 29 + .../libs/luch-request/core/dispatchRequest.js | 3 + .../libs/luch-request/core/mergeConfig.js | 103 + .../libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + .../uview-plus/libs/luch-request/index.d.ts | 116 + .../uview-plus/libs/luch-request/index.js | 3 + .../uview-plus/libs/luch-request/utils.js | 131 + .../libs/luch-request/utils/clone.js | 264 + .../uview-plus/libs/mixin/button.js | 18 + .../uview-plus/libs/mixin/mixin.js | 201 + .../uview-plus/libs/mixin/mpMixin.js | 13 + .../uview-plus/libs/mixin/mpShare.js | 26 + .../uview-plus/libs/mixin/openType.js | 27 + .../uview-plus/libs/mixin/style.js | 249 + .../uview-plus/libs/mixin/touch.js | 61 + .../uview-plus/libs/util/async-validator.js | 1343 ++ .../uview-plus/libs/util/calendar.js | 546 + .../uview-plus/libs/util/emitter.js | 51 + .../libs/util/gcanvas/bridge/bridge-weex.js | 241 + .../context-2d/FillStyleLinearGradient.js | 18 + .../gcanvas/context-2d/FillStylePattern.js | 8 + .../context-2d/FillStyleRadialGradient.js | 17 + .../gcanvas/context-2d/RenderingContext.js | 666 + .../util/gcanvas/context-webgl/ActiveInfo.js | 11 + .../libs/util/gcanvas/context-webgl/Buffer.js | 21 + .../util/gcanvas/context-webgl/Framebuffer.js | 21 + .../libs/util/gcanvas/context-webgl/GLenum.js | 298 + .../util/gcanvas/context-webgl/GLmethod.js | 142 + .../libs/util/gcanvas/context-webgl/GLtype.js | 23 + .../util/gcanvas/context-webgl/Program.js | 21 + .../gcanvas/context-webgl/Renderbuffer.js | 21 + .../gcanvas/context-webgl/RenderingContext.js | 1191 ++ .../libs/util/gcanvas/context-webgl/Shader.js | 22 + .../context-webgl/ShaderPrecisionFormat.js | 11 + .../util/gcanvas/context-webgl/Texture.js | 22 + .../gcanvas/context-webgl/UniformLocation.js | 22 + .../util/gcanvas/context-webgl/classUtils.js | 3 + .../libs/util/gcanvas/env/canvas.js | 74 + .../uview-plus/libs/util/gcanvas/env/image.js | 96 + .../uview-plus/libs/util/gcanvas/env/tool.js | 24 + .../uview-plus/libs/util/gcanvas/index.js | 39 + src/uni_modules/uview-plus/libs/util/route.js | 124 + src/uni_modules/uview-plus/libs/vue.js | 3 + src/uni_modules/uview-plus/package.json | 113 + src/uni_modules/uview-plus/theme.scss | 44 + src/uni_modules/uview-plus/types/comps.d.ts | 102 + .../uview-plus/types/comps/_common.d.ts | 9 + .../uview-plus/types/comps/actionSheet.d.ts | 121 + .../uview-plus/types/comps/album.d.ts | 82 + .../uview-plus/types/comps/alert.d.ts | 55 + .../uview-plus/types/comps/avatar.d.ts | 85 + .../uview-plus/types/comps/avatarGroup.d.ts | 62 + .../uview-plus/types/comps/backTop.d.ts | 74 + .../uview-plus/types/comps/badge.d.ts | 76 + .../uview-plus/types/comps/button.d.ts | 169 + .../uview-plus/types/comps/calendar.d.ts | 164 + .../uview-plus/types/comps/cell.d.ts | 133 + .../uview-plus/types/comps/cellGroup.d.ts | 27 + .../uview-plus/types/comps/checkbox.d.ts | 69 + .../uview-plus/types/comps/checkboxGroup.d.ts | 93 + .../uview-plus/types/comps/code.d.ts | 69 + .../uview-plus/types/comps/codeInput.d.ts | 98 + .../uview-plus/types/comps/col.d.ts | 43 + .../uview-plus/types/comps/collapse.d.ts | 52 + .../uview-plus/types/comps/collapseItem.d.ts | 83 + .../uview-plus/types/comps/countDown.d.ts | 60 + .../uview-plus/types/comps/countTo.d.ts | 88 + .../types/comps/datetimePicker.d.ts | 146 + .../uview-plus/types/comps/divider.d.ts | 58 + .../uview-plus/types/comps/empty.d.ts | 72 + .../uview-plus/types/comps/form.d.ts | 76 + .../uview-plus/types/comps/formItem.d.ts | 68 + .../uview-plus/types/comps/gap.d.ts | 35 + .../uview-plus/types/comps/grid.d.ts | 34 + .../uview-plus/types/comps/gridItem.d.ts | 28 + .../uview-plus/types/comps/icon.d.ts | 93 + .../uview-plus/types/comps/image.d.ts | 119 + .../uview-plus/types/comps/indexAnchor.d.ts | 38 + .../uview-plus/types/comps/indexItem.d.ts | 18 + .../uview-plus/types/comps/indexList.d.ts | 39 + .../uview-plus/types/comps/input.d.ts | 234 + .../uview-plus/types/comps/keyboard.d.ts | 125 + .../uview-plus/types/comps/line.d.ts | 44 + .../uview-plus/types/comps/lineProgress.d.ts | 51 + .../uview-plus/types/comps/link.d.ts | 51 + .../uview-plus/types/comps/list.d.ts | 92 + .../uview-plus/types/comps/listItem.d.ts | 18 + .../uview-plus/types/comps/loadMore.d.ts | 108 + .../uview-plus/types/comps/loadingIcon.d.ts | 68 + .../uview-plus/types/comps/loadingPage.d.ts | 58 + .../uview-plus/types/comps/modal.d.ts | 115 + .../uview-plus/types/comps/navbar.d.ts | 118 + .../uview-plus/types/comps/noNetwork.d.ts | 40 + .../uview-plus/types/comps/noticeBar.d.ts | 85 + .../uview-plus/types/comps/notify.d.ts | 73 + .../uview-plus/types/comps/numberBox.d.ts | 155 + .../uview-plus/types/comps/overlay.d.ts | 46 + .../uview-plus/types/comps/parse.d.ts | 101 + .../uview-plus/types/comps/picker.d.ts | 115 + .../uview-plus/types/comps/popup.d.ts | 103 + .../uview-plus/types/comps/qrcode.d.ts | 77 + .../uview-plus/types/comps/radio.d.ts | 77 + .../uview-plus/types/comps/radioGroup.d.ts | 97 + .../uview-plus/types/comps/rate.d.ts | 85 + .../uview-plus/types/comps/readMore.d.ts | 80 + .../uview-plus/types/comps/row.d.ts | 34 + .../uview-plus/types/comps/safeBottom.d.ts | 16 + .../uview-plus/types/comps/scrollList.d.ts | 51 + .../uview-plus/types/comps/search.d.ts | 180 + .../uview-plus/types/comps/skeleton.d.ts | 70 + .../uview-plus/types/comps/slider.d.ts | 79 + .../uview-plus/types/comps/statusBar.d.ts | 22 + .../uview-plus/types/comps/steps.d.ts | 48 + .../uview-plus/types/comps/stepsItem.d.ts | 41 + .../uview-plus/types/comps/sticky.d.ts | 48 + .../uview-plus/types/comps/subsection.d.ts | 80 + .../uview-plus/types/comps/swipeAction.d.ts | 24 + .../types/comps/swipeActionItem.d.ts | 58 + .../uview-plus/types/comps/swiper.d.ts | 142 + .../types/comps/swiperIndicator.d.ts | 37 + .../uview-plus/types/comps/switch.d.ts | 73 + .../uview-plus/types/comps/tabbar.d.ts | 54 + .../uview-plus/types/comps/tabbarItem.d.ts | 52 + .../uview-plus/types/comps/tabs.d.ts | 85 + .../uview-plus/types/comps/tag.d.ts | 93 + .../uview-plus/types/comps/text.d.ts | 110 + .../uview-plus/types/comps/textarea.d.ts | 158 + .../uview-plus/types/comps/toast.d.ts | 63 + .../uview-plus/types/comps/tooltip.d.ts | 71 + .../uview-plus/types/comps/transition.d.ts | 61 + .../uview-plus/types/comps/upload.d.ts | 204 + src/uni_modules/uview-plus/types/index.d.ts | 172 + src/uni_modules/uview-plus/types/package.json | 26 + src/utils/auth/index.ts | 15 + src/utils/common/index.ts | 28 + src/utils/index.ts | 5 + src/utils/modals/index.ts | 57 + src/utils/modals/types.ts | 25 + src/utils/request/index.ts | 54 + src/utils/request/interceptors.ts | 163 + src/utils/request/status.ts | 46 + src/utils/request/types.ts | 7 + src/utils/storage/index.ts | 25 + stylelint.config.js | 58 + tsconfig.json | 35 + types/auto-imports.d.ts | 207 + types/components.d.ts | 16 + types/env.d.ts | 22 + types/global.d.ts | 36 + types/i18n.d.ts | 8 + types/module.d.ts | 9 + uno.config.ts | 49 + vite.config.ts | 53 + 612 files changed, 80464 insertions(+), 2 deletions(-) create mode 100644 .editorconfig create mode 100644 .github/workflows/deploy.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/unocss.json create mode 100644 .vscode/vue3.code-snippets create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 build/config/index.ts create mode 100644 build/config/proxy.ts create mode 100644 build/plugins/autoImport.ts create mode 100644 build/plugins/cleanImage.ts create mode 100644 build/plugins/component.ts create mode 100644 build/plugins/index.ts create mode 100644 build/plugins/replaceUrl.ts create mode 100644 build/plugins/unocss.ts create mode 100644 build/plugins/visualizer.ts create mode 100644 cz.config.js create mode 100644 env/.env create mode 100644 env/.env.development create mode 100644 env/.env.production create mode 100644 env/.env.test create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 scripts/post-upgrade.js create mode 100644 scripts/verify-commit.js create mode 100644 src/App.vue create mode 100644 src/api/common/index.ts create mode 100644 src/api/common/types.ts create mode 100644 src/api/index.ts create mode 100644 src/api/user/index.ts create mode 100644 src/api/user/types.ts create mode 100644 src/components/.gitkeep create mode 100644 src/components/agree-privacy/index.vue create mode 100644 src/components/lang-select/index.vue create mode 100644 src/hooks/index.ts create mode 100644 src/hooks/use-clipboard/index.ts create mode 100644 src/hooks/use-loading/index.ts create mode 100644 src/hooks/use-location/index.ts create mode 100644 src/hooks/use-location/types.ts create mode 100644 src/hooks/use-modal/index.ts create mode 100644 src/hooks/use-permission/index.ts create mode 100644 src/hooks/use-share/index.ts create mode 100644 src/hooks/use-share/types.ts create mode 100644 src/locales/index.ts create mode 100644 src/locales/langs/en.ts create mode 100644 src/locales/langs/zh-Hans.ts create mode 100644 src/main.ts create mode 100644 src/manifest.json create mode 100644 src/pages.json create mode 100644 src/pages/common/404/index.vue create mode 100644 src/pages/common/goods/address.vue create mode 100644 src/pages/common/goods/detail.vue create mode 100644 src/pages/common/goods/order copy.vue create mode 100644 src/pages/common/goods/order.vue create mode 100644 src/pages/common/login/index.vue create mode 100644 src/pages/common/webview/index.vue create mode 100644 src/pages/tab/home/index.vue create mode 100644 src/pages/tab/list/index.vue create mode 100644 src/pages/tab/user/index.vue create mode 100644 src/plugins/index.ts create mode 100644 src/plugins/permission.ts create mode 100644 src/plugins/ui.ts create mode 100644 src/router/index.ts create mode 100644 src/static/images/404.png create mode 100644 src/static/images/logo.png create mode 100644 src/static/images/pay.png create mode 100644 src/static/images/tabbar/icon_home.png create mode 100644 src/static/images/tabbar/icon_home_selected.png create mode 100644 src/static/images/tabbar/icon_list.png create mode 100644 src/static/images/tabbar/icon_list_selected.png create mode 100644 src/static/images/tabbar/icon_me.png create mode 100644 src/static/images/tabbar/icon_me_selected.png create mode 100644 src/static/styles/common.scss create mode 100644 src/store/index.ts create mode 100644 src/store/modules/app/index.ts create mode 100644 src/store/modules/app/types.ts create mode 100644 src/store/modules/user/index.ts create mode 100644 src/store/modules/user/types.ts create mode 100644 src/uni.scss create mode 100644 src/uni_modules/uview-plus/LICENSE create mode 100644 src/uni_modules/uview-plus/README.md create mode 100644 src/uni_modules/uview-plus/changelog.md create mode 100644 src/uni_modules/uview-plus/components/u--form/u--form.vue create mode 100644 src/uni_modules/uview-plus/components/u--image/u--image.vue create mode 100644 src/uni_modules/uview-plus/components/u--input/u--input.vue create mode 100644 src/uni_modules/uview-plus/components/u--text/u--text.vue create mode 100644 src/uni_modules/uview-plus/components/u--textarea/u--textarea.vue create mode 100644 src/uni_modules/uview-plus/components/u-action-sheet-data/u-action-sheet-data.vue create mode 100644 src/uni_modules/uview-plus/components/u-action-sheet/actionSheet.js create mode 100644 src/uni_modules/uview-plus/components/u-action-sheet/props.js create mode 100644 src/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue create mode 100644 src/uni_modules/uview-plus/components/u-album/album.js create mode 100644 src/uni_modules/uview-plus/components/u-album/props.js create mode 100644 src/uni_modules/uview-plus/components/u-album/u-album.vue create mode 100644 src/uni_modules/uview-plus/components/u-alert/alert.js create mode 100644 src/uni_modules/uview-plus/components/u-alert/props.js create mode 100644 src/uni_modules/uview-plus/components/u-alert/u-alert.vue create mode 100644 src/uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js create mode 100644 src/uni_modules/uview-plus/components/u-avatar-group/props.js create mode 100644 src/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue create mode 100644 src/uni_modules/uview-plus/components/u-avatar/avatar.js create mode 100644 src/uni_modules/uview-plus/components/u-avatar/props.js create mode 100644 src/uni_modules/uview-plus/components/u-avatar/u-avatar.vue create mode 100644 src/uni_modules/uview-plus/components/u-back-top/backtop.js create mode 100644 src/uni_modules/uview-plus/components/u-back-top/props.js create mode 100644 src/uni_modules/uview-plus/components/u-back-top/u-back-top.vue create mode 100644 src/uni_modules/uview-plus/components/u-badge/badge.js create mode 100644 src/uni_modules/uview-plus/components/u-badge/props.js create mode 100644 src/uni_modules/uview-plus/components/u-badge/u-badge.vue create mode 100644 src/uni_modules/uview-plus/components/u-box/props.js create mode 100644 src/uni_modules/uview-plus/components/u-box/u-box.vue create mode 100644 src/uni_modules/uview-plus/components/u-button/button.js create mode 100644 src/uni_modules/uview-plus/components/u-button/nvue.scss create mode 100644 src/uni_modules/uview-plus/components/u-button/props.js create mode 100644 src/uni_modules/uview-plus/components/u-button/u-button.vue create mode 100644 src/uni_modules/uview-plus/components/u-button/vue.scss create mode 100644 src/uni_modules/uview-plus/components/u-calendar/calendar.js create mode 100644 src/uni_modules/uview-plus/components/u-calendar/header.vue create mode 100644 src/uni_modules/uview-plus/components/u-calendar/month.vue create mode 100644 src/uni_modules/uview-plus/components/u-calendar/props.js create mode 100644 src/uni_modules/uview-plus/components/u-calendar/u-calendar.vue create mode 100644 src/uni_modules/uview-plus/components/u-calendar/util.js create mode 100644 src/uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js create mode 100644 src/uni_modules/uview-plus/components/u-car-keyboard/props.js create mode 100644 src/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 src/uni_modules/uview-plus/components/u-card/card.js create mode 100644 src/uni_modules/uview-plus/components/u-card/props.js create mode 100644 src/uni_modules/uview-plus/components/u-card/u-card.vue create mode 100644 src/uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue create mode 100644 src/uni_modules/uview-plus/components/u-cell-group/cellGroup.js create mode 100644 src/uni_modules/uview-plus/components/u-cell-group/props.js create mode 100644 src/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue create mode 100644 src/uni_modules/uview-plus/components/u-cell/cell.js create mode 100644 src/uni_modules/uview-plus/components/u-cell/props.js create mode 100644 src/uni_modules/uview-plus/components/u-cell/u-cell.vue create mode 100644 src/uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js create mode 100644 src/uni_modules/uview-plus/components/u-checkbox-group/props.js create mode 100644 src/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 src/uni_modules/uview-plus/components/u-checkbox/checkbox.js create mode 100644 src/uni_modules/uview-plus/components/u-checkbox/props.js create mode 100644 src/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue create mode 100644 src/uni_modules/uview-plus/components/u-circle-progress/circleProgress.js create mode 100644 src/uni_modules/uview-plus/components/u-circle-progress/props.js create mode 100644 src/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue create mode 100644 src/uni_modules/uview-plus/components/u-code-input/codeInput.js create mode 100644 src/uni_modules/uview-plus/components/u-code-input/props.js create mode 100644 src/uni_modules/uview-plus/components/u-code-input/u-code-input.vue create mode 100644 src/uni_modules/uview-plus/components/u-code/code.js create mode 100644 src/uni_modules/uview-plus/components/u-code/props.js create mode 100644 src/uni_modules/uview-plus/components/u-code/u-code.vue create mode 100644 src/uni_modules/uview-plus/components/u-col/col.js create mode 100644 src/uni_modules/uview-plus/components/u-col/props.js create mode 100644 src/uni_modules/uview-plus/components/u-col/u-col.vue create mode 100644 src/uni_modules/uview-plus/components/u-collapse-item/collapseItem.js create mode 100644 src/uni_modules/uview-plus/components/u-collapse-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-collapse/collapse.js create mode 100644 src/uni_modules/uview-plus/components/u-collapse/props.js create mode 100644 src/uni_modules/uview-plus/components/u-collapse/u-collapse.vue create mode 100644 src/uni_modules/uview-plus/components/u-column-notice/columnNotice.js create mode 100644 src/uni_modules/uview-plus/components/u-column-notice/props.js create mode 100644 src/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue create mode 100644 src/uni_modules/uview-plus/components/u-copy/u-copy.vue create mode 100644 src/uni_modules/uview-plus/components/u-count-down/countDown.js create mode 100644 src/uni_modules/uview-plus/components/u-count-down/props.js create mode 100644 src/uni_modules/uview-plus/components/u-count-down/u-count-down.vue create mode 100644 src/uni_modules/uview-plus/components/u-count-down/utils.js create mode 100644 src/uni_modules/uview-plus/components/u-count-to/countTo.js create mode 100644 src/uni_modules/uview-plus/components/u-count-to/props.js create mode 100644 src/uni_modules/uview-plus/components/u-count-to/u-count-to.vue create mode 100644 src/uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js create mode 100644 src/uni_modules/uview-plus/components/u-datetime-picker/props.js create mode 100644 src/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue create mode 100644 src/uni_modules/uview-plus/components/u-divider/divider.js create mode 100644 src/uni_modules/uview-plus/components/u-divider/props.js create mode 100644 src/uni_modules/uview-plus/components/u-divider/u-divider.vue create mode 100644 src/uni_modules/uview-plus/components/u-dropdown-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-dropdown/props.js create mode 100644 src/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue create mode 100644 src/uni_modules/uview-plus/components/u-empty/empty.js create mode 100644 src/uni_modules/uview-plus/components/u-empty/props.js create mode 100644 src/uni_modules/uview-plus/components/u-empty/u-empty.vue create mode 100644 src/uni_modules/uview-plus/components/u-float-button/u-float-button.vue create mode 100644 src/uni_modules/uview-plus/components/u-form-item/formItem.js create mode 100644 src/uni_modules/uview-plus/components/u-form-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-form-item/u-form-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-form/form.js create mode 100644 src/uni_modules/uview-plus/components/u-form/props.js create mode 100644 src/uni_modules/uview-plus/components/u-form/u-form.vue create mode 100644 src/uni_modules/uview-plus/components/u-gap/gap.js create mode 100644 src/uni_modules/uview-plus/components/u-gap/props.js create mode 100644 src/uni_modules/uview-plus/components/u-gap/u-gap.vue create mode 100644 src/uni_modules/uview-plus/components/u-grid-item/gridItem.js create mode 100644 src/uni_modules/uview-plus/components/u-grid-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-grid/grid.js create mode 100644 src/uni_modules/uview-plus/components/u-grid/props.js create mode 100644 src/uni_modules/uview-plus/components/u-grid/u-grid.vue create mode 100644 src/uni_modules/uview-plus/components/u-icon/icon.js create mode 100644 src/uni_modules/uview-plus/components/u-icon/icons.js create mode 100644 src/uni_modules/uview-plus/components/u-icon/props.js create mode 100644 src/uni_modules/uview-plus/components/u-icon/u-icon.vue create mode 100644 src/uni_modules/uview-plus/components/u-icon/util.js create mode 100644 src/uni_modules/uview-plus/components/u-image/image.js create mode 100644 src/uni_modules/uview-plus/components/u-image/props.js create mode 100644 src/uni_modules/uview-plus/components/u-image/u-image.vue create mode 100644 src/uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js create mode 100644 src/uni_modules/uview-plus/components/u-index-anchor/props.js create mode 100644 src/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue create mode 100644 src/uni_modules/uview-plus/components/u-index-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-index-item/u-index-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-index-list/indexList.js create mode 100644 src/uni_modules/uview-plus/components/u-index-list/props.js create mode 100644 src/uni_modules/uview-plus/components/u-index-list/u-index-list.vue create mode 100644 src/uni_modules/uview-plus/components/u-input/input.js create mode 100644 src/uni_modules/uview-plus/components/u-input/props.js create mode 100644 src/uni_modules/uview-plus/components/u-input/u-input.vue create mode 100644 src/uni_modules/uview-plus/components/u-keyboard/keyboard.js create mode 100644 src/uni_modules/uview-plus/components/u-keyboard/props.js create mode 100644 src/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue create mode 100644 src/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue create mode 100644 src/uni_modules/uview-plus/components/u-line-progress/lineProgress.js create mode 100644 src/uni_modules/uview-plus/components/u-line-progress/props.js create mode 100644 src/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue create mode 100644 src/uni_modules/uview-plus/components/u-line/line.js create mode 100644 src/uni_modules/uview-plus/components/u-line/props.js create mode 100644 src/uni_modules/uview-plus/components/u-line/u-line.vue create mode 100644 src/uni_modules/uview-plus/components/u-link/link.js create mode 100644 src/uni_modules/uview-plus/components/u-link/props.js create mode 100644 src/uni_modules/uview-plus/components/u-link/u-link.vue create mode 100644 src/uni_modules/uview-plus/components/u-list-item/listItem.js create mode 100644 src/uni_modules/uview-plus/components/u-list-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-list-item/u-list-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-list/list.js create mode 100644 src/uni_modules/uview-plus/components/u-list/props.js create mode 100644 src/uni_modules/uview-plus/components/u-list/u-list.vue create mode 100644 src/uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js create mode 100644 src/uni_modules/uview-plus/components/u-loading-icon/props.js create mode 100644 src/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue create mode 100644 src/uni_modules/uview-plus/components/u-loading-page/loadingPage.js create mode 100644 src/uni_modules/uview-plus/components/u-loading-page/props.js create mode 100644 src/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue create mode 100644 src/uni_modules/uview-plus/components/u-loadmore/loadmore.js create mode 100644 src/uni_modules/uview-plus/components/u-loadmore/props.js create mode 100644 src/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue create mode 100644 src/uni_modules/uview-plus/components/u-message-input/u-message-input.vue create mode 100644 src/uni_modules/uview-plus/components/u-modal/modal.js create mode 100644 src/uni_modules/uview-plus/components/u-modal/props.js create mode 100644 src/uni_modules/uview-plus/components/u-modal/u-modal.vue create mode 100644 src/uni_modules/uview-plus/components/u-navbar-mini/props.js create mode 100644 src/uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue create mode 100644 src/uni_modules/uview-plus/components/u-navbar/navbar.js create mode 100644 src/uni_modules/uview-plus/components/u-navbar/props.js create mode 100644 src/uni_modules/uview-plus/components/u-navbar/u-navbar.vue create mode 100644 src/uni_modules/uview-plus/components/u-no-network/noNetwork.js create mode 100644 src/uni_modules/uview-plus/components/u-no-network/props.js create mode 100644 src/uni_modules/uview-plus/components/u-no-network/u-no-network.vue create mode 100644 src/uni_modules/uview-plus/components/u-notice-bar/noticeBar.js create mode 100644 src/uni_modules/uview-plus/components/u-notice-bar/props.js create mode 100644 src/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue create mode 100644 src/uni_modules/uview-plus/components/u-notify/notify.js create mode 100644 src/uni_modules/uview-plus/components/u-notify/props.js create mode 100644 src/uni_modules/uview-plus/components/u-notify/u-notify.vue create mode 100644 src/uni_modules/uview-plus/components/u-number-box/numberBox.js create mode 100644 src/uni_modules/uview-plus/components/u-number-box/props.js create mode 100644 src/uni_modules/uview-plus/components/u-number-box/u-number-box.vue create mode 100644 src/uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js create mode 100644 src/uni_modules/uview-plus/components/u-number-keyboard/props.js create mode 100644 src/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 src/uni_modules/uview-plus/components/u-overlay/overlay.js create mode 100644 src/uni_modules/uview-plus/components/u-overlay/props.js create mode 100644 src/uni_modules/uview-plus/components/u-overlay/u-overlay.vue create mode 100644 src/uni_modules/uview-plus/components/u-pagination/u-pagination.vue create mode 100644 src/uni_modules/uview-plus/components/u-parse/node/node.vue create mode 100644 src/uni_modules/uview-plus/components/u-parse/parse.js create mode 100644 src/uni_modules/uview-plus/components/u-parse/parser.js create mode 100644 src/uni_modules/uview-plus/components/u-parse/props.js create mode 100644 src/uni_modules/uview-plus/components/u-parse/u-parse.vue create mode 100644 src/uni_modules/uview-plus/components/u-picker-column/props.js create mode 100644 src/uni_modules/uview-plus/components/u-picker-column/u-picker-column.vue create mode 100644 src/uni_modules/uview-plus/components/u-picker-data/u-picker-data.vue create mode 100644 src/uni_modules/uview-plus/components/u-picker/picker.js create mode 100644 src/uni_modules/uview-plus/components/u-picker/props.js create mode 100644 src/uni_modules/uview-plus/components/u-picker/u-picker.vue create mode 100644 src/uni_modules/uview-plus/components/u-popup/popup.js create mode 100644 src/uni_modules/uview-plus/components/u-popup/props.js create mode 100644 src/uni_modules/uview-plus/components/u-popup/u-popup.vue create mode 100644 src/uni_modules/uview-plus/components/u-qrcode/qrcode.js create mode 100644 src/uni_modules/uview-plus/components/u-qrcode/u-qrcode.vue create mode 100644 src/uni_modules/uview-plus/components/u-radio-group/props.js create mode 100644 src/uni_modules/uview-plus/components/u-radio-group/radioGroup.js create mode 100644 src/uni_modules/uview-plus/components/u-radio-group/u-radio-group.vue create mode 100644 src/uni_modules/uview-plus/components/u-radio/props.js create mode 100644 src/uni_modules/uview-plus/components/u-radio/radio.js create mode 100644 src/uni_modules/uview-plus/components/u-radio/u-radio.vue create mode 100644 src/uni_modules/uview-plus/components/u-rate/props.js create mode 100644 src/uni_modules/uview-plus/components/u-rate/rate.js create mode 100644 src/uni_modules/uview-plus/components/u-rate/u-rate.vue create mode 100644 src/uni_modules/uview-plus/components/u-read-more/props.js create mode 100644 src/uni_modules/uview-plus/components/u-read-more/readMore.js create mode 100644 src/uni_modules/uview-plus/components/u-read-more/u-read-more.vue create mode 100644 src/uni_modules/uview-plus/components/u-row-notice/props.js create mode 100644 src/uni_modules/uview-plus/components/u-row-notice/rowNotice.js create mode 100644 src/uni_modules/uview-plus/components/u-row-notice/u-row-notice.vue create mode 100644 src/uni_modules/uview-plus/components/u-row/props.js create mode 100644 src/uni_modules/uview-plus/components/u-row/row.js create mode 100644 src/uni_modules/uview-plus/components/u-row/u-row.vue create mode 100644 src/uni_modules/uview-plus/components/u-safe-bottom/props.js create mode 100644 src/uni_modules/uview-plus/components/u-safe-bottom/u-safe-bottom.vue create mode 100644 src/uni_modules/uview-plus/components/u-scroll-list/nvue.js create mode 100644 src/uni_modules/uview-plus/components/u-scroll-list/other.js create mode 100644 src/uni_modules/uview-plus/components/u-scroll-list/props.js create mode 100644 src/uni_modules/uview-plus/components/u-scroll-list/scrollList.js create mode 100644 src/uni_modules/uview-plus/components/u-scroll-list/scrollWxs.wxs create mode 100644 src/uni_modules/uview-plus/components/u-scroll-list/u-scroll-list.vue create mode 100644 src/uni_modules/uview-plus/components/u-search/props.js create mode 100644 src/uni_modules/uview-plus/components/u-search/search.js create mode 100644 src/uni_modules/uview-plus/components/u-search/u-search.vue create mode 100644 src/uni_modules/uview-plus/components/u-section/section.js create mode 100644 src/uni_modules/uview-plus/components/u-select/u-select.vue create mode 100644 src/uni_modules/uview-plus/components/u-skeleton/props.js create mode 100644 src/uni_modules/uview-plus/components/u-skeleton/skeleton.js create mode 100644 src/uni_modules/uview-plus/components/u-skeleton/u-skeleton.vue create mode 100644 src/uni_modules/uview-plus/components/u-slider/mpother.js create mode 100644 src/uni_modules/uview-plus/components/u-slider/mpwxs.js create mode 100644 src/uni_modules/uview-plus/components/u-slider/mpwxs.wxs create mode 100644 src/uni_modules/uview-plus/components/u-slider/nvue.js create mode 100644 src/uni_modules/uview-plus/components/u-slider/props.js create mode 100644 src/uni_modules/uview-plus/components/u-slider/slider.js create mode 100644 src/uni_modules/uview-plus/components/u-slider/u-slider.vue create mode 100644 src/uni_modules/uview-plus/components/u-status-bar/props.js create mode 100644 src/uni_modules/uview-plus/components/u-status-bar/statusBar.js create mode 100644 src/uni_modules/uview-plus/components/u-status-bar/u-status-bar.vue create mode 100644 src/uni_modules/uview-plus/components/u-steps-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-steps-item/stepsItem.js create mode 100644 src/uni_modules/uview-plus/components/u-steps-item/u-steps-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-steps/props.js create mode 100644 src/uni_modules/uview-plus/components/u-steps/steps.js create mode 100644 src/uni_modules/uview-plus/components/u-steps/u-steps.vue create mode 100644 src/uni_modules/uview-plus/components/u-sticky/props.js create mode 100644 src/uni_modules/uview-plus/components/u-sticky/sticky.js create mode 100644 src/uni_modules/uview-plus/components/u-sticky/u-sticky.vue create mode 100644 src/uni_modules/uview-plus/components/u-subsection/props.js create mode 100644 src/uni_modules/uview-plus/components/u-subsection/subsection.js create mode 100644 src/uni_modules/uview-plus/components/u-subsection/u-subsection.vue create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/alipay.sjs create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/index - backup.wxs create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/index.wxs create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/nvue - backup.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/nvue.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/other.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/swipeActionItem.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/u-swipe-action-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action-item/wxs.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action/props.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action/swipeAction.js create mode 100644 src/uni_modules/uview-plus/components/u-swipe-action/u-swipe-action.vue create mode 100644 src/uni_modules/uview-plus/components/u-swiper-indicator/props.js create mode 100644 src/uni_modules/uview-plus/components/u-swiper-indicator/swipterIndicator.js create mode 100644 src/uni_modules/uview-plus/components/u-swiper-indicator/u-swiper-indicator.vue create mode 100644 src/uni_modules/uview-plus/components/u-swiper/props.js create mode 100644 src/uni_modules/uview-plus/components/u-swiper/swiper.js create mode 100644 src/uni_modules/uview-plus/components/u-swiper/u-swiper.vue create mode 100644 src/uni_modules/uview-plus/components/u-switch/props.js create mode 100644 src/uni_modules/uview-plus/components/u-switch/switch.js create mode 100644 src/uni_modules/uview-plus/components/u-switch/u-switch.vue create mode 100644 src/uni_modules/uview-plus/components/u-tabbar-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-tabbar-item/tabbarItem.js create mode 100644 src/uni_modules/uview-plus/components/u-tabbar-item/u-tabbar-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-tabbar/props.js create mode 100644 src/uni_modules/uview-plus/components/u-tabbar/tabbar.js create mode 100644 src/uni_modules/uview-plus/components/u-tabbar/u-tabbar.vue create mode 100644 src/uni_modules/uview-plus/components/u-table/props.js create mode 100644 src/uni_modules/uview-plus/components/u-table/u-table.vue create mode 100644 src/uni_modules/uview-plus/components/u-table2/u-table2.vue create mode 100644 src/uni_modules/uview-plus/components/u-tabs-item/props.js create mode 100644 src/uni_modules/uview-plus/components/u-tabs-item/u-tabs-item.vue create mode 100644 src/uni_modules/uview-plus/components/u-tabs/props.js create mode 100644 src/uni_modules/uview-plus/components/u-tabs/tabs.js create mode 100644 src/uni_modules/uview-plus/components/u-tabs/u-tabs.vue create mode 100644 src/uni_modules/uview-plus/components/u-tag/props.js create mode 100644 src/uni_modules/uview-plus/components/u-tag/tag.js create mode 100644 src/uni_modules/uview-plus/components/u-tag/u-tag.vue create mode 100644 src/uni_modules/uview-plus/components/u-td/props.js create mode 100644 src/uni_modules/uview-plus/components/u-td/u-td.vue create mode 100644 src/uni_modules/uview-plus/components/u-text/props.js create mode 100644 src/uni_modules/uview-plus/components/u-text/text.js create mode 100644 src/uni_modules/uview-plus/components/u-text/u-text.vue create mode 100644 src/uni_modules/uview-plus/components/u-text/value.js create mode 100644 src/uni_modules/uview-plus/components/u-textarea/props.js create mode 100644 src/uni_modules/uview-plus/components/u-textarea/textarea.js create mode 100644 src/uni_modules/uview-plus/components/u-textarea/u-textarea.vue create mode 100644 src/uni_modules/uview-plus/components/u-th/props.js create mode 100644 src/uni_modules/uview-plus/components/u-th/u-th.vue create mode 100644 src/uni_modules/uview-plus/components/u-toast/toast.js create mode 100644 src/uni_modules/uview-plus/components/u-toast/u-toast.vue create mode 100644 src/uni_modules/uview-plus/components/u-toolbar/props.js create mode 100644 src/uni_modules/uview-plus/components/u-toolbar/toolbar.js create mode 100644 src/uni_modules/uview-plus/components/u-toolbar/u-toolbar.vue create mode 100644 src/uni_modules/uview-plus/components/u-tooltip/props.js create mode 100644 src/uni_modules/uview-plus/components/u-tooltip/tooltip.js create mode 100644 src/uni_modules/uview-plus/components/u-tooltip/u-tooltip.vue create mode 100644 src/uni_modules/uview-plus/components/u-tr/props.js create mode 100644 src/uni_modules/uview-plus/components/u-tr/u-tr.vue create mode 100644 src/uni_modules/uview-plus/components/u-transition/nvue-ani-map.js create mode 100644 src/uni_modules/uview-plus/components/u-transition/props.js create mode 100644 src/uni_modules/uview-plus/components/u-transition/transition.js create mode 100644 src/uni_modules/uview-plus/components/u-transition/transitionMixin.js create mode 100644 src/uni_modules/uview-plus/components/u-transition/u-transition.vue create mode 100644 src/uni_modules/uview-plus/components/u-transition/vue.ani-style.scss create mode 100644 src/uni_modules/uview-plus/components/u-tree/tree-node.vue create mode 100644 src/uni_modules/uview-plus/components/u-tree/u-tree.vue create mode 100644 src/uni_modules/uview-plus/components/u-upload/mixin.js create mode 100644 src/uni_modules/uview-plus/components/u-upload/props.js create mode 100644 src/uni_modules/uview-plus/components/u-upload/u-upload.vue create mode 100644 src/uni_modules/uview-plus/components/u-upload/upload.js create mode 100644 src/uni_modules/uview-plus/components/u-upload/utils.js create mode 100644 src/uni_modules/uview-plus/components/u-view/u-view.vue create mode 100644 src/uni_modules/uview-plus/components/u-waterfall/u-waterfall.vue create mode 100644 src/uni_modules/uview-plus/components/uview-plus/uview-plus.vue create mode 100644 src/uni_modules/uview-plus/index.js create mode 100644 src/uni_modules/uview-plus/index.scss create mode 100644 src/uni_modules/uview-plus/libs/config/color.js create mode 100644 src/uni_modules/uview-plus/libs/config/config.js create mode 100644 src/uni_modules/uview-plus/libs/config/props.js create mode 100644 src/uni_modules/uview-plus/libs/config/zIndex.js create mode 100644 src/uni_modules/uview-plus/libs/css/color.scss create mode 100644 src/uni_modules/uview-plus/libs/css/common.scss create mode 100644 src/uni_modules/uview-plus/libs/css/components.scss create mode 100644 src/uni_modules/uview-plus/libs/css/flex.scss create mode 100644 src/uni_modules/uview-plus/libs/css/h5.scss create mode 100644 src/uni_modules/uview-plus/libs/css/mixin.scss create mode 100644 src/uni_modules/uview-plus/libs/css/mp.scss create mode 100644 src/uni_modules/uview-plus/libs/css/nvue.scss create mode 100644 src/uni_modules/uview-plus/libs/css/vue.scss create mode 100644 src/uni_modules/uview-plus/libs/function/calc.js create mode 100644 src/uni_modules/uview-plus/libs/function/colorGradient.js create mode 100644 src/uni_modules/uview-plus/libs/function/debounce.js create mode 100644 src/uni_modules/uview-plus/libs/function/digit.js create mode 100644 src/uni_modules/uview-plus/libs/function/http.js create mode 100644 src/uni_modules/uview-plus/libs/function/index.js create mode 100644 src/uni_modules/uview-plus/libs/function/platform.js create mode 100644 src/uni_modules/uview-plus/libs/function/test.js create mode 100644 src/uni_modules/uview-plus/libs/function/throttle.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/adapters/index.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/core/InterceptorManager.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/core/Request.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/core/buildFullPath.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/core/defaults.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/core/dispatchRequest.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/core/mergeConfig.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/core/settle.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/helpers/buildURL.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/helpers/combineURLs.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/index.d.ts create mode 100644 src/uni_modules/uview-plus/libs/luch-request/index.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/utils.js create mode 100644 src/uni_modules/uview-plus/libs/luch-request/utils/clone.js create mode 100644 src/uni_modules/uview-plus/libs/mixin/button.js create mode 100644 src/uni_modules/uview-plus/libs/mixin/mixin.js create mode 100644 src/uni_modules/uview-plus/libs/mixin/mpMixin.js create mode 100644 src/uni_modules/uview-plus/libs/mixin/mpShare.js create mode 100644 src/uni_modules/uview-plus/libs/mixin/openType.js create mode 100644 src/uni_modules/uview-plus/libs/mixin/style.js create mode 100644 src/uni_modules/uview-plus/libs/mixin/touch.js create mode 100644 src/uni_modules/uview-plus/libs/util/async-validator.js create mode 100644 src/uni_modules/uview-plus/libs/util/calendar.js create mode 100644 src/uni_modules/uview-plus/libs/util/emitter.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/bridge/bridge-weex.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-2d/FillStyleLinearGradient.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-2d/FillStylePattern.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-2d/FillStyleRadialGradient.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-2d/RenderingContext.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/ActiveInfo.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Buffer.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Framebuffer.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/GLenum.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/GLmethod.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/GLtype.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Program.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Renderbuffer.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/RenderingContext.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Shader.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/ShaderPrecisionFormat.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Texture.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/UniformLocation.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/context-webgl/classUtils.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/env/canvas.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/env/image.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/env/tool.js create mode 100644 src/uni_modules/uview-plus/libs/util/gcanvas/index.js create mode 100644 src/uni_modules/uview-plus/libs/util/route.js create mode 100644 src/uni_modules/uview-plus/libs/vue.js create mode 100644 src/uni_modules/uview-plus/package.json create mode 100644 src/uni_modules/uview-plus/theme.scss create mode 100644 src/uni_modules/uview-plus/types/comps.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/_common.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/actionSheet.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/album.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/alert.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/avatar.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/avatarGroup.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/backTop.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/badge.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/button.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/calendar.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/cell.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/cellGroup.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/checkbox.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/checkboxGroup.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/code.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/codeInput.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/col.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/collapse.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/collapseItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/countDown.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/countTo.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/datetimePicker.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/divider.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/empty.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/form.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/formItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/gap.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/grid.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/gridItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/icon.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/image.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/indexAnchor.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/indexItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/indexList.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/input.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/keyboard.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/line.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/lineProgress.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/link.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/list.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/listItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/loadMore.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/loadingIcon.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/loadingPage.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/modal.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/navbar.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/noNetwork.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/noticeBar.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/notify.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/numberBox.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/overlay.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/parse.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/picker.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/popup.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/qrcode.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/radio.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/radioGroup.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/rate.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/readMore.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/row.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/safeBottom.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/scrollList.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/search.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/skeleton.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/slider.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/statusBar.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/steps.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/stepsItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/sticky.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/subsection.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/swipeAction.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/swipeActionItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/swiper.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/swiperIndicator.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/switch.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/tabbar.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/tabbarItem.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/tabs.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/tag.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/text.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/textarea.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/toast.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/tooltip.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/transition.d.ts create mode 100644 src/uni_modules/uview-plus/types/comps/upload.d.ts create mode 100644 src/uni_modules/uview-plus/types/index.d.ts create mode 100644 src/uni_modules/uview-plus/types/package.json create mode 100644 src/utils/auth/index.ts create mode 100644 src/utils/common/index.ts create mode 100644 src/utils/index.ts create mode 100644 src/utils/modals/index.ts create mode 100644 src/utils/modals/types.ts create mode 100644 src/utils/request/index.ts create mode 100644 src/utils/request/interceptors.ts create mode 100644 src/utils/request/status.ts create mode 100644 src/utils/request/types.ts create mode 100644 src/utils/storage/index.ts create mode 100644 stylelint.config.js create mode 100644 tsconfig.json create mode 100644 types/auto-imports.d.ts create mode 100644 types/components.d.ts create mode 100644 types/env.d.ts create mode 100644 types/global.d.ts create mode 100644 types/i18n.d.ts create mode 100644 types/module.d.ts create mode 100644 uno.config.ts create mode 100644 vite.config.ts diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7034f9b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,22 @@ +# 告诉EditorConfig插件,这是根文件,不用继续往上查找 +root = true + +# 匹配全部文件 +[*] +# 设置字符集 +charset = utf-8 +# 缩进风格,可选space、tab +indent_style = space +# 缩进的空格数 +indent_size = 2 +# 结尾换行符,可选lf、cr、crlf +end_of_line = lf +# 在文件结尾插入新行 +insert_final_newline = true +# 删除一行中的前后空格 +trim_trailing_whitespace = true + +# 匹配md结尾的文件 +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..991273e --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,38 @@ +name: deploy + +on: + push: + branches: [main] # master 分支有 push 时触发 + paths-ignore: # 下列文件的变更不触发部署,可以自行添加 + - README.md + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: 检出代码 + uses: actions/checkout@v4 + + - name: 安装pnpm + uses: pnpm/action-setup@v4 + with: + version: 8 + + - name: Node环境 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: 安装构建 + run: | + pnpm install + pnpm build:h5 + + # 部署到 GitHub pages + - name: 部署 + uses: peaceiris/actions-gh-pages@v4 # 使用部署到 GitHub pages 的 action + with: + github_token: ${{ secrets.GITHUB_TOKEN }} # secret 名 + commit_message: 自动部署 # 部署时的 git 提交信息,自由填写 + publish_dir: ./dist/build/h5 # 部署打包后的 dist 目录 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d804b5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +*.local + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +#user +.hbuilderx +unpackage +/stats.html +# pnpm-lock.yaml +yarn.lock +package-lock.json diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b407e2c --- /dev/null +++ b/.npmrc @@ -0,0 +1,12 @@ +# 设置npm包的下载源为国内镜像,加速包下载 +registry=https://registry.npmmirror.com/ +# 将依赖包提升到node_modules根目录,减少嵌套层级 +shamefully-hoist=true +# 关闭严格的对等依赖检查,避免因对等依赖版本不匹配而安装失败 +strict-peer-dependencies=false +# 自动安装对等依赖,无需手动安装 +auto-install-peers=true +# 对等依赖去重,减少重复安装 +dedupe-peer-dependents=true +# 使用提升模式链接依赖,与npm兼容性更好 +node-linker=hoisted diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..c343105 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,21 @@ +{ + /* + 推荐扩展。 + 一键安装方式: + 1.点击左侧的扩展图标 + 2. 点击筛选扩展器图标 + 3.点击工作区推荐右侧的下载图标一键安装 + */ + "recommendations": [ + // "antfu.vite", // 在编辑器内预览/调试您的应用程序 + // "antfu.iconify", // hover 内联显示相应的图标 + "antfu.unocss", // 一款零配置的 CSS 框架 + "vue.volar", // Vue 3 的开发必备扩展 + "dbaeumer.vscode-eslint", // ESLint 支持 + // "editorConfig.editorConfig", // EditorConfig 支持 + // "uni-helper.uni-highlight-vscode", // 对条件编译的代码注释部分提供了语法提示、高亮、折叠 + // "uni-helper.uni-app-snippets-vscode" // uni-app 基本能力代码片段。 + // "uni-helper.uni-ui-snippets-vscode" // uni-ui 基本能力代码片段 + // "uni-helper.uni-helper-vscode" // Uni Helper 扩展包集合 + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9ddfd4f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,36 @@ +{ + // 禁用 prettier,使用 eslint 的代码格式化 + "prettier.enable": false, + // 保存时自动格式化 + "editor.formatOnSave": false, + // 保存时自动修复 + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "jsonc", + "yaml" + ], + // 消除json文件中的注释警告 + "files.associations": { + "manifest.json": "jsonc", + "pages.json": "jsonc" + }, + // 消除Unknown at rule @apply警告 + "css.customData": [ + ".vscode/unocss.json" + ], + "i18n-ally.localesPaths": [ + "src/locales", + "src/locales/langs" + ] +} diff --git a/.vscode/unocss.json b/.vscode/unocss.json new file mode 100644 index 0000000..ef5679c --- /dev/null +++ b/.vscode/unocss.json @@ -0,0 +1,11 @@ +{ + "version": 1.1, + "atDirectives": [ + { + "name": "@apply" + }, + { + "name": "@screen" + } + ] +} diff --git a/.vscode/vue3.code-snippets b/.vscode/vue3.code-snippets new file mode 100644 index 0000000..907205e --- /dev/null +++ b/.vscode/vue3.code-snippets @@ -0,0 +1,48 @@ +{ + // Place your 工作区 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + "Print Vue3 SFC": { + "scope": "vue", + "prefix": "v3", + "body": [ + "\n", + "\n", + "\n", + ], + }, + "Print style": { + "scope": "vue", + "prefix": "st", + "body": ["\n"], + }, + "Print script": { + "scope": "vue", + "prefix": "sc", + "body": ["\n"], + }, + "Print template": { + "scope": "vue", + "prefix": "te", + "body": ["\n"], + }, +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..4226a62 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,67 @@ +# 贡献指南 + +感谢你对本项目的兴趣!我们欢迎任何形式的贡献,无论是报告 bug、提交功能请求、改进文档,还是直接提交代码。为了使贡献过程更加顺利,请按照以下指南进行操作。 + +## 如何开始 + +1. **Fork 项目**:首先将项目 `Fork` 到你的 `GitHub` 账户。 +2. **克隆到本地**:将你 `Fork` 后的仓库克隆到本地。 + ```bash + git clone https://github.com/你的用户名/uniapp-vue3-template.git + ``` +3. **创建分支**:在进行任何修改之前,先创建一个新的分支。 + ```bash + git checkout -b feature/your-feature-name + ``` +4. **进行修改**:根据你的需求进行代码修改或文档编辑。 +5. **提交更改**:完成修改后,使用以下命令提交更改: + ```bash + pnpm cz + ``` +6. **推送分支**:将你的分支推送到 GitHub。 + ```bash + git push origin feature/your-feature-name + ``` +7. **创建 Pull Request**:在 `GitHub` 上,提交你的 `Pull Request`,描述清楚你所做的更改。 + +## 提交代码规范 + +- **代码格式**:只要你安装了依赖项,就不用担心代码风格。`Git` 钩子会在提交时为你格式化和修复它们。 +- **简洁明了的提交信息**:提交信息应简明扼要,说明改动的目的和内容。建议使用以下格式: + ``` + [类型]:简要说明 + ``` + 例如: + ``` + feat: 添加新功能 + fix: 修复 bug + docs: 更新文档 + style: 格式调整 + refactor: 代码重构 + test: 添加/修改测试 + ``` + +## 贡献前请注意 + +- **讨论功能请求**:在提交功能请求之前,确保这个功能是项目当前的方向。 +- **修复 bug**:在修复 `bug` 之前,先检查现有的 `issue` 列表,看看是否有人已经报告了相同的问题。 +- **文档改进**:欢迎任何形式的文档改进。文档有时会被遗漏,但它对于项目的可用性至关重要。 + +## 测试 + +在提交 `Pull Request` 之前,请确保测试成功通过。如果有修改涉及到核心功能,请确保你的改动不会破坏现有的功能。 + +## 行为规范 + +希望在这个项目中创建一个友好和包容的社区。请遵循以下行为准则: + +- 尊重他人,避免人身攻击、歧视或骚扰。 +- 提供有建设性的反馈,不论是代码还是讨论。 +- 对不同的观点保持开放的态度,愿意倾听他人的建议。 + +## 相关文档 + +- [项目主页](https://github.com/oyjt/uniapp-vue3-template) +- [问题追踪](https://github.com/oyjt/uniapp-vue3-template/issues) + +感谢你的贡献!期待与你的合作! diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9eec64d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 江阳小道 + +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. diff --git a/README.md b/README.md index 10b06de..3d81106 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,327 @@ -# caipu_nui +# uniapp 团队协作开发实践模板(Vue3) -菜谱小程序 \ No newline at end of file +[![GitHub Repo stars](https://img.shields.io/github/stars/oyjt/uniapp-vue3-template?style=flat&logo=github)](https://github.com/oyjt/uniapp-vue3-template) +[![GitHub forks](https://img.shields.io/github/forks/oyjt/uniapp-vue3-template?style=flat&logo=github)](https://github.com/oyjt/uniapp-vue3-template) +[![node version](https://img.shields.io/badge/node-%3E%3D18-green)](https://github.com/oyjt/uniapp-vue3-template) +[![pnpm version](https://img.shields.io/badge/pnpm-%3E%3D8-green)](https://github.com/oyjt/uniapp-vue3-template) +[![GitHub package.json version (subfolder of monorepo)](https://img.shields.io/github/package-json/v/oyjt/uniapp-vue3-template)](https://github.com/oyjt/uniapp-vue3-template) +[![GitHub License](https://img.shields.io/github/license/oyjt/uniapp-vue3-template)](https://github.com/oyjt/uniapp-vue3-template) + + +使用uniapp+vite+vue3+typescript+uview-plus+unocss 搭建的适合团队协作的快速开发模版 + +[uview-plus官方文档](https://uiadmin.net/uview-plus/) + +本项目集众多项目的优点,打造最适合团队协作开发的项目模板。 + +在线预览地址:[https://oyjt.github.io/uniapp-vue3-template/](https://oyjt.github.io/uniapp-vue3-template/) + +### 特性 + +- [x] 集成`uview-plus3.0 ui`库 +- [x] 支持多环境打包构建 +- [x] 使用`pinia`状态管理 +- [x] 封装网络请求,并支持`Typescript` +- [x] 支持路径别名 +- [x] 支持自动加载组件和`API` +- [x] 自动校验`git`提交代码格式 +- [x] 集成`ESLint`、`StyleLint`、`EditorConfig`代码格式规范 +- [x] `Typescript`支持 +- [x] 集成`UnoCSS` +- [x] 集成`iconify`图标库 +- [x] 集成`z-paging`下拉刷新功能 +- [x] 添加页面跳转拦截,登录权限校验 +- [x] 支持`token`无感刷新 +- [x] 项目分包 +- [x] 集成小程序隐私协议授权组件 +- [x] 项目构建自动删除本地图片并替换本地图片路径为线上图片 +- [x] 集成包体积视图分析插件 +- [x] 支持国际化 +- [x] 集成`alova`网络请求(具体使用请切换到 [feature/alova](https://github.com/oyjt/uniapp-vue3-template/tree/feature/alova) 分支) +- [x] 集成`axios`网络请求(具体使用请切换到 [feature/axios](https://github.com/oyjt/uniapp-vue3-template/tree/feature/axios) 分支) +- [x] 支持新的`wot-design-uni`库(具体使用请切换到[feature/wot-design-uni](https://github.com/oyjt/uniapp-vue3-template/tree/feature/wot-design-uni)分支),[wot-design-uni官方文档](https://wot-design-uni.cn/) + +### uniapp插件推荐 +- [uniapp 插件精选(https://github.com/oyjt/awesome-uniapp)](https://github.com/oyjt/awesome-uniapp) + +### 目录结构 +项目中采用目前最新的技术方案来实现,目录结构清晰。 +``` +uniapp-vue3-project +├ build vite配置统一管理 +│ ├ config +│ └ plugins +├ env 环境变量 +├ scripts 一些脚本 +│ ├ post-upgrade.js 依赖库清理 +│ └ verify-commit.js git提交检验 +├ src +│ ├ api 接口管理 +│ ├ components 公共组件 +│ ├ hooks 常用hooks封装 +│ ├ locale 国际化语言管理 +│ ├ pages 页面管理 +│ ├ plugins 插件管理 +│ ├ router 路由管理 +│ ├ static 静态资源 +│ ├ store 状态管理 +│ ├ utils 一些工具 +│ ├ App.vue +│ ├ main.ts +│ ├ manifest.json 项目配置 +│ ├ pages.json 页面配置 +│ └ uni.scss 全局scss变量 +├ types 全局typescript类型文件 +│ ├ auto-imports.d.ts +│ ├ components.d.ts +│ ├ global.d.ts +│ └ module.d.ts +├ LICENSE +├ README.md +├ cz.config.js cz-git配置 +├ eslint.config.js eslint配置 +├ index.html +├ package.json +├ pnpm-lock.yaml +├ stylelint.config.js stylelint配置 +├ tsconfig.json +├ uno.config.ts unocss配置 +└ vite.config.ts vite配置 +``` + +#### vite插件管理 +``` +build +├ config vite配置 +│ ├ index.ts 入口文件 +│ └ proxy.ts 跨域代理配置 +└ plugins vite插件 + ├ autoImport.ts 自动导入api + ├ cleanImage.ts 自动清理图片文件 + ├ component.ts 自动导入组件 + ├ index.ts 入口文件 + ├ replaceUrl.ts 自动替换图片地址为CDN地址 + ├ unocss.ts unocss配置 + └ visualizer.ts 包体积视图分析 + +``` + +#### 接口管理 +``` +api +├ common 通用api +│ ├ index.ts +│ └ types.ts +├ user 用户相关api +│ ├ index.ts +│ └ types.ts +└ index.ts 入口文件 +``` + +#### hooks管理 +``` +hooks +├ use-clipboard 剪切板 +│ └ index.ts +├ use-loading loading +│ └ index.ts +├ use-modal 模态框 +│ └ index.ts +├ use-permission 校验权限 +│ └ index.ts +├ use-share 分享 +│ └ index.ts +└ index.ts 入口文件 +``` + +### 页面管理 +``` +pages +├ common 公共页面(分包common) +│ ├ login +│ │ └ index.vue +│ └ webview +│ └ index.vue +└ tab 主页面(主包) + ├ home + │ └ index.vue + ├ list + │ └ index.vue + └ user + └ index.vue +``` + +#### 状态管理 +``` +store +├ modules +│ ├ app app状态 +│ │ ├ index.ts +│ │ └ types.ts +│ └ user 用户状态 +│ ├ index.ts +│ └ types.ts +└ index.ts 入口文件 +``` + +### 工具方法 +``` +utils +├ auth token相关方法 +│ └ index.ts +├ common 通用方法 +│ └ index.ts +├ modals 弹窗相关方法 +│ └ index.ts +├ request 网络请求相关方法 +│ ├ index.ts +│ ├ interceptors.ts +│ ├ status.ts +│ └ types.ts +└ index.ts 入口文件 +``` + +### 使用方法 + +```bash +# 安装依赖 +pnpm install + +# 启动H5 +pnpm dev:h5 + +# 启动微信小程序 +pnpm dev:mp-weixin +``` + +### 发布 + +```bash +# 构建开发环境 +pnpm build:h5 +pnpm build:mp-weixin + +# 构建测试环境 +pnpm build:h5-test +pnpm build:mp-weixin-test + +# 构建生产环境 +pnpm build:h5-prod +pnpm build:mp-weixin-prod +``` + +### 代码提交 +```bash +pnpm cz +``` + +### 更新uniapp版本 + +更新uniapp相关依赖到最新正式版 +```bash +npx @dcloudio/uvm@latest +``` +或者执行下面的命令 +```bash +pnpm uvm +``` + +在升级完后,会自动添加很多无用依赖,执行下面的代码减小保体积 +``` +pnpm uvm-rm +``` + +### `v3` 代码块 +在 `vue` 文件中,输入 `v3` 按 `tab` 即可快速生成页面模板,可以大大加快页面生成。 +> 原理:基于 VSCode 代码块生成。 + +### 登录鉴权 +1. 页面如果需要登录才能访问,只需在 `pages.json` 文件中需要鉴权的页面下设置 `needLogin` 属性设置为 `true` 即可,比如 +``` +{ + "pages": [ + { + "path": "pages/test/test", + "needLogin": true, + "style": { + "navigationBarTitleText": "", + }, + } + ] +} +``` + +2. 如果有`tab`页面需要登录才能访问,上面的设置在小程序中点击`tabbar`时无效,因为在小程序中点击tabbar不会触发`uni.switchTab`方法,下面是官方给出的回复及解决方案。 + +> 拦截uni.switchTab本身没有问题。但是在微信小程序端点击tabbar的底层逻辑并不是触发uni.switchTab。所以误认为拦截无效,此类场景的解决方案是在tabbar页面的页面生命周期onShow中处理。 + +可参考`pages/tab/user/index.vue`中的代码,核心代码如下: +``` + +``` + +### 注意事项 +1. 微信小程序开发者工具中内置的打包分析不准确,本项目使用了`rollup-plugin-visualizer`来分析小程序包体积,默认不开启,有需要的移除相关注释即可 +2. 自动构建处理本地图片资源,使用了`vite-plugin-clean-build`和`vite-plugin-replace-image-url`这两个插件,默认不开启相关功能,如果需要使用再`build/vite/plugins/index.ts`文件中移除相关注释即可 +3. 使用`vite-plugin-replace-image-url`插件,想要图片自动替换生效,需要在项目中使用绝对路径引入图片资源,如下示例所示。 + + 示例一:style中的图片使用 + ``` + + + ``` + + 示例二:js中的图片使用 + + ``` + + ``` + + 示例二:css中的图片使用 + ``` + + ``` + +4. 部分用户构建微信小程序如下错误,原因是微信开发者工具缺失了对应的依赖。 +``` +This @babel/plugin-proposal-private-property-in-object version is not meant to +be imported. +``` +此时升级微信开发者工具,或者安装`@babel/plugin-proposal-private-property-in-object`依赖即可解决问题。 + +### 捐赠 + +如果你觉得这个项目对你有帮助,你可以请作者喝饮料🍹 + +

+微信收款码 +

diff --git a/build/config/index.ts b/build/config/index.ts new file mode 100644 index 0000000..9bcd868 --- /dev/null +++ b/build/config/index.ts @@ -0,0 +1 @@ +export * from './proxy'; diff --git a/build/config/proxy.ts b/build/config/proxy.ts new file mode 100644 index 0000000..01575b5 --- /dev/null +++ b/build/config/proxy.ts @@ -0,0 +1,17 @@ +import type { ProxyOptions } from 'vite'; + +type ProxyTargetList = Record; + +export const createViteProxy = (env: Record) => { + const { VITE_APP_PROXY, VITE_API_PREFIX, VITE_API_BASE_URL } = env; + // 不使用代理直接返回 + if (!JSON.parse(VITE_APP_PROXY)) return undefined; + const proxy: ProxyTargetList = { + [VITE_API_PREFIX]: { + target: VITE_API_BASE_URL, + changeOrigin: true, + rewrite: path => path.replace(new RegExp(`^${VITE_API_PREFIX}`), ''), + }, + }; + return proxy; +}; diff --git a/build/plugins/autoImport.ts b/build/plugins/autoImport.ts new file mode 100644 index 0000000..d340c6c --- /dev/null +++ b/build/plugins/autoImport.ts @@ -0,0 +1,13 @@ +/** + * @name AutoImportDeps + * @description 按需加载,自动引入 + */ +import AutoImport from 'unplugin-auto-import/vite'; + +export const AutoImportDeps = () => { + return AutoImport({ + imports: ['vue', 'uni-app', 'pinia'], + dts: 'types/auto-imports.d.ts', + vueTemplate: true, + }); +}; diff --git a/build/plugins/cleanImage.ts b/build/plugins/cleanImage.ts new file mode 100644 index 0000000..d4663cb --- /dev/null +++ b/build/plugins/cleanImage.ts @@ -0,0 +1,12 @@ +/** + * @name cleanImagePlugin + * @description 清除构建后的图片资源 + */ +import CleanBuild from 'vite-plugin-clean-build'; + +export const CleanImagePlugin = () => { + return CleanBuild({ + outputDir: 'dist/build/mp-weixin', + patterns: ['static/images/**', '!static/images/logo.png', '!static/images/tabbar/**'], + }); +}; diff --git a/build/plugins/component.ts b/build/plugins/component.ts new file mode 100644 index 0000000..51719f3 --- /dev/null +++ b/build/plugins/component.ts @@ -0,0 +1,11 @@ +/** + * @name AutoRegistryComponents + * @description 按需加载,自动引入 + */ +import Components from 'unplugin-vue-components/vite'; + +export const AutoRegistryComponents = () => { + return Components({ + dts: 'types/components.d.ts', + }); +}; diff --git a/build/plugins/index.ts b/build/plugins/index.ts new file mode 100644 index 0000000..e17b4f8 --- /dev/null +++ b/build/plugins/index.ts @@ -0,0 +1,43 @@ +/** + * @name createVitePlugins + * @description 封装plugins数组统一调用 + */ +import type { PluginOption } from 'vite'; +import uniPlugin from '@dcloudio/vite-plugin-uni'; +import ViteRestart from 'vite-plugin-restart'; +import { AutoImportDeps } from './autoImport'; +// import { ConfigImageminPlugin } from './imagemin'; +// import { ReplaceUrlPlugin } from './replaceUrl'; +import { AutoRegistryComponents } from './component'; +import { ConfigUnoCSSPlugin } from './unocss'; + +export default function createVitePlugins(isBuild: boolean) { + const vitePlugins: (PluginOption | PluginOption[])[] = [ + // UnoCSS配置 + ConfigUnoCSSPlugin(), + // 自动按需引入依赖 + AutoImportDeps(), + // 自动按需引入组件(注意:需注册至 uni 之前,否则不会生效) + AutoRegistryComponents(), + // uni支持(兼容性写法,当type为module时,必须要这样写) + (uniPlugin as any).default(), + ViteRestart({ + // 通过这个插件,在修改vite.config.js文件则不需要重新运行也生效配置 + restart: ['vite.config.ts'], + }), + ]; + + if (isBuild) { + const buildPlugins: (PluginOption | PluginOption[])[] = [ + // 图片资源自动转换为网络资源 + // ReplaceUrlPlugin(), + // 自动清除本地图片 + // CleanImagePlugin(), + // 打包视图分析 + // VisualizerPlugin(), + ]; + vitePlugins.push(...buildPlugins); + } + + return vitePlugins; +} diff --git a/build/plugins/replaceUrl.ts b/build/plugins/replaceUrl.ts new file mode 100644 index 0000000..a700468 --- /dev/null +++ b/build/plugins/replaceUrl.ts @@ -0,0 +1,13 @@ +/** + * @name ReplaceImageUrl + * @description 替换图片地址 + */ +import replaceImageUrl from 'vite-plugin-replace-image-url'; + +export const ReplaceUrlPlugin = () => { + return replaceImageUrl({ + publicPath: 'https://photo.example.com/miniprogram', + sourceDir: 'src/static', + verbose: true, + }); +}; diff --git a/build/plugins/unocss.ts b/build/plugins/unocss.ts new file mode 100644 index 0000000..5cbc196 --- /dev/null +++ b/build/plugins/unocss.ts @@ -0,0 +1,9 @@ +/** + * @name ConfigUnoCSSPlugin + * @description UnoCSS相关配置 + */ +import UnoCSS from 'unocss/vite'; + +export const ConfigUnoCSSPlugin = () => { + return UnoCSS(); +}; diff --git a/build/plugins/visualizer.ts b/build/plugins/visualizer.ts new file mode 100644 index 0000000..8621749 --- /dev/null +++ b/build/plugins/visualizer.ts @@ -0,0 +1,13 @@ +/** + * @name VisualizerPlugin + * @description 打包视图分析 + */ +import { visualizer } from 'rollup-plugin-visualizer'; + +export const VisualizerPlugin = () => { + return visualizer({ + emitFile: false, + filename: 'stats.html', // 分析图生成的文件名 + open: true, // 如果存在本地服务端口,将在打包后自动展示 + }); +}; diff --git a/cz.config.js b/cz.config.js new file mode 100644 index 0000000..66abc46 --- /dev/null +++ b/cz.config.js @@ -0,0 +1,58 @@ +/** @type {import('cz-git').CommitizenGitOptions} */ +export default { + alias: { fd: 'docs: fix typos' }, + messages: { + type: '选择你要提交的类型 :', + scope: '选择一个提交范围(可选):', + customScope: '请输入自定义的提交范围 :', + subject: '填写简短精炼的变更描述 :\n', + body: '填写更加详细的变更描述(可选)。使用 \'|\' 换行 :\n', + breaking: '列举非兼容性重大的变更(可选)。使用 \'|\' 换行 :\n', + footerPrefixesSelect: '选择关联issue前缀(可选):', + customFooterPrefix: '输入自定义issue前缀 :', + footer: '列举关联issue (可选) 例如: #31, #I3244 :\n', + confirmCommit: '是否提交或修改commit ?', + }, + types: [ + { value: 'feat', name: 'feat: 新增功能 | A new feature', emoji: ':sparkles:' }, + { value: 'fix', name: 'fix: 修复缺陷 | A bug fix', emoji: ':bug:' }, + { value: 'docs', name: 'docs: 文档更新 | Documentation only changes', emoji: ':memo:' }, + { value: 'style', name: 'style: 代码格式 | Changes that do not affect the meaning of the code', emoji: ':lipstick:' }, + { value: 'refactor', name: 'refactor: 代码重构 | A code change that neither fixes a bug nor adds a feature', emoji: ':recycle:' }, + { value: 'perf', name: 'perf: 性能提升 | A code change that improves performance', emoji: ':zap:' }, + { value: 'test', name: 'test: 测试相关 | Adding missing tests or correcting existing tests', emoji: ':white_check_mark:' }, + { value: 'build', name: 'build: 构建相关 | Changes that affect the build system or external dependencies', emoji: ':package:' }, + { value: 'ci', name: 'ci: 持续集成 | Changes to our CI configuration files and scripts', emoji: ':ferris_wheel:' }, + { value: 'chore', name: 'chore: 其他修改 | Other changes that don\'t modify src or test files', emoji: ':hammer:' }, + { value: 'revert', name: 'revert: 回退代码 | Reverts a previous commit', emoji: ':rewind:' }, + ], + useEmoji: false, + emojiAlign: 'center', + useAI: false, + aiNumber: 1, + themeColorCode: '', + scopes: [], + allowCustomScopes: true, + allowEmptyScopes: true, + customScopesAlign: 'bottom', + customScopesAlias: 'custom', + emptyScopesAlias: 'empty', + upperCaseSubject: false, + markBreakingChangeMode: false, + allowBreakingChanges: ['feat', 'fix'], + breaklineNumber: 100, + breaklineChar: '|', + skipQuestions: [], + issuePrefixes: [{ value: 'closed', name: 'closed: 标记 ISSUES 已完成' }], + customIssuePrefixAlign: 'top', + emptyIssuePrefixAlias: 'skip', + customIssuePrefixAlias: 'custom', + allowCustomIssuePrefix: true, + allowEmptyIssuePrefix: true, + confirmColorize: true, + minSubjectLength: 0, + defaultBody: '', + defaultIssues: '', + defaultScope: '', + defaultSubject: '', +}; diff --git a/env/.env b/env/.env new file mode 100644 index 0000000..3ce1778 --- /dev/null +++ b/env/.env @@ -0,0 +1,23 @@ +# 页面标题 +VITE_APP_TITLE=uniapp-vue3模板项目 + +# 开发环境配置 +VITE_APP_ENV=development + +# 接口地址 +VITE_API_BASE_URL=https://test.shop.lihaink.cn + +# 端口号 +VITE_APP_PORT=9527 + +# h5是否需要配置代理 +VITE_APP_PROXY=true + +# API代理前缀 +VITE_API_PREFIX= https://test.shop.lihaink.cn + +# 删除console +VITE_DROP_CONSOLE=false + +# Tencent Map Key +VITE_APP_MAP_KEY= "SMJBZ-WCHK4-ZPZUA-DSIXI-XDDVQ-XWFX7" diff --git a/env/.env.development b/env/.env.development new file mode 100644 index 0000000..c078d37 --- /dev/null +++ b/env/.env.development @@ -0,0 +1,8 @@ +# 开发环境配置 +VITE_APP_ENV=development + +# 接口地址 +VITE_API_BASE_URL=http://localhost:8080 + +# 删除console +VITE_DROP_CONSOLE=false diff --git a/env/.env.production b/env/.env.production new file mode 100644 index 0000000..7ee7743 --- /dev/null +++ b/env/.env.production @@ -0,0 +1,8 @@ +# 生产环境配置 +VITE_APP_ENV=production + +# 接口地址 +VITE_API_BASE_URL=http://localhost:8080/prod + +# 删除console +VITE_DROP_CONSOLE=true diff --git a/env/.env.test b/env/.env.test new file mode 100644 index 0000000..88a6c6f --- /dev/null +++ b/env/.env.test @@ -0,0 +1,8 @@ +# 预发布环境配置 +VITE_APP_ENV=staging + +# 接口地址 +VITE_API_BASE_URL=http://localhost:8080/staging + +# 删除console +VITE_DROP_CONSOLE=true diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..fe89abc --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,53 @@ +import antfu from '@antfu/eslint-config'; + +export default antfu( + { + unocss: true, + ignores: [ + 'dist/**', + '.vscode/**', + '.idea/**', + 'node_modules/**', + 'src/uni_modules/**', + 'src/manifest.json', + 'src/pages.json', + 'README.md', + ], + }, + { + rules: { + // vue顶级标签的顺序 + 'vue/block-order': ['error', { + order: ['template', 'script', 'style'], + }], + // 需要尾随逗号 + 'comma-dangle': ['error', 'only-multiline'], + // 允许console + 'no-console': 'off', + // 需要分号 + 'style/semi': ['error', 'always'], + // 块内的空行 + 'padded-blocks': ['error', 'never'], + // 顶级函数应使用 function 关键字声明 + 'antfu/top-level-function': 'off', + // 全局的 process 不能用 + 'node/prefer-global/process': 'off', + // 禁止未使用的捕获组 + 'regexp/no-unused-capturing-group': 'off', + // 允许接口和类型别名中的成员之间使用三个分隔符 + 'style/member-delimiter-style': ['error', { + multiline: { + delimiter: 'semi', + requireLast: true, + }, + singleline: { + delimiter: 'semi', + requireLast: false, + }, + multilineDetection: 'brackets', + }], + // if 语句后需要换行 + 'antfu/if-newline': 'off', + }, + }, +); diff --git a/index.html b/index.html new file mode 100644 index 0000000..60d0627 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..2f5bbf2 --- /dev/null +++ b/package.json @@ -0,0 +1,132 @@ +{ + "name": "uniapp-vue3-project", + "type": "module", + "version": "1.3.1", + "description": "uniapp 团队协作开发实践模板(Vue3)", + "author": { + "name": "江阳小道", + "email": "oyjt001@gmail.com", + "github": "https://github.com/oyjt" + }, + "license": "MIT", + "homepage": "https://github.com/oyjt/uniapp-vue3-template", + "repository": { + "type": "git", + "url": "https://github.com/oyjt/uniapp-vue3-template.git" + }, + "keywords": [ + "Vue3", + "uniapp", + "uniapp-vue3-template", + "Vite5", + "TypeScript", + "uview-plus", + "uniapp template", + "UnoCSS" + ], + "engines": { + "node": ">=18", + "pnpm": ">=8" + }, + "scripts": { + "preinstall": "npx only-allow pnpm", + "uvm": "npx @dcloudio/uvm@latest", + "uvm-rm": "node ./scripts/post-upgrade.js", + "dev:h5": "uni", + "dev:h5:ssr": "uni --ssr", + "dev:h5-test": "uni --mode test", + "dev:h5-pro": "uni --mode production", + "dev:mp-weixin": "uni -p mp-weixin", + "dev:mp-weixin-test": "uni -p mp-weixin --mode test", + "dev:mp-weixin-prod": "uni -p mp-weixin --mode production", + "dev:app": "uni -p app", + "dev:app-android": "uni -p app-android", + "dev:app-ios": "uni -p app-ios", + "build:h5": "uni build", + "build:h5:ssr": "uni build --ssr", + "build:h5-test": "uni build --mode test", + "build:h5-prod": "uni build --mode production", + "build:mp-weixin": "uni build -p mp-weixin", + "build:mp-weixin-test": "uni build -p mp-weixin --mode test", + "build:mp-weixin-prod": "uni build -p mp-weixin --mode production", + "build:app": "uni build -p app", + "build:app-android": "uni build -p app-android", + "build:app-ios": "uni build -p app-ios", + "type-check": "vue-tsc --noEmit", + "eslint": "eslint \"src/**/*.{js,jsx,ts,tsx,vue}\"", + "eslint:fix": "eslint \"src/**/*.{js,jsx,ts,tsx,vue}\" --fix", + "stylelint": "stylelint \"src/**/*.{vue,scss,css,sass,less}\"", + "stylelint:fix": "stylelint \"src/**/*.{vue,scss,css,sass,less}\" --fix", + "cz": "git add . && npx czg", + "postinstall": "simple-git-hooks", + "clean": "npx rimraf node_modules", + "clean:cache": "npx rimraf node_modules/.cache" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-4060420250429001", + "@dcloudio/uni-app-plus": "3.0.0-4060420250429001", + "@dcloudio/uni-components": "3.0.0-4060420250429001", + "@dcloudio/uni-h5": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-weixin": "3.0.0-4060420250429001", + "dayjs": "^1.11.13", + "pinia": "2.2.4", + "pinia-plugin-persistedstate": "4.1.3", + "uview-plus": "^3.4.28", + "vue": "3.4.21", + "vue-i18n": "9.1.9", + "z-paging": "^2.8.4" + }, + "devDependencies": { + "@antfu/eslint-config": "4.13.0", + "@dcloudio/types": "^3.4.8", + "@dcloudio/uni-automator": "3.0.0-4060420250429001", + "@dcloudio/uni-cli-shared": "3.0.0-4060420250429001", + "@dcloudio/uni-stacktracey": "3.0.0-4060420250429001", + "@dcloudio/vite-plugin-uni": "3.0.0-4060420250429001", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@iconify-json/mdi": "^1.2.3", + "@rollup/rollup-darwin-arm64": "4.38.0", + "@rollup/rollup-darwin-x64": "4.38.0", + "@types/node": "^22.15.17", + "@uni-helper/uni-app-types": "1.0.0-alpha.6", + "@unocss/eslint-plugin": "^0.63.6", + "@unocss/preset-icons": "^0.63.6", + "czg": "^1.11.0", + "eslint": "^9.26.0", + "lint-staged": "^16.0.0", + "miniprogram-api-typings": "^4.0.7", + "picocolors": "^1.1.1", + "rimraf": "^6.0.1", + "rollup-plugin-visualizer": "^5.14.0", + "sass": "1.79.6", + "sass-loader": "^16.0.4", + "simple-git-hooks": "^2.13.0", + "stylelint": "^16.19.1", + "stylelint-config-recess-order": "^6.0.0", + "stylelint-config-standard": "^38.0.0", + "stylelint-config-standard-vue": "^1.0.0", + "typescript": "^5.8.3", + "unocss": "0.63.6", + "unocss-preset-weapp": "^66.0.1", + "unplugin-auto-import": "0.19.0", + "unplugin-vue-components": "^28.5.0", + "vite": "5.2.8", + "vite-plugin-clean-build": "^1.4.1", + "vite-plugin-replace-image-url": "^1.4.1", + "vite-plugin-restart": "^0.4.2", + "vue-tsc": "^2.2.10" + }, + "simple-git-hooks": { + "pre-commit": "npx lint-staged", + "commit-msg": "node ./scripts/verify-commit.js" + }, + "lint-staged": { + "src/**/*.{js,jsx,ts,tsx}": "eslint --fix", + "*.{scss,css,style,html}": "stylelint --fix", + "*.vue": [ + "eslint --fix", + "stylelint --fix" + ] + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..18a268a --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,13277 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@dcloudio/uni-app': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@dcloudio/types@3.4.15)(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-app-plus': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-components': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-h5': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-mp-weixin': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + dayjs: + specifier: ^1.11.13 + version: 1.11.13 + pinia: + specifier: 2.2.4 + version: 2.2.4(typescript@5.8.3)(vue@3.4.21(typescript@5.8.3)) + pinia-plugin-persistedstate: + specifier: 4.1.3 + version: 4.1.3(pinia@2.2.4(typescript@5.8.3)(vue@3.4.21(typescript@5.8.3))) + uview-plus: + specifier: ^3.4.28 + version: 3.4.28 + vue: + specifier: 3.4.21 + version: 3.4.21(typescript@5.8.3) + vue-i18n: + specifier: 9.1.9 + version: 9.1.9(vue@3.4.21(typescript@5.8.3)) + z-paging: + specifier: ^2.8.4 + version: 2.8.6 + devDependencies: + '@antfu/eslint-config': + specifier: 4.13.0 + version: 4.13.0(@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(@unocss/eslint-plugin@0.63.6(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(@vue/compiler-sfc@3.5.13)(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@dcloudio/types': + specifier: ^3.4.8 + version: 3.4.15 + '@dcloudio/uni-automator': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-cli-shared': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-stacktracey': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001 + '@dcloudio/vite-plugin-uni': + specifier: 3.0.0-4060420250429001 + version: 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3)) + '@esbuild/darwin-arm64': + specifier: 0.25.1 + version: 0.25.1 + '@esbuild/darwin-x64': + specifier: 0.25.1 + version: 0.25.1 + '@iconify-json/mdi': + specifier: ^1.2.3 + version: 1.2.3 + '@rollup/rollup-darwin-arm64': + specifier: 4.38.0 + version: 4.38.0 + '@rollup/rollup-darwin-x64': + specifier: 4.38.0 + version: 4.38.0 + '@types/node': + specifier: ^22.15.17 + version: 22.15.17 + '@uni-helper/uni-app-types': + specifier: 1.0.0-alpha.6 + version: 1.0.0-alpha.6(typescript@5.8.3)(vue@3.4.21(typescript@5.8.3)) + '@unocss/eslint-plugin': + specifier: ^0.63.6 + version: 0.63.6(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@unocss/preset-icons': + specifier: ^0.63.6 + version: 0.63.6 + czg: + specifier: ^1.11.0 + version: 1.11.1 + eslint: + specifier: ^9.26.0 + version: 9.26.0(jiti@2.4.2) + lint-staged: + specifier: ^16.0.0 + version: 16.0.0 + miniprogram-api-typings: + specifier: ^4.0.7 + version: 4.0.7 + picocolors: + specifier: ^1.1.1 + version: 1.1.1 + rimraf: + specifier: ^6.0.1 + version: 6.0.1 + rollup-plugin-visualizer: + specifier: ^5.14.0 + version: 5.14.0 + sass: + specifier: 1.79.6 + version: 1.79.6 + sass-loader: + specifier: ^16.0.4 + version: 16.0.5(sass@1.79.6) + simple-git-hooks: + specifier: ^2.13.0 + version: 2.13.0 + stylelint: + specifier: ^16.19.1 + version: 16.19.1(typescript@5.8.3) + stylelint-config-recess-order: + specifier: ^6.0.0 + version: 6.0.0(stylelint@16.19.1(typescript@5.8.3)) + stylelint-config-standard: + specifier: ^38.0.0 + version: 38.0.0(stylelint@16.19.1(typescript@5.8.3)) + stylelint-config-standard-vue: + specifier: ^1.0.0 + version: 1.0.0(postcss-html@1.8.0)(stylelint@16.19.1(typescript@5.8.3)) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + unocss: + specifier: 0.63.6 + version: 0.63.6(postcss@8.5.3)(typescript@5.8.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + unocss-preset-weapp: + specifier: ^66.0.1 + version: 66.0.1(@nuxt/kit@3.17.2)(esbuild@0.23.1)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + unplugin-auto-import: + specifier: 0.19.0 + version: 0.19.0(@nuxt/kit@3.17.2) + unplugin-vue-components: + specifier: ^28.5.0 + version: 28.5.0(@babel/parser@7.27.2)(@nuxt/kit@3.17.2)(vue@3.4.21(typescript@5.8.3)) + vite: + specifier: 5.2.8 + version: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + vite-plugin-clean-build: + specifier: ^1.4.1 + version: 1.4.1(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + vite-plugin-replace-image-url: + specifier: ^1.4.1 + version: 1.4.1(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + vite-plugin-restart: + specifier: ^0.4.2 + version: 0.4.2(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + vue-tsc: + specifier: ^2.2.10 + version: 2.2.10(typescript@5.8.3) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/eslint-config@4.13.0': + resolution: {integrity: sha512-zXEe1NWioKWgo094qo7D/IL2NjzWpLolslSFpZTBPtiFPR6DyRwfUVyWdODUgtzM9cU05ETnEPFRpXDYWFR0/A==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.38.4 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react-hooks: ^5.2.0 + eslint-plugin-react-refresh: ^0.4.19 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + eslint-plugin-vuejs-accessibility: ^2.4.1 + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + eslint-plugin-vuejs-accessibility: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.1': + resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.27.1': + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.27.1': + resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.27.1': + resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': + resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': + resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.27.1': + resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.27.1': + resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.27.1': + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.27.1': + resolution: {integrity: sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.27.1': + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.27.1': + resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.27.1': + resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.27.1': + resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.27.1': + resolution: {integrity: sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.27.1': + resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.27.1': + resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.27.1': + resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1': + resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.27.1': + resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.27.1': + resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.27.2': + resolution: {integrity: sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.27.1': + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.27.1': + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.1': + resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.27.1': + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.27.1': + resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.27.1': + resolution: {integrity: sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.27.1': + resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.27.1': + resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.1': + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.27.1': + resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1': + resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.27.2': + resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime@7.27.1': + resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@clack/core@0.4.2': + resolution: {integrity: sha512-NYQfcEy8MWIxrT5Fj8nIVchfRFA26yYKJcvBS7WlUIlw2OmQOY9DhGGXMovyI5J5PpxrCPGkgUi207EBrjpBvg==} + + '@clack/prompts@0.10.1': + resolution: {integrity: sha512-Q0T02vx8ZM9XSv9/Yde0jTmmBQufZhPJfYAg2XrrrxWWaZgq1rr8nU8Hv710BQ1dhoP8rtY7YUdpGej2Qza/cw==} + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.2': + resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@dcloudio/types@3.4.15': + resolution: {integrity: sha512-Y8n/Z7USQoYFWUYZBLVjLXV3G5E/Odnvy3Ldgri4ikCcyQqHRk6RRaLh0WWnuIkxQxz2MXqLH4JNN65sb00XIA==} + + '@dcloudio/uni-app-plus@3.0.0-4060420250429001': + resolution: {integrity: sha512-NvAyNqj9VWvzyKN8Z1TRh23NlGu3eoxkqGkSQqpwawyBPrJlquqyYYguQHThEJUIEGp1EYKiyepOvI5HJUVGZQ==} + + '@dcloudio/uni-app-uts@3.0.0-4060420250429001': + resolution: {integrity: sha512-YhEMO8BSAi3tuZaCyj6g/xftsJDSJapnHu3s4JFCVjjjR6V7YjmUKnmsSjOWHoVMkgmeg+ZcgnWtHbj/f+p1KQ==} + + '@dcloudio/uni-app-vite@3.0.0-4060420250429001': + resolution: {integrity: sha512-Pu4367kCZGG+LTJL3dsVHzcNlwzZluDh84M1mlN++d0ItlYNRoFEes6R+a+mnVBl2DI+kIRChLWBDFqSkTVPsw==} + + '@dcloudio/uni-app-vue@3.0.0-4060420250429001': + resolution: {integrity: sha512-GSSgzA2abenqjKmh1m+Eqkt4La4IJ9QjZqoFl12w51cX2BNSy9NCLTRQKz9RcC/NCwjGKMg5zed7iyojxmqFpw==} + + '@dcloudio/uni-app@3.0.0-4060420250429001': + resolution: {integrity: sha512-d6ntwrVNf1mJdYp1+ksS9ACLlqrc0Zv49QFgITPBH4nd1bKTG910eu4dMox2jZ7eAPFzdBic4lQcBFNVTBkv0w==} + peerDependencies: + '@dcloudio/types': ^3.4.14 + + '@dcloudio/uni-automator@3.0.0-4060420250429001': + resolution: {integrity: sha512-eWKGCFGFlt2x+l5X+PFTpl/9VKnVv8D6+zBCg6WD4Hom7iPUS2ScBvMLv8D2+H+eo6N+xPgZHTG8ZmnzT6NUEg==} + peerDependencies: + jest: 27.0.4 + jest-environment-node: 27.5.1 + + '@dcloudio/uni-cli-shared@3.0.0-4060420250429001': + resolution: {integrity: sha512-ANRwVd0pI86Et9+ScKy8LikPUp8mMiOb5acciiSCkJxd8urrJpY32yaubrS77jhAFR9ak1+l7tk/d3e1I/xdBg==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cloud@3.0.0-4060420250429001': + resolution: {integrity: sha512-ykHkfWot7ElrLBcCli1Wj7dFKtziKGAmzc4nvlOgCrsjcOTHhgPttcNnw/tLPZS97hYLML13UoNpTVv80Pq8oQ==} + + '@dcloudio/uni-components@3.0.0-4060420250429001': + resolution: {integrity: sha512-MEPq7ygXWj/JV86KQsFym9E8wee6Nl4GChE1MqFKWbCGvH7p8EEqPMPRtJwx72f9/GfX5Cic6Ap89PtZ4SllmA==} + + '@dcloudio/uni-console@3.0.0-4060420250429001': + resolution: {integrity: sha512-LzwHe8r7XBy5IXpoAq3xkCK7PyFNp7zn0xyYuTJLPINS5XlTDrDxctEmevlhztFWeu0ieNpPriLNk1ZfouvJ/A==} + + '@dcloudio/uni-h5-vite@3.0.0-4060420250429001': + resolution: {integrity: sha512-PVwqcZiCKNCeIToIcO+TUrDq5RwtiK4gTibIVJ5I0mDjf7pAMeY+UMcPyMgsDflQggvEY7VKkR3Lu2zu17z35g==} + + '@dcloudio/uni-h5-vue@3.0.0-4060420250429001': + resolution: {integrity: sha512-DXXa7YIZROLDqY5Nrt4FymB2IvUOhrg4NkICPD3IAZmkNV44KL3HbeN/oXI6dc3QkH2jCu4OALZKp0sq4F3Lgw==} + + '@dcloudio/uni-h5@3.0.0-4060420250429001': + resolution: {integrity: sha512-QS7uv3zILngvU+WRl0ngLHfKEOXOc0LFBwlORrdh5uPmO9wUSdjffMTt6TThtdMRLvn7LesX4rs8QSKZhTR9wA==} + + '@dcloudio/uni-i18n@3.0.0-4060420250429001': + resolution: {integrity: sha512-5TUIUHp1TB6A5n8ik2xolVC0W6YWrmZ0JuANZfjByhwVzVygiBSbnHsExQFlZYUMhBFmclgDcnBM1vAUWhdreQ==} + + '@dcloudio/uni-mp-compiler@3.0.0-4060420250429001': + resolution: {integrity: sha512-yehbzbPEG66/Pjf2BR57o46rxny6LQT5pTGyTUB6WI45J/V8qxBTn7QQwhWbi00ArL2jPgJMrZKiIfcSdF0DeA==} + + '@dcloudio/uni-mp-vite@3.0.0-4060420250429001': + resolution: {integrity: sha512-q6svgh4SA3brBu2L+BmRjFztVcO+SNSs29MYzdiW6zt5yoVRe9P88NpBG540IznO93yj91skcfmo3wozkenQAA==} + + '@dcloudio/uni-mp-vue@3.0.0-4060420250429001': + resolution: {integrity: sha512-ACVAPmmhLljL6SseOD4Xnnat4q7zdJTVjmGOyz7lXSwePQgxX5sjWPmY5xcC+bYhLHxk2Al7ATUWNoOyHWpIEg==} + + '@dcloudio/uni-mp-weixin@3.0.0-4060420250429001': + resolution: {integrity: sha512-x8QQrQxelXY5QUymqztMYhwlqFUNC+ApNQj+NTmnmViYxu7D152OLhP6/at+GN431PzbdsXUACrm0bv5+ep+bQ==} + + '@dcloudio/uni-nvue-styler@3.0.0-4060420250429001': + resolution: {integrity: sha512-+T8D1ZU5BC8nn+wIGRuQ/7jL8jJ9ts40HtH9oaxGYbJLTay3G63Z/bL21bAE+NT+N5tBXLSNrNNLzGLMwFKDjQ==} + + '@dcloudio/uni-push@3.0.0-4060420250429001': + resolution: {integrity: sha512-LmF3BpseEpzGZOffF7mUo7u+xJHRfsmdOIMwXS4Nb4q15YPj9HkwASm+HdEI+YtUdUx3BLbPKDJJNd4Lhd8YLQ==} + + '@dcloudio/uni-shared@3.0.0-4060420250429001': + resolution: {integrity: sha512-AdMu54lYQgXh2/QBqI3QhVi1c9Prcnmqz54Go2jwv4GW5FFYiu01rfZuHITpcuTgRK8iiq7nr5koWimz1Yxqfg==} + + '@dcloudio/uni-stacktracey@3.0.0-4060420250429001': + resolution: {integrity: sha512-Q18t1SZolMX2Zy35nHLL52ADwjbP4EXAuTKIKZX1ySuBGjjzfzT9rDvrxkgQbeWO1MgjPQ0O/sOCSMXwBcviUQ==} + + '@dcloudio/uni-stat@3.0.0-4060420250429001': + resolution: {integrity: sha512-X2+Lpr739LBHFvndqrWjiZEmfG1f7cSlT2yJ9kwSTiL287l6WmaybvXEPDQk53h6GDOZGSCmThHozpgEHDmgmg==} + + '@dcloudio/vite-plugin-uni@3.0.0-4060420250429001': + resolution: {integrity: sha512-hpTLcnQF7kflDtkwANKG2mytRW6paUDI90Ltz6MQGTWuc3YA5/2eOHPg+5BxeVF4jv1o6GS1f2/aFeaPu52Xjg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + vite: ^5.2.8 + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} + engines: {node: '>=16'} + + '@es-joy/jsdoccomment@0.50.0': + resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} + engines: {node: '>=18'} + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.1': + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.1': + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-plugin-eslint-comments@4.5.0': + resolution: {integrity: sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.2.9': + resolution: {integrity: sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.26.0': + resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/markdown@6.4.0': + resolution: {integrity: sha512-J07rR8uBSNFJ9iliNINrchilpkmCihPmTVotpThUeKEn5G8aBBZnkjNBy/zovhJA5LBk1vWU9UDlhqKSc/dViQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify-json/mdi@1.2.3': + resolution: {integrity: sha512-O3cLwbDOK7NNDf2ihaQOH5F9JglnulNDFV7WprU2dSoZu3h3cWH//h74uQAB87brHmvFVxIOkuBX2sZSzYhScg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + + '@intlify/core-base@9.1.9': + resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==} + engines: {node: '>= 10'} + + '@intlify/devtools-if@9.1.9': + resolution: {integrity: sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==} + engines: {node: '>= 10'} + + '@intlify/message-compiler@9.1.9': + resolution: {integrity: sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==} + engines: {node: '>= 10'} + + '@intlify/message-resolver@9.1.9': + resolution: {integrity: sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==} + engines: {node: '>= 10'} + + '@intlify/runtime@9.1.9': + resolution: {integrity: sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==} + engines: {node: '>= 10'} + + '@intlify/shared@9.1.9': + resolution: {integrity: sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==} + engines: {node: '>= 10'} + + '@intlify/vue-devtools@9.1.9': + resolution: {integrity: sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==} + engines: {node: '>= 10'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/fake-timers@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/globals@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/reporters@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-sequencer@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/transform@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jimp/bmp@0.10.3': + resolution: {integrity: sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/core@0.10.3': + resolution: {integrity: sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==} + + '@jimp/custom@0.10.3': + resolution: {integrity: sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==} + + '@jimp/gif@0.10.3': + resolution: {integrity: sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/jpeg@0.10.3': + resolution: {integrity: sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blit@0.10.3': + resolution: {integrity: sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blur@0.10.3': + resolution: {integrity: sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-circle@0.10.3': + resolution: {integrity: sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-color@0.10.3': + resolution: {integrity: sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-contain@0.10.3': + resolution: {integrity: sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-cover@0.10.3': + resolution: {integrity: sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-crop@0.10.3': + resolution: {integrity: sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-displace@0.10.3': + resolution: {integrity: sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-dither@0.10.3': + resolution: {integrity: sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-fisheye@0.10.3': + resolution: {integrity: sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-flip@0.10.3': + resolution: {integrity: sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + + '@jimp/plugin-gaussian@0.10.3': + resolution: {integrity: sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-invert@0.10.3': + resolution: {integrity: sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-mask@0.10.3': + resolution: {integrity: sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-normalize@0.10.3': + resolution: {integrity: sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-print@0.10.3': + resolution: {integrity: sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + + '@jimp/plugin-resize@0.10.3': + resolution: {integrity: sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-rotate@0.10.3': + resolution: {integrity: sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-scale@0.10.3': + resolution: {integrity: sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-shadow@0.10.3': + resolution: {integrity: sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-threshold@0.10.3': + resolution: {integrity: sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + + '@jimp/plugins@0.10.3': + resolution: {integrity: sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/png@0.10.3': + resolution: {integrity: sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/tiff@0.10.3': + resolution: {integrity: sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/types@0.10.3': + resolution: {integrity: sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/utils@0.10.3': + resolution: {integrity: sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@keyv/serialize@1.0.3': + resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} + + '@meoc/utils@0.2.10': + resolution: {integrity: sha512-LN/CQDOVmmN/kq31630r+dFYZSPezmhbRq0Ib0RbKv+qpSpaOasXwAcwO/rkpPkhuoty5kfpHmTdjrEUU8bJYQ==} + + '@modelcontextprotocol/sdk@1.11.1': + resolution: {integrity: sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==} + engines: {node: '>=18'} + + '@napi-rs/wasm-runtime@0.2.9': + resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nuxt/kit@3.17.2': + resolution: {integrity: sha512-Mz2Ni8iUwty5LBs3LepUL43rI2xXbuAz3Cqq37L9frOD2QI2tQUtasYaSoKk6U7nvYzuW2z/2b3YOLkMNi/k2w==} + engines: {node: '>=18.12.0'} + + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + + '@pkgr/core@0.1.2': + resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pkgr/core@0.2.4': + resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.38.0': + resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.38.0': + resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + cpu: [x64] + os: [win32] + + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + + '@sinonjs/fake-timers@8.1.0': + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + + '@stylistic/eslint-plugin@4.2.0': + resolution: {integrity: sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@22.15.17': + resolution: {integrity: sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + + '@typescript-eslint/eslint-plugin@8.32.0': + resolution: {integrity: sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.32.0': + resolution: {integrity: sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.32.0': + resolution: {integrity: sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.32.0': + resolution: {integrity: sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.32.0': + resolution: {integrity: sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.32.0': + resolution: {integrity: sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.32.0': + resolution: {integrity: sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.32.0': + resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@uni-helper/uni-app-types@1.0.0-alpha.6': + resolution: {integrity: sha512-t9AKDYBmDaz4IW0fgtBt25ubEzf7kyUeMlHaBaG5nyNGd6pVuDpYkABhsnNPDiZcaHAoN6SbX1SQQx5axDOWbA==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^5.0.0 + vue: ^3.0.0 + + '@unocss/astro@0.63.6': + resolution: {integrity: sha512-5Fjlv6dpQo6o2PUAcEv8p24G8rn8Op79xLFofq2V+iA/Q32G9/UsxTLOpj+yc+q0YdJrFfDCT2X/3pvVY8Db5g==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.63.6': + resolution: {integrity: sha512-OZb8hO0x4nCJjFd3Gq3km78YnyMAdq282D+BLiDE6IhQ5WHCVL7fyhfgIVL6xwxISDVxiyITwNb72ky0MEutPg==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@0.63.6': + resolution: {integrity: sha512-+4Lt5uTwRgu1z7vhOUzDf+mL+BQYdaa/Z8NMT2Fiqb37tcjEKvmwaUHdfE22Vif1luDgC6xqFsn6qqFtOxhoWQ==} + engines: {node: '>=14'} + + '@unocss/core@0.63.6': + resolution: {integrity: sha512-Q4QPgJ271Up89+vIqqOKgtdCKkFpHqvHN8W1LUlKPqtYnOvVYaOIVNAZowaIdEhPuc83yLc6Tg2+7riK18QKEw==} + + '@unocss/core@66.1.1': + resolution: {integrity: sha512-EOewEnipyB7Y6ne0YQmxdCG1hbMjYJ7oPMeHKfQuCZz60DPzkYwV6zVMa35ySMs1xljb/vFTHVFcJA8du3i8XA==} + + '@unocss/eslint-plugin@0.63.6': + resolution: {integrity: sha512-t+3INH3dc1NsfH2Eq4UQHtHDG06b/YEe9ULKgi36M+u8gcBDJpPutGmihU7Ftd5XqwoCn0OIMRBcEVwy3mqPaA==} + engines: {node: '>=14'} + + '@unocss/extractor-arbitrary-variants@0.63.6': + resolution: {integrity: sha512-HJX0oAa9uzwKYoU8CoJdP1gxjuqFmOLxyZmITjStAmZNZpIxlz2wz4VrHmqml2dkvx/mifGGGc/GxZpQ36D12Q==} + + '@unocss/extractor-arbitrary-variants@66.1.1': + resolution: {integrity: sha512-hDbdXm2+LjQ18zkUniU6tCGdyBHxnMZ0M2LFF21iGEbDvK3ukX4uEVAhzASEmhkEE0nULyEJg0HkU4CRNBupBg==} + + '@unocss/inspector@0.63.6': + resolution: {integrity: sha512-DQDJnhtzdHIQXD2vCdj5ytFnHfQCWJGPmrHJHXxzkTYn8nIovV1roVl1ITLxkDIIYK9bdYneg2imQN5JCZhHmQ==} + + '@unocss/postcss@0.63.6': + resolution: {integrity: sha512-XI6U1jMwbQoSHVWpZZu3Cxp3t1PVj5VOj+IYtz7xmcWP9GVK+eyETo/xyB0l4muD4emXfSrhNDrFYzSyIyF5cg==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.63.6': + resolution: {integrity: sha512-sHH17mfl/THHLxCLAHqPdUniCNMFjAxBHFDZYgGi83azuarF2evI5Mtc3Qsj3nzoSQwTPmK2VY3XYUUrpPDGWQ==} + + '@unocss/preset-icons@0.63.6': + resolution: {integrity: sha512-fRU44wXABnMPT/9zhKBNSUeDJlOxJhUJP9W3FSRnc+ktjAifJIj0xpUKtEqxL46QMq825Bsj2yDSquzP+XYGnQ==} + + '@unocss/preset-mini@0.63.6': + resolution: {integrity: sha512-pZDZbSuxabHSwPIy3zCgQ4MNdVCSHvOvZecreH+v96R1oOhquiwU8WiSbkxvZiKiLQJd7JUVW87E1pAzr5ZGGQ==} + + '@unocss/preset-tagify@0.63.6': + resolution: {integrity: sha512-3lKhk4MW3RqJBwIvBXHj0H0/kHkFlKtCIBQFiBcCJh8TXOID8IZ0iVjuGwdlk63VTizI/wnsNDOVpj6YcjRRlw==} + + '@unocss/preset-typography@0.63.6': + resolution: {integrity: sha512-AXmBVnbV54gUIv5kbywjZek9ZlKRwJfBDVMtWOcLOjN3AHirGx1W2oq2UzNkfYZ2leof/Y2BocxeTwGCCRhqDQ==} + + '@unocss/preset-uno@0.63.6': + resolution: {integrity: sha512-67PbHyVgAe9Rz0Rhyl3zBibFuGmqQMRPMkRjNYrwmmtNydpQYsXbfnDs0p8mZFp6uO2o3Jkh7urqEtixHHvq0Q==} + + '@unocss/preset-web-fonts@0.63.6': + resolution: {integrity: sha512-ko1aHDax0u5CQi1BXggv6uW5Vq/LQRWwzOxqBFTh1JlGHPZTw4CdVJkYnlpt3WEW+FPUzZYjhKmMmQY7KtOTng==} + + '@unocss/preset-wind@0.63.6': + resolution: {integrity: sha512-W3oZ2TXSqStNE+X++kcspRTF2Szu2ej6NW5Kiyy6WQn/+ZD77AF4VtvzHtzFVZ2QKpEIovGBpU5tywooHbB7hw==} + + '@unocss/reset@0.63.6': + resolution: {integrity: sha512-gq73RSZj54MOloqrivkoMPXCqNG2WpIyBT1AYlF76uKxEEbUD41E8uBUhLSKs7gFgF01yQJLRaIuyN1yw09pbQ==} + + '@unocss/rule-utils@0.63.6': + resolution: {integrity: sha512-moeDEq5d9mB8gSYeoqHMkXWWekaFFdhg7QCuwwCbxCc+NPMOgGkmfAoafz+y2tdvK7pEuT191RWOiHQ0MkA5oQ==} + engines: {node: '>=14'} + + '@unocss/rule-utils@66.1.1': + resolution: {integrity: sha512-a7xe3FsvsI6T6u8QtXcQF22jnElB68X92aHjuSRt512gRjhhu/5kSzLJbMkv9RsclHJbmjnz6OUkk/mlTTxcFg==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@0.63.6': + resolution: {integrity: sha512-/RU09MF+hJK7cFbLJ+8vloCGyhn6Oys8R6gey0auB0+nw/ucUXoLQKWgUqo9taQlLuYOiehdkYjQSdWn5lyA/Q==} + + '@unocss/transformer-compile-class@0.63.6': + resolution: {integrity: sha512-zzAqs8adnTUOLA88RgcToadcrz9gjxrZk6IrcmMqMmWqk0MOWNQHIN0RzKa/yaw4QhO2xuGyIz4/WHyXuCXMQg==} + + '@unocss/transformer-directives@0.63.6': + resolution: {integrity: sha512-XcNOwLRbfrJSU6YXyLgiMzAigSzjIdvHwS3lLCZ2n6DWuLmTuXBfvVtRxeJ+aflNkhpQNKONCClC4s6I2r53uw==} + + '@unocss/transformer-variant-group@0.63.6': + resolution: {integrity: sha512-ebYSjZnZrtcJYjmAEDwGVwPuaQ9EVWKNDDJFFSusP8k/6PjJoHDh0qkj+hdPPDhYn81yzJQalU1eSUSlfC30VA==} + + '@unocss/vite@0.63.6': + resolution: {integrity: sha512-gxK3gtvYQH5S/qtuvsY4M0S+KJPZnYrOQI/Gopufx+b2qgmwZ/TSAe66gWeKYfe3DfQsmA3PPh/GXpkK+/FnHg==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@unrs/resolver-binding-darwin-arm64@1.7.2': + resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.7.2': + resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==} + cpu: [x64] + os: [win32] + + '@vitejs/plugin-legacy@5.3.2': + resolution: {integrity: sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + + '@vitejs/plugin-vue-jsx@3.1.0': + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.1.0': + resolution: {integrity: sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.1.44': + resolution: {integrity: sha512-m4XeohMT+Dj2RZfxnbiFR+Cv5dEC0H7C6TlxRQT7GK2556solm99kxgzJp/trKrZvanZcOFyw7aABykUTfWyrg==} + peerDependencies: + '@typescript-eslint/utils': '>= 8.24.0' + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + + '@volar/language-core@2.4.13': + resolution: {integrity: sha512-MnQJ7eKchJx5Oz+YdbqyFUk8BN6jasdJv31n/7r6/WwlOOv7qzvot6B66887l2ST3bUW4Mewml54euzpJWA6bg==} + + '@volar/source-map@2.4.13': + resolution: {integrity: sha512-l/EBcc2FkvHgz2ZxV+OZK3kMSroMr7nN3sZLF2/f6kWW66q8+tEL4giiYyFjt0BcubqJhBt6soYIrAPhg/Yr+Q==} + + '@volar/typescript@2.4.13': + resolution: {integrity: sha512-Ukz4xv84swJPupZeoFsQoeJEOm7U9pqsEnaGGgt5ni3SCTa22m8oJP5Nng3Wed7Uw5RBELdLxxORX8YhJPyOgQ==} + + '@vue/babel-helper-vue-transform-on@1.4.0': + resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==} + + '@vue/babel-plugin-jsx@1.4.0': + resolution: {integrity: sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.4.0': + resolution: {integrity: sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.4.21': + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + + '@vue/compiler-dom@3.4.21': + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + + '@vue/compiler-sfc@3.4.21': + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + + '@vue/compiler-ssr@3.4.21': + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/consolidate@1.0.0': + resolution: {integrity: sha512-oTyUE+QHIzLw2PpV14GD/c7EohDyP64xCniWTcqcEmTd699eFqTIwOmtDYjcO1j3QgdXoJEoWv1/cCdLrRoOfg==} + engines: {node: '>= 0.12.0'} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/language-core@2.2.10': + resolution: {integrity: sha512-+yNoYx6XIKuAO8Mqh1vGytu8jkFEOH5C8iOv3i8Z/65A7x9iAOXA97Q+PqZ3nlm2lxf5rOJuIGI/wDtx/riNYw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.4.21': + resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/runtime-core@3.4.21': + resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-dom@3.4.21': + resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + + '@vue/server-renderer@3.4.21': + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + peerDependencies: + vue: 3.5.13 + + '@vue/shared@3.4.21': + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + alien-signals@1.0.13: + resolution: {integrity: sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + babel-jest@27.5.1: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + babel-plugin-polyfill-corejs2@0.4.13: + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.4: + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + builtin-modules@5.0.0: + resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} + engines: {node: '>=18.20'} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + c12@3.0.3: + resolution: {integrity: sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w==} + peerDependencies: + magicast: ^0.3.5 + peerDependenciesMeta: + magicast: + optional: true + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cac@6.7.9: + resolution: {integrity: sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==} + engines: {node: '>=8'} + + cacheable@1.9.0: + resolution: {integrity: sha512-8D5htMCxPDUULux9gFzv30f04Xo3wCnik0oOxKoRTPIBoqA7HtOcJ87uBhQTs3jCfZZTrUBGsYIZOgE0ZRgMAg==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001717: + resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + centra@2.7.0: + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + ci-info@4.2.0: + resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + engines: {node: '>=8'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + clipboard@2.0.11: + resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + + compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + core-js-compat@3.42.0: + resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} + + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-font-size-keywords@1.0.0: + resolution: {integrity: sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==} + + css-font-stretch-keywords@1.0.1: + resolution: {integrity: sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==} + + css-font-style-keywords@1.0.1: + resolution: {integrity: sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==} + + css-font-weight-keywords@1.0.0: + resolution: {integrity: sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==} + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} + engines: {node: '>=12 || >=16'} + + css-list-helpers@2.0.0: + resolution: {integrity: sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==} + + css-system-font-keywords@1.0.0: + resolution: {integrity: sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + czg@1.11.1: + resolution: {integrity: sha512-2k/Dh7MiRKMUEtQO3kWVkgPmvf0wZlxyS7Svr8cpI2ScATkLuA5uWa2ukJnTXG6Pwe73vFhGO9jd9IiE3NOM5g==} + engines: {node: '>=v12.20.0'} + hasBin: true + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decode-named-character-reference@1.1.0: + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-pick-omit@1.2.1: + resolution: {integrity: sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegate@3.2.0: + resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.151: + resolution: {integrity: sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA==} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + errx@0.1.0: + resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.6.5: + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-flat-gitignore@2.1.0: + resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==} + peerDependencies: + eslint: ^9.5.0 + + eslint-flat-config-utils@2.0.1: + resolution: {integrity: sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==} + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + peerDependencies: + eslint: '*' + + eslint-plugin-antfu@3.1.1: + resolution: {integrity: sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==} + peerDependencies: + eslint: '*' + + eslint-plugin-command@3.2.0: + resolution: {integrity: sha512-PSDOB9k7Wd57pp4HD/l3C1D93pKX8/wQo0kWDI4q6/UpgrfMTyNsavklipgiZqbXl1+VBABY1buCcQE5LDpg5g==} + peerDependencies: + eslint: '*' + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-import-x@4.11.1: + resolution: {integrity: sha512-CiqREASJRnhwCB0NujkTdo4jU+cJAnhQrd4aCnWC1o+rYWIWakVbyuzVbnCriUUSLAnn5CoJ2ob36TEgNzejBQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-jsdoc@50.6.14: + resolution: {integrity: sha512-JUudvooQbUx3iB8n/MzXMOV/VtaXq7xL4CeXhYryinr8osck7nV6fE2/xUXTiH3epPXcvq6TE3HQfGQuRHErTQ==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-jsonc@2.20.0: + resolution: {integrity: sha512-FRgCn9Hzk5eKboCbVMrr9QrhM0eO4G+WKH8IFXoaeqhM/2kuWzbStJn4kkr0VWL8J5H8RYZF+Aoam1vlBaZVkw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-n@17.18.0: + resolution: {integrity: sha512-hvZ/HusueqTJ7VDLoCpjN0hx4N4+jHIWTXD4TMLHy9F23XkDagR9v+xQWRWR57yY55GPF8NnD4ox9iGTxirY8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} + + eslint-plugin-perfectionist@4.12.3: + resolution: {integrity: sha512-V0dmpq6fBbn0BYofHsiRuuY9wgkKMDkdruM0mIRBIJ8XZ8vEaTAZqFsywm40RuWNVnduWBt5HO1ZZ+flE2yqjg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.45.0' + + eslint-plugin-pnpm@0.3.1: + resolution: {integrity: sha512-vi5iHoELIAlBbX4AW8ZGzU3tUnfxuXhC/NKo3qRcI5o9igbz6zJUqSlQ03bPeMqWIGTPatZnbWsNR1RnlNERNQ==} + peerDependencies: + eslint: ^9.0.0 + + eslint-plugin-regexp@2.7.0: + resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-unicorn@59.0.1: + resolution: {integrity: sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==} + engines: {node: ^18.20.0 || ^20.10.0 || >=21.0.0} + peerDependencies: + eslint: '>=9.22.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-plugin-vue@10.1.0: + resolution: {integrity: sha512-/VTiJ1eSfNLw6lvG9ENySbGmcVvz6wZ9nA7ZqXlLBY2RkaF15iViYKxglWiIch12KiLAj0j1iXPYU6W4wTROFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 + + eslint-plugin-yml@1.18.0: + resolution: {integrity: sha512-9NtbhHRN2NJa/s3uHchO3qVVZw0vyOIvWlXWGaKCr/6l3Go62wsvJK5byiI6ZoYztDsow4GnS69BZD3GnqH3hA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: '>=9.0.0' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.26.0: + resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + + exsolve@1.0.5: + resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@10.1.0: + resolution: {integrity: sha512-Et/ex6smi3wOOB+n5mek+Grf7P2AxZR5ueqRUvAAn4qkyatXi3cUC1cuQXVkX0VlzBVsN4BkWJFmY/fYiRTdww==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-type@9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat-cache@6.1.9: + resolution: {integrity: sha512-DUqiKkTlAfhtl7g78IuwqYM+YqvT+as0mY+EVk6mfimy19U79pJCzDZQsnqk3Ou/T6hFXWLGbwbADzD/c8Tydg==} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@3.0.3: + resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} + engines: {node: '>= 6'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + + giget@2.0.0: + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@11.0.2: + resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.1.0: + resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + good-listener@1.2.2: + resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hookified@1.9.0: + resolution: {integrity: sha512-2yEEGqphImtKIe1NXWEhu6yD3hlFR4Mxk4Mtp3XEyScpSt4pQ4ymmXA1zzxZpj99QkFK+nN0nzjeb2+RUi/6CQ==} + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + importx@0.4.4: + resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + invert-kv@3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-builtin-module@5.0.0: + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} + engines: {node: '>=18.20'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@4.1.0: + resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} + engines: {node: 20 || >=22} + + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest@27.0.4: + resolution: {integrity: sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jimp@0.10.3: + resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.0.0-beta.3: + resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyv@5.3.3: + resolution: {integrity: sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + knitwork@1.2.0: + resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} + + known-css-properties@0.36.0: + resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + licia@1.48.0: + resolution: {integrity: sha512-bBWiT5CSdEtwuAHiYTJ74yItCjIFdHi4xiFk6BRDfKa+sdCpkUHp69YKb5udNOJlHDzFjNjcMgNZ/+wQIHrB8A==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lint-staged@16.0.0: + resolution: {integrity: sha512-sUCprePs6/rbx4vKC60Hez6X10HPkpDJaGcy3D1NdwR7g1RcNkWL8q9mJMreOqmHBTs+1sNFp+wOiX9fr+hoOQ==} + engines: {node: '>=20.18'} + hasBin: true + + listr2@8.3.3: + resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} + engines: {node: '>=18.0.0'} + + load-bmfont@1.4.2: + resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + local-pkg@1.1.1: + resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + engines: {node: '>=14'} + + localstorage-polyfill@1.0.1: + resolution: {integrity: sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + miniprogram-api-typings@4.0.7: + resolution: {integrity: sha512-sUxqpA1+JxnDWYjO6ihiLWNJl94WzjlhnDpozfBeC+w8Mpejjsc8JuxyC3Xisimj/gp5OYaJ7nd4fM6wepzhEQ==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + module-alias@2.2.3: + resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nano-spawn@1.0.1: + resolution: {integrity: sha512-BfcvzBlUTxSDWfT+oH7vd6CbUV+rThLLHCIym/QO6GGLBsyVXleZs00fto2i2jzC/wPiBYk5jyOmpXWg4YopiA==} + engines: {node: '>=20.18'} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-postinstall@0.2.3: + resolution: {integrity: sha512-Mi7JISo/4Ij2tDZ2xBE2WH+/KvVlkhA6juEjpEeRAVPNCpN3nxJo/5FhDNKgBcdmcmhaH6JjgST4xY/23ZYK0w==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + + nypm@0.6.0: + resolution: {integrity: sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + os-locale-s-fix@1.0.8-fix-1: + resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} + engines: {node: '>=10', yarn: ^1.22.4} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + + parse-css-font@4.0.0: + resolution: {integrity: sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==} + + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-headers@2.0.6: + resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} + + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + phin@2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + phin@3.7.1: + resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} + engines: {node: '>= 8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia-plugin-persistedstate@4.1.3: + resolution: {integrity: sha512-5Rad7oSoEh0na+j4jEViVQMtAYE38KjU7ixKc+am33QX/clJ1mb19zTZqMJXvq+PnQW7uuEuL33Q6NL0GbkfWw==} + peerDependencies: + '@pinia/nuxt': '>=0.5.0' + pinia: '>=2.0.0' + peerDependenciesMeta: + '@pinia/nuxt': + optional: true + pinia: + optional: true + + pinia@2.2.4: + resolution: {integrity: sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==} + 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 + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.1.0: + resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + pnpm-workspace-yaml@0.3.1: + resolution: {integrity: sha512-3nW5RLmREmZ8Pm8MbPsO2RM+99RRjYd25ynj3NV0cFsN7CcEl4sDFzgoFmSyduFwxFQ2Qbu3y2UdCh6HlyUOeA==} + + postcss-html@1.8.0: + resolution: {integrity: sha512-5mMeb1TgLWoRKxZ0Xh9RZDfwUUIqRrcxO2uXO+Ezl1N5lqpCiSU5Gk6+1kZediBfBHFtPCdopr2UZ2SgUsKcgQ==} + engines: {node: ^12 || >=14} + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@4.3.1: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode-reader@1.0.4: + resolution: {integrity: sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==} + + qrcode-terminal@0.12.0: + resolution: {integrity: sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==} + hasBin: true + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-area-insets@1.4.1: + resolution: {integrity: sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass-loader@16.0.5: + resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + + sass@1.79.6: + resolution: {integrity: sha512-PVVjeeiUGx6Nj4PtEE/ecwu8ltwfPKzHxbbVmmLj4l1FYHhOyfA0scuVF8sVaa+b+VY4z7BVKjKq0cPUQdUU3g==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + select@1.1.2: + resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-git-hooks@2.13.0: + resolution: {integrity: sha512-N+goiLxlkHJlyaYEglFypzVNMaNplPAk5syu0+OPp/Bk6dwVoXF6FfOw2vO0Dp+JHsBaI+w6cm8TnFl2Hw6tDA==} + hasBin: true + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + + stylelint-config-html@1.1.0: + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-recess-order@6.0.0: + resolution: {integrity: sha512-1KqrttqpIrCYFAVQ1/bbgXo7EvvcjmkxxmnzVr+U66Xr2OlrNZqQ5+44Tmct6grCWY6wGTIBh2tSANqcmwIM2g==} + peerDependencies: + stylelint: '>=16' + + stylelint-config-recommended-vue@1.6.0: + resolution: {integrity: sha512-syk1adIHvbH2T1OiR/spUK4oQy35PZIDw8Zmc7E0+eVK9Z9SK3tdMpGRT/bgGnAPpMt/WaL9K1u0tlF6xM0sMQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-recommended@16.0.0: + resolution: {integrity: sha512-4RSmPjQegF34wNcK1e1O3Uz91HN8P1aFdFzio90wNK9mjgAI19u5vsU868cVZboKzCaa5XbpvtTzAAGQAxpcXA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.16.0 + + stylelint-config-standard-vue@1.0.0: + resolution: {integrity: sha512-wAzU7p6DSlo04pWfCbOcaMq09Nojt0FEsbdxhCBTdC7IguD9ZVl7FP/bvyA0HAHjZGC4JkW7m6WiQaoVMDSuFw==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-standard@38.0.0: + resolution: {integrity: sha512-uj3JIX+dpFseqd/DJx8Gy3PcRAJhlEZ2IrlFOc4LUxBX/PNMEQ198x7LCOE2Q5oT9Vw8nyc4CIL78xSqPr6iag==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.18.0 + + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + + stylelint@16.19.1: + resolution: {integrity: sha512-C1SlPZNMKl+d/C867ZdCRthrS+6KuZ3AoGW113RZCOL0M8xOGpgx7G70wq7lFvqvm4dcfdGFVLB/mNaLFChRKw==} + engines: {node: '>=18.12.0'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.10.3: + resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + tiny-emitter@2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + unconfig@0.5.5: + resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==} + + unctx@2.4.1: + resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unimport@3.14.6: + resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==} + + unimport@4.1.1: + resolution: {integrity: sha512-j9+fijH6aDd05yv1fXlyt7HSxtOWtGtrZeYTVBsSUg57Iuf+Ps2itIZjeyu7bEQ4k0WOgYhHrdW8m/pJgOpl5g==} + engines: {node: '>=18.12.0'} + + unimport@5.0.1: + resolution: {integrity: sha512-1YWzPj6wYhtwHE+9LxRlyqP4DiRrhGfJxdtH475im8ktyZXO3jHj/3PZ97zDdvkYoovFdi0K4SKl3a7l92v3sQ==} + engines: {node: '>=18.12.0'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unocss-preset-weapp@66.0.1: + resolution: {integrity: sha512-92hfl2fYFIcl7eqVfuPWoxz58cweFFabfMVPbqK8oMtfkpN61AnjMzNKvGVkSCzBbNbTWJTM8S6/vT1ou8Hj9A==} + + unocss@0.63.6: + resolution: {integrity: sha512-OKJJKEFWVz+Lsf3JdOgRiRtL+QOUQRBov89taUcCPFPZtrhP6pPVFCZHD9qMvY4IChMX7dzalQax3ZXJ3hbtkQ==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.63.6 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-attributify-to-class@0.2.5: + resolution: {integrity: sha512-0lTUi01mI19PmTTX4420QO6gJFic1wK4LqNnHeBNDrthQEKI0xw/lYg0bGnWYgPmyqXz88hAdLG+ibaypibXqg==} + + unplugin-auto-import@0.19.0: + resolution: {integrity: sha512-W97gTDEWu/L1EcKCXY5Ni8bsMW1E9kv12wYQv3mYpd7zcFctXYlLKsqeva6sbCQbzS8t9AG/XdU5/WkEJKPlFw==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-auto-import@19.1.0: + resolution: {integrity: sha512-B+TGBEBHqY9aR+7YfShfLujETOHstzpV+yaqgy5PkfV0QG7Py+TYMX7vJ9W4SrysHR+UzR+gzcx/nuZjmPeclA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-transform-class@0.5.3: + resolution: {integrity: sha512-4xBvfoeBDqlqi9aD0Hv3TTs8JpRs2h9l8LBMXIRXFNTf8biRk6hAQir+zEM/GpBKoMzvt7JqqbMIYzMazQZysQ==} + + unplugin-transform-class@0.6.0: + resolution: {integrity: sha512-6aYNOH6hEVbi38mc7yDQD7kEDESuLJ3FfB9/rB2vHZobK4ajDS6Jkh5EktJF4Ubkz/hQizpjZ4+XS1aMOM82yg==} + peerDependencies: + '@farmfe/core': '>=1' + '@nuxt/kit': ^3 + '@nuxt/schema': ^3 + esbuild: '*' + rollup: ^3 + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + '@farmfe/core': + optional: true + '@nuxt/kit': + optional: true + '@nuxt/schema': + optional: true + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + + unplugin-utils@0.2.4: + resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} + engines: {node: '>=18.12.0'} + + unplugin-vue-components@28.5.0: + resolution: {integrity: sha512-o7fMKU/uI8NiP+E0W62zoduuguWqB0obTfHFtbr1AP2uo2lhUPnPttWUE92yesdiYfo9/0hxIrj38FMc1eaySg==} + 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 + + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + + unplugin@1.7.1: + resolution: {integrity: sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==} + + unplugin@2.3.2: + resolution: {integrity: sha512-3n7YA46rROb3zSj8fFxtxC/PqoyvYQ0llwz9wtUPUutr9ig09C8gGo5CWCwHrUzlqC1LLR43kxp5vEIyH1ac1w==} + engines: {node: '>=18.12.0'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + unrs-resolver@1.7.2: + resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} + + untyped@2.0.0: + resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} + hasBin: true + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uview-plus@3.4.28: + resolution: {integrity: sha512-5mrXcrMKv4wh+voEFK9ilzKqHStftnodFRFNYrrm8BHZ9oh1rrf+BLjHi0rT2hCdy/x4cFceueN8nO+v2LpjXQ==} + engines: {HBuilderX: ^3.1.0} + + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-plugin-clean-build@1.4.1: + resolution: {integrity: sha512-QtO/b8sFNsgcrQG0jyeCN7gy8Pgi+xSgIKb0LGZFT8fx8nLClCpA1ttwKuv8X842waF8/tM/ey6YrD1tdD81/g==} + peerDependencies: + vite: '>= 3.0.0' + + vite-plugin-replace-image-url@1.4.1: + resolution: {integrity: sha512-GyYMRtNzSSs7Vg3TyzWe/ezV5FsPAbD3MhFfd10ztU118PRfpAR9iIUjOcSrv0u8ssxaNre3FJ1KGIwYDwnNnQ==} + peerDependencies: + vite: '>=3.0.0' + + vite-plugin-restart@0.4.2: + resolution: {integrity: sha512-9aWN2ScJ8hbT7aC8SDeZnsbWapnslz1vhNq6Vgf2GU9WdN4NExlrWhtnu7pmtOUG3Guj8y6lPcUZ+ls7SVP33w==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + + vite@5.2.8: + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + 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 + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@10.1.3: + resolution: {integrity: sha512-dbCBnd2e02dYWsXoqX5yKUZlOt+ExIpq7hmHKPb5ZqKcjf++Eo0hMseFTZMLKThrUk61m+Uv6A2YSBve6ZvuDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + vue-flow-layout@0.0.5: + resolution: {integrity: sha512-lZlqQ/Se1trGMtBMneZDWaiQiQBuxU8ivZ+KpJMem5zKROFpzuPq9KqyWABbSYbxq0qhqZs1I4DBwrY041rtOA==} + + vue-i18n@9.1.9: + resolution: {integrity: sha512-JeRdNVxS2OGp1E+pye5XB6+M6BBkHwAv9C80Q7+kzoMdUDGRna06tjC0vCB/jDX9aWrl5swxOMFcyAr7or8XTA==} + engines: {node: '>= 10'} + peerDependencies: + vue: ^3.0.0 + + vue-router@4.5.1: + resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==} + peerDependencies: + vue: ^3.2.0 + + vue-tsc@2.2.10: + resolution: {integrity: sha512-jWZ1xSaNbabEV3whpIDMbjVSVawjAyW+x1n3JeGQo7S0uv2n9F/JMgWW90tGWNFRKya4YwKMZgCtr0vRAM7DeQ==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.4.21: + resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest@1.8.0: + resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} + engines: {node: '>=0.4.0'} + + xregexp@3.1.0: + resolution: {integrity: sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml-eslint-parser@1.3.0: + resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} + engines: {node: ^14.17.0 || >=16.0.0} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + z-paging@2.8.6: + resolution: {integrity: sha512-UdmHuu08p0TFQQX+JVW5vj2/VKyBb0g3NWJkCjIzWcCwdWQjaNOCOjodISvfpriDdjB2IvFo0cdWc6XYkyg3DA==} + engines: {HBuilderX: ^3.0.7} + + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/eslint-config@4.13.0(@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(@unocss/eslint-plugin@0.63.6(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(@vue/compiler-sfc@3.5.13)(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@clack/prompts': 0.10.1 + '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint/markdown': 6.4.0 + '@stylistic/eslint-plugin': 4.2.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@vitest/eslint-plugin': 1.1.44(@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + ansis: 3.17.0 + cac: 6.7.14 + eslint: 9.26.0(jiti@2.4.2) + eslint-config-flat-gitignore: 2.1.0(eslint@9.26.0(jiti@2.4.2)) + eslint-flat-config-utils: 2.0.1 + eslint-merge-processors: 2.0.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-antfu: 3.1.1(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-command: 3.2.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-jsdoc: 50.6.14(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-jsonc: 2.20.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-n: 17.18.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 4.12.3(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-pnpm: 0.3.1(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-regexp: 2.7.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-toml: 0.12.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-unicorn: 59.0.1(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-vue: 10.1.0(eslint@9.26.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.26.0(jiti@2.4.2))) + eslint-plugin-yml: 1.18.0(eslint@9.26.0(jiti@2.4.2)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.26.0(jiti@2.4.2)) + globals: 16.1.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 1.1.1 + parse-gitignore: 2.0.0 + toml-eslint-parser: 0.10.0 + vue-eslint-parser: 10.1.3(eslint@9.26.0(jiti@2.4.2)) + yaml-eslint-parser: 1.3.0 + optionalDependencies: + '@unocss/eslint-plugin': 0.63.6(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@0.7.10': {} + + '@antfu/utils@8.1.1': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.2': {} + + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.1': + dependencies: + '@babel/types': 7.27.1 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.27.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.27.1 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-wrap-function': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-block-scoping@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + + '@babel/plugin-transform-destructuring@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-object-rest-spread@7.27.2(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1) + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regenerator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.27.2(@babel/core@7.27.1)': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.1) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-block-scoping': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-object-rest-spread': 7.27.2(@babel/core@7.27.1) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-regenerator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.1) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.1) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.1) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.1) + core-js-compat: 3.42.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.27.1 + esutils: 2.0.3 + + '@babel/runtime@7.27.1': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@clack/core@0.4.2': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.10.1': + dependencies: + '@clack/core': 0.4.2 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + + '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@dcloudio/types@3.4.15': {} + + '@dcloudio/uni-app-plus@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-app-vite': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-app-vue': 3.0.0-4060420250429001 + debug: 4.4.0 + fs-extra: 10.1.0 + licia: 1.48.0 + postcss-selector-parser: 6.1.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-uts@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-console': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + '@dcloudio/uni-nvue-styler': 3.0.0-4060420250429001 + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + '@rollup/pluginutils': 5.1.4 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/consolidate': 1.0.0 + '@vue/shared': 3.4.21 + debug: 4.4.0 + es-module-lexer: 1.7.0 + estree-walker: 2.0.2 + fs-extra: 10.1.0 + magic-string: 0.30.17 + picocolors: 1.1.1 + source-map-js: 1.2.1 + unimport: 4.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-app-vite@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + '@dcloudio/uni-nvue-styler': 3.0.0-4060420250429001 + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@rollup/pluginutils': 5.1.4 + '@vitejs/plugin-vue': 5.1.0(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3)) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + debug: 4.4.0 + fs-extra: 10.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-vue@3.0.0-4060420250429001': {} + + '@dcloudio/uni-app@3.0.0-4060420250429001(@dcloudio/types@3.4.15)(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/types': 3.4.15 + '@dcloudio/uni-cloud': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-components': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-console': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + '@dcloudio/uni-push': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@dcloudio/uni-stat': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-automator@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + address: 1.2.2 + cross-env: 7.0.3 + debug: 4.4.0 + default-gateway: 6.0.3 + fs-extra: 10.1.0 + jest: 27.0.4 + jest-environment-node: 27.5.1 + jsonc-parser: 3.3.1 + licia: 1.48.0 + merge: 2.1.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-cli-shared@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 5.1.4 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.8.3)) + '@vue/shared': 3.4.21 + adm-zip: 0.5.16 + autoprefixer: 10.4.21(postcss@8.5.3) + base64url: 3.0.1 + chokidar: 3.6.0 + compare-versions: 3.6.0 + debug: 4.4.0 + es-module-lexer: 1.7.0 + esbuild: 0.20.2 + estree-walker: 2.0.2 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + isbinaryfile: 5.0.4 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.4 + magic-string: 0.30.17 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.2.3 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.1.1 + postcss-import: 14.1.0(postcss@8.5.3) + postcss-load-config: 3.1.4(postcss@8.5.3) + postcss-modules: 4.3.1(postcss@8.5.3) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + source-map-js: 1.2.1 + tapable: 2.2.1 + unimport: 4.1.1 + unplugin-auto-import: 19.1.0(@nuxt/kit@3.17.2) + xregexp: 3.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cloud@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@vue/shared': 3.4.21 + fast-glob: 3.3.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-components@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cloud': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-h5': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-console@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + fs-extra: 10.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vite@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@rollup/pluginutils': 5.1.4 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.8.3)) + '@vue/shared': 3.4.21 + debug: 4.4.0 + fs-extra: 10.1.0 + mime: 3.0.0 + module-alias: 2.2.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vue@3.0.0-4060420250429001(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.8.3)) + transitivePeerDependencies: + - vue + + '@dcloudio/uni-h5@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-h5-vite': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-h5-vue': 3.0.0-4060420250429001(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.8.3)) + '@vue/shared': 3.4.21 + debug: 4.4.0 + localstorage-polyfill: 1.0.1 + postcss-selector-parser: 6.1.2 + safe-area-insets: 1.4.1 + vue-router: 4.5.1(vue@3.4.21(typescript@5.8.3)) + xmlhttprequest: 1.8.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-i18n@3.0.0-4060420250429001': {} + + '@dcloudio/uni-mp-compiler@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vite@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-i18n': 3.0.0-4060420250429001 + '@dcloudio/uni-mp-compiler': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4060420250429001 + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + debug: 4.4.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vue@3.0.0-4060420250429001': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@vue/shared': 3.4.21 + + '@dcloudio/uni-mp-weixin@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4060420250429001 + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@vue/shared': 3.4.21 + jimp: 0.10.3 + licia: 1.48.0 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-nvue-styler@3.0.0-4060420250429001': + dependencies: + parse-css-font: 4.0.0 + postcss: 8.5.3 + + '@dcloudio/uni-push@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-shared@3.0.0-4060420250429001': + dependencies: + '@vue/shared': 3.4.21 + + '@dcloudio/uni-stacktracey@3.0.0-4060420250429001': {} + + '@dcloudio/uni-stat@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + debug: 4.4.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/vite-plugin-uni@3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) + '@dcloudio/uni-cli-shared': 3.0.0-4060420250429001(@nuxt/kit@3.17.2)(postcss@8.5.3)(vue@3.4.21(typescript@5.8.3)) + '@dcloudio/uni-shared': 3.0.0-4060420250429001 + '@rollup/pluginutils': 5.1.4 + '@vitejs/plugin-legacy': 5.3.2(terser@5.39.0)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + '@vitejs/plugin-vue': 5.1.0(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3)) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + cac: 6.7.9 + debug: 4.4.0 + estree-walker: 2.0.2 + express: 4.21.2 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.3.1 + magic-string: 0.30.17 + picocolors: 1.1.1 + terser: 5.39.0 + unplugin-auto-import: 19.1.0(@nuxt/kit@3.17.2) + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@emnapi/core@1.4.3': + dependencies: + '@emnapi/wasi-threads': 1.0.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@es-joy/jsdoccomment@0.49.0': + dependencies: + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@es-joy/jsdoccomment@0.50.0': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.7 + '@typescript-eslint/types': 8.32.0 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.25.4': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.25.4': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.25.4': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.25.4': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.25.1': {} + + '@esbuild/darwin-arm64@0.25.4': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.25.1': {} + + '@esbuild/darwin-x64@0.25.4': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.25.4': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.25.4': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.25.4': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-arm@0.25.4': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.25.4': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.25.4': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.25.4': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.25.4': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.25.4': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.25.4': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/linux-x64@0.25.4': + optional: true + + '@esbuild/netbsd-arm64@0.25.4': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.25.4': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.25.4': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.25.4': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.25.4': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.25.4': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.25.4': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@esbuild/win32-x64@0.25.4': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.26.0(jiti@2.4.2))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.26.0(jiti@2.4.2) + ignore: 5.3.2 + + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': + dependencies: + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.2.9(eslint@9.26.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.26.0(jiti@2.4.2) + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.26.0': {} + + '@eslint/markdown@6.4.0': + dependencies: + '@eslint/core': 0.10.0 + '@eslint/plugin-kit': 0.2.8 + mdast-util-from-markdown: 2.0.2 + mdast-util-frontmatter: 2.0.1 + mdast-util-gfm: 3.1.0 + micromark-extension-frontmatter: 2.0.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify-json/mdi@1.2.3': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.0 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.1 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + + '@intlify/core-base@9.1.9': + dependencies: + '@intlify/devtools-if': 9.1.9 + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + + '@intlify/devtools-if@9.1.9': + dependencies: + '@intlify/shared': 9.1.9 + + '@intlify/message-compiler@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + source-map: 0.6.1 + + '@intlify/message-resolver@9.1.9': {} + + '@intlify/runtime@9.1.9': + dependencies: + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + + '@intlify/shared@9.1.9': {} + + '@intlify/vue-devtools@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/core@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + jest-mock: 27.5.1 + + '@jest/fake-timers@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 22.15.17 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + '@jest/globals@27.5.1': + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + '@jest/reporters@27.5.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + + '@jest/source-map@27.5.1': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/test-result@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@27.5.1': + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + + '@jest/transform@27.5.1': + dependencies: + '@babel/core': 7.27.1 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.15.17 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.42.0 + + '@jimp/core@0.10.3': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.42.0 + exif-parser: 0.1.12 + file-type: 9.0.0 + load-bmfont: 1.4.2 + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + transitivePeerDependencies: + - debug + + '@jimp/custom@0.10.3': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/core': 0.10.3 + core-js: 3.42.0 + transitivePeerDependencies: + - debug + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + tinycolor2: 1.6.0 + + '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + load-bmfont: 1.4.2 + transitivePeerDependencies: + - debug + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-circle': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-contain': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-cover': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-displace': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-dither': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-fisheye': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-flip': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-gaussian': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-invert': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-mask': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-normalize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-print': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-shadow': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-threshold': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + core-js: 3.42.0 + timm: 1.7.1 + transitivePeerDependencies: + - debug + + '@jimp/png@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.42.0 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + core-js: 3.42.0 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/bmp': 0.10.3(@jimp/custom@0.10.3) + '@jimp/custom': 0.10.3 + '@jimp/gif': 0.10.3(@jimp/custom@0.10.3) + '@jimp/jpeg': 0.10.3(@jimp/custom@0.10.3) + '@jimp/png': 0.10.3(@jimp/custom@0.10.3) + '@jimp/tiff': 0.10.3(@jimp/custom@0.10.3) + core-js: 3.42.0 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.27.1 + core-js: 3.42.0 + regenerator-runtime: 0.13.11 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@keyv/serialize@1.0.3': + dependencies: + buffer: 6.0.3 + + '@meoc/utils@0.2.10': + dependencies: + dayjs: 1.11.13 + + '@modelcontextprotocol/sdk@1.11.1': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.4 + zod-to-json-schema: 3.24.5(zod@3.24.4) + transitivePeerDependencies: + - supports-color + + '@napi-rs/wasm-runtime@0.2.9': + dependencies: + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@nuxt/kit@3.17.2': + dependencies: + c12: 3.0.3 + consola: 3.4.2 + defu: 6.1.4 + destr: 2.0.5 + errx: 0.1.0 + exsolve: 1.0.5 + ignore: 7.0.4 + jiti: 2.4.2 + klona: 2.0.6 + knitwork: 1.2.0 + mlly: 1.7.4 + ohash: 2.0.11 + pathe: 2.0.3 + pkg-types: 2.1.0 + scule: 1.3.0 + semver: 7.7.1 + std-env: 3.9.0 + tinyglobby: 0.2.13 + ufo: 1.6.1 + unctx: 2.4.1 + unimport: 5.0.1 + untyped: 2.0.0 + transitivePeerDependencies: + - magicast + + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + + '@pkgr/core@0.1.2': {} + + '@pkgr/core@0.2.4': {} + + '@polka/url@1.0.0-next.29': {} + + '@rollup/pluginutils@5.1.4': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 4.0.2 + + '@rollup/rollup-android-arm-eabi@4.40.2': + optional: true + + '@rollup/rollup-android-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.38.0': {} + + '@rollup/rollup-darwin-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-x64@4.38.0': {} + + '@rollup/rollup-darwin-x64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@stylistic/eslint-plugin@4.2.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@tootallnate/once@1.1.2': {} + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.1 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.1 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.7': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.15.17 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@22.15.17': + dependencies: + undici-types: 6.21.0 + + '@types/prettier@2.7.3': {} + + '@types/stack-utils@2.0.3': {} + + '@types/unist@3.0.3': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.0 + '@typescript-eslint/type-utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.0 + eslint: 9.26.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.0 + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.0 + debug: 4.4.0 + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.32.0': + dependencies: + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/visitor-keys': 8.32.0 + + '@typescript-eslint/type-utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.26.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.32.0': {} + + '@typescript-eslint/typescript-estree@8.32.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/visitor-keys': 8.32.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.0 + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.32.0': + dependencies: + '@typescript-eslint/types': 8.32.0 + eslint-visitor-keys: 4.2.0 + + '@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.8.3)(vue@3.4.21(typescript@5.8.3))': + dependencies: + typescript: 5.8.3 + vue: 3.4.21(typescript@5.8.3) + + '@unocss/astro@0.63.6(typescript@5.8.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))': + dependencies: + '@unocss/core': 0.63.6 + '@unocss/reset': 0.63.6 + '@unocss/vite': 0.63.6(typescript@5.8.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + optionalDependencies: + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + + '@unocss/cli@0.63.6': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.4 + '@unocss/config': 0.63.6 + '@unocss/core': 0.63.6 + '@unocss/preset-uno': 0.63.6 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.17 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.13 + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/config@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + unconfig: 0.5.5 + transitivePeerDependencies: + - supports-color + + '@unocss/core@0.63.6': {} + + '@unocss/core@66.1.1': {} + + '@unocss/eslint-plugin@0.63.6(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@unocss/config': 0.63.6 + '@unocss/core': 0.63.6 + magic-string: 0.30.17 + synckit: 0.9.2 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/extractor-arbitrary-variants@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + + '@unocss/extractor-arbitrary-variants@66.1.1': + dependencies: + '@unocss/core': 66.1.1 + + '@unocss/inspector@0.63.6(typescript@5.8.3)': + dependencies: + '@unocss/core': 0.63.6 + '@unocss/rule-utils': 0.63.6 + gzip-size: 6.0.0 + sirv: 2.0.4 + vue-flow-layout: 0.0.5(typescript@5.8.3) + transitivePeerDependencies: + - typescript + + '@unocss/postcss@0.63.6(postcss@8.5.3)': + dependencies: + '@unocss/config': 0.63.6 + '@unocss/core': 0.63.6 + '@unocss/rule-utils': 0.63.6 + css-tree: 3.1.0 + postcss: 8.5.3 + tinyglobby: 0.2.13 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-attributify@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + + '@unocss/preset-icons@0.63.6': + dependencies: + '@iconify/utils': 2.3.0 + '@unocss/core': 0.63.6 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + '@unocss/extractor-arbitrary-variants': 0.63.6 + '@unocss/rule-utils': 0.63.6 + + '@unocss/preset-tagify@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + + '@unocss/preset-typography@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + '@unocss/preset-mini': 0.63.6 + + '@unocss/preset-uno@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + '@unocss/preset-mini': 0.63.6 + '@unocss/preset-wind': 0.63.6 + '@unocss/rule-utils': 0.63.6 + + '@unocss/preset-web-fonts@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + ofetch: 1.4.1 + + '@unocss/preset-wind@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + '@unocss/preset-mini': 0.63.6 + '@unocss/rule-utils': 0.63.6 + + '@unocss/reset@0.63.6': {} + + '@unocss/rule-utils@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + magic-string: 0.30.17 + + '@unocss/rule-utils@66.1.1': + dependencies: + '@unocss/core': 66.1.1 + magic-string: 0.30.17 + + '@unocss/transformer-attributify-jsx@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + + '@unocss/transformer-compile-class@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + + '@unocss/transformer-directives@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + '@unocss/rule-utils': 0.63.6 + css-tree: 3.1.0 + + '@unocss/transformer-variant-group@0.63.6': + dependencies: + '@unocss/core': 0.63.6 + + '@unocss/vite@0.63.6(typescript@5.8.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.4 + '@unocss/config': 0.63.6 + '@unocss/core': 0.63.6 + '@unocss/inspector': 0.63.6(typescript@5.8.3) + chokidar: 3.6.0 + magic-string: 0.30.17 + tinyglobby: 0.2.13 + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + + '@unrs/resolver-binding-darwin-arm64@1.7.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + dependencies: + '@napi-rs/wasm-runtime': 0.2.9 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + optional: true + + '@vitejs/plugin-legacy@5.3.2(terser@5.39.0)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))': + dependencies: + '@babel/core': 7.27.1 + '@babel/preset-env': 7.27.2(@babel/core@7.27.1) + browserslist: 4.24.5 + browserslist-to-esbuild: 2.1.1(browserslist@4.24.5) + core-js: 3.42.0 + magic-string: 0.30.17 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.39.0 + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) + '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.27.1) + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + vue: 3.4.21(typescript@5.8.3) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.1.0(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0))(vue@3.4.21(typescript@5.8.3))': + dependencies: + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + vue: 3.4.21(typescript@5.8.3) + + '@vitest/eslint-plugin@1.1.44(@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + optionalDependencies: + typescript: 5.8.3 + + '@volar/language-core@2.4.13': + dependencies: + '@volar/source-map': 2.4.13 + + '@volar/source-map@2.4.13': {} + + '@volar/typescript@2.4.13': + dependencies: + '@volar/language-core': 2.4.13 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/babel-helper-vue-transform-on@1.4.0': {} + + '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.27.1)': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + '@vue/babel-helper-vue-transform-on': 1.4.0 + '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.27.1) + '@vue/shared': 3.5.13 + optionalDependencies: + '@babel/core': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.27.1)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/parser': 7.27.2 + '@vue/compiler-sfc': 3.5.13 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.4.21': + dependencies: + '@babel/parser': 7.27.2 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.27.2 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.4.21': + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.4.21': + dependencies: + '@babel/parser': 7.27.2 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.3 + source-map-js: 1.2.1 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.27.2 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.3 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.4.21': + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/consolidate@1.0.0': {} + + '@vue/devtools-api@6.6.4': {} + + '@vue/language-core@2.2.10(typescript@5.8.3)': + dependencies: + '@volar/language-core': 2.4.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.13 + alien-signals: 1.0.13 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.8.3 + + '@vue/reactivity@3.4.21': + dependencies: + '@vue/shared': 3.4.21 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.4.21': + dependencies: + '@vue/reactivity': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-dom@3.4.21': + dependencies: + '@vue/runtime-core': 3.4.21 + '@vue/shared': 3.4.21 + csstype: 3.1.3 + + '@vue/runtime-dom@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.8.3))': + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.4.21(typescript@5.8.3) + + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.8.3) + + '@vue/shared@3.4.21': {} + + '@vue/shared@3.5.13': {} + + abab@2.0.6: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn-walk@7.2.0: {} + + acorn@7.4.1: {} + + acorn@8.14.1: {} + + address@1.2.2: {} + + adm-zip@0.5.16: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alien-signals@1.0.13: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + ansis@3.17.0: {} + + any-base@1.1.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + are-docs-informative@0.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + array-union@2.1.0: {} + + astral-regex@2.0.0: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.21(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-lite: 1.0.30001717 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + babel-jest@27.5.1(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.27.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@27.5.1: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + core-js-compat: 3.42.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) + + babel-preset-jest@27.5.1(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + binary-extensions@2.3.0: {} + + bmp-js@0.1.0: {} + + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-process-hrtime@1.0.0: {} + + browserslist-to-esbuild@2.1.1(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + meow: 13.2.0 + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001717 + electron-to-chromium: 1.5.151 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-equal@0.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@5.0.0: {} + + bundle-require@5.1.0(esbuild@0.23.1): + dependencies: + esbuild: 0.23.1 + load-tsconfig: 0.2.5 + + bytes@3.1.2: {} + + c12@3.0.3: + dependencies: + chokidar: 4.0.3 + confbox: 0.2.2 + defu: 6.1.4 + dotenv: 16.5.0 + exsolve: 1.0.5 + giget: 2.0.0 + jiti: 2.4.2 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + pkg-types: 2.1.0 + rc9: 2.1.2 + + cac@6.7.14: {} + + cac@6.7.9: {} + + cacheable@1.9.0: + dependencies: + hookified: 1.9.0 + keyv: 5.3.3 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001717: {} + + ccount@2.0.1: {} + + centra@2.7.0: + dependencies: + follow-redirects: 1.15.9 + transitivePeerDependencies: + - debug + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + char-regex@1.0.2: {} + + character-entities@2.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + ci-info@3.9.0: {} + + ci-info@4.2.0: {} + + citty@0.1.6: + dependencies: + consola: 3.4.2 + + cjs-module-lexer@1.4.3: {} + + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + clean-stack@2.2.0: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + clipboard@2.0.11: + dependencies: + good-listener: 1.2.2 + select: 1.1.2 + tiny-emitter: 2.1.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@13.1.0: {} + + commander@2.20.3: {} + + comment-parser@1.4.1: {} + + compare-versions@3.6.0: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.2: {} + + consola@3.4.2: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.1: {} + + cookie@0.7.2: {} + + core-js-compat@3.42.0: + dependencies: + browserslist: 4.24.5 + + core-js@3.42.0: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-font-size-keywords@1.0.0: {} + + css-font-stretch-keywords@1.0.1: {} + + css-font-style-keywords@1.0.1: {} + + css-font-weight-keywords@1.0.0: {} + + css-functions-list@3.2.3: {} + + css-list-helpers@2.0.0: {} + + css-system-font-keywords@1.0.0: {} + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + cssesc@3.0.0: {} + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + csstype@3.1.3: {} + + czg@1.11.1: {} + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + dayjs@1.11.13: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decimal.js@10.5.0: {} + + decode-named-character-reference@1.1.0: + dependencies: + character-entities: 2.0.2 + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + deep-pick-omit@1.2.1: {} + + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + define-lazy-prop@2.0.0: {} + + defu@6.1.4: {} + + del@6.1.1: + dependencies: + globby: 11.1.0 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + + delayed-stream@1.0.0: {} + + delegate@3.2.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-libc@1.0.3: {} + + detect-newline@3.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff-sequences@27.5.1: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + dom-walk@0.1.2: {} + + domelementtype@2.3.0: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dotenv@16.5.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.151: {} + + emittery@0.8.1: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + errx@0.1.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-compat-utils@0.5.1(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + semver: 7.7.1 + + eslint-compat-utils@0.6.5(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + semver: 7.7.1 + + eslint-config-flat-gitignore@2.1.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@eslint/compat': 1.2.9(eslint@9.26.0(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) + + eslint-flat-config-utils@2.0.1: + dependencies: + pathe: 2.0.3 + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-json-compat-utils@0.2.1(eslint@9.26.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.0 + + eslint-merge-processors@2.0.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + + eslint-plugin-antfu@3.1.1(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + + eslint-plugin-command@3.2.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.50.0 + eslint: 9.26.0(jiti@2.4.2) + + eslint-plugin-es-x@7.8.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.26.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.26.0(jiti@2.4.2)) + + eslint-plugin-import-x@4.11.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + comment-parser: 1.4.1 + debug: 4.4.0 + eslint: 9.26.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.10.0 + is-glob: 4.0.3 + minimatch: 10.0.1 + semver: 7.7.1 + stable-hash: 0.0.5 + tslib: 2.8.1 + unrs-resolver: 1.7.2 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsdoc@50.6.14(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.49.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.26.0(jiti@2.4.2) + espree: 10.3.0 + esquery: 1.6.0 + parse-imports-exports: 0.2.4 + semver: 7.7.1 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-jsonc@2.20.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.26.0(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.26.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + espree: 10.3.0 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.10.3 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-n@17.18.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + enhanced-resolve: 5.18.1 + eslint: 9.26.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.26.0(jiti@2.4.2)) + get-tsconfig: 4.10.0 + globals: 15.15.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.7.1 + + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-perfectionist@4.12.3(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-pnpm@0.3.1(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + find-up-simple: 1.0.1 + jsonc-eslint-parser: 2.4.0 + pathe: 2.0.3 + pnpm-workspace-yaml: 0.3.1 + tinyglobby: 0.2.13 + yaml-eslint-parser: 1.3.0 + + eslint-plugin-regexp@2.7.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.26.0(jiti@2.4.2) + jsdoc-type-pratt-parser: 4.1.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-toml@0.12.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.26.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.26.0(jiti@2.4.2)) + lodash: 4.17.21 + toml-eslint-parser: 0.10.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-unicorn@59.0.1(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint/plugin-kit': 0.2.8 + ci-info: 4.2.0 + clean-regexp: 1.0.0 + core-js-compat: 3.42.0 + eslint: 9.26.0(jiti@2.4.2) + esquery: 1.6.0 + find-up-simple: 1.0.1 + globals: 16.1.0 + indent-string: 5.0.0 + is-builtin-module: 5.0.0 + jsesc: 3.1.0 + pluralize: 8.0.0 + regexp-tree: 0.1.27 + regjsparser: 0.12.0 + semver: 7.7.1 + strip-indent: 4.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + + eslint-plugin-vue@10.1.0(eslint@9.26.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.26.0(jiti@2.4.2))): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.7.1 + vue-eslint-parser: 10.1.3(eslint@9.26.0(jiti@2.4.2)) + xml-name-validator: 4.0.0 + + eslint-plugin-yml@1.18.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.26.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.26.0(jiti@2.4.2)) + natural-compare: 1.4.0 + yaml-eslint-parser: 1.3.0 + transitivePeerDependencies: + - supports-color + + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.26.0(jiti@2.4.2)): + dependencies: + '@vue/compiler-sfc': 3.5.13 + eslint: 9.26.0(jiti@2.4.2) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.26.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.13.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.26.0 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@modelcontextprotocol/sdk': 1.11.1 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + zod: 3.24.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@5.0.1: {} + + eventsource-parser@3.0.1: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.1 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exif-parser@0.1.12: {} + + exit@0.1.2: {} + + expect@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.0.5: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@10.1.0: + dependencies: + flat-cache: 6.1.9 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-type@9.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@2.1.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + find-up-simple@1.0.1: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flat-cache@6.1.9: + dependencies: + cacheable: 1.9.0 + flatted: 3.3.3 + hookified: 1.9.0 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@3.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + format@0.2.2: {} + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fresh@2.0.0: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.3.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + giget@2.0.0: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.4 + node-fetch-native: 1.6.6 + nypm: 0.6.0 + pathe: 2.0.3 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@11.0.2: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.0 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.15.0: {} + + globals@16.1.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globjoin@0.1.4: {} + + good-listener@1.2.2: + dependencies: + delegate: 3.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-sum@2.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + hookified@1.9.0: {} + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-escaper@2.0.2: {} + + html-tags@3.3.1: {} + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + icss-replace-symbols@1.1.0: {} + + icss-utils@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.4: {} + + immutable@4.3.7: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + importx@0.4.4: + dependencies: + bundle-require: 5.1.0(esbuild@0.23.1) + debug: 4.4.0 + esbuild: 0.23.1 + jiti: 2.0.0-beta.3 + jiti-v1: jiti@1.21.7 + pathe: 1.1.2 + tsx: 4.19.4 + transitivePeerDependencies: + - supports-color + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + indent-string@5.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + invert-kv@3.0.1: {} + + ipaddr.js@1.9.1: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@5.0.0: + dependencies: + builtin-modules: 5.0.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-function@1.0.2: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-cwd@2.2.0: {} + + is-path-inside@3.0.3: {} + + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-promise@4.0.0: {} + + is-stream@2.0.1: {} + + is-typedarray@1.0.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isbinaryfile@5.0.4: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@4.1.0: + dependencies: + '@isaacs/cliui': 8.0.2 + + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-circus@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-cli@27.5.1: + dependencies: + '@jest/core': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + jest-config: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-config@27.5.1: + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-docblock@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + jest-environment-jsdom@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + jest-get-type@27.5.1: {} + + jest-haste-map@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.15.17 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-leak-detector@27.5.1: + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-message-util@27.5.1: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + + jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + optionalDependencies: + jest-resolve: 27.5.1 + + jest-regex-util@27.5.1: {} + + jest-resolve-dependencies@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + + jest-resolve@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.10 + resolve.exports: 1.1.1 + slash: 3.0.0 + + jest-runner@27.5.1: + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-runtime@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-serializer@27.5.1: + dependencies: + '@types/node': 22.15.17 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.20.7 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + jest-watcher@27.5.1: + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 22.15.17 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.15.17 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@27.0.4: + dependencies: + '@jest/core': 27.5.1 + import-local: 3.2.0 + jest-cli: 27.5.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jimp@0.10.3: + dependencies: + '@babel/runtime': 7.27.1 + '@jimp/custom': 0.10.3 + '@jimp/plugins': 0.10.3(@jimp/custom@0.10.3) + '@jimp/types': 0.10.3(@jimp/custom@0.10.3) + core-js: 3.42.0 + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - debug + + jiti@1.21.7: {} + + jiti@2.0.0-beta.3: {} + + jiti@2.4.2: {} + + jpeg-js@0.3.7: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@4.1.0: {} + + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.14.1 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.5.0 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.3 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.10 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.14.1 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.7.1 + + jsonc-parser@3.3.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + keyv@5.3.3: + dependencies: + '@keyv/serialize': 1.0.3 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + klona@2.0.6: {} + + knitwork@1.2.0: {} + + known-css-properties@0.36.0: {} + + kolorist@1.8.0: {} + + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + licia@1.48.0: {} + + lilconfig@2.1.0: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + lint-staged@16.0.0: + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + debug: 4.4.0 + lilconfig: 3.1.3 + listr2: 8.3.3 + micromatch: 4.0.8 + nano-spawn: 1.0.1 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.7.1 + transitivePeerDependencies: + - supports-color + + listr2@8.3.3: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + load-bmfont@1.4.2: + dependencies: + buffer-equal: 0.0.1 + mime: 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.6 + phin: 3.7.1 + xhr: 2.6.0 + xtend: 4.0.2 + transitivePeerDependencies: + - debug + + load-tsconfig@0.2.5: {} + + loader-utils@3.3.1: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.4 + pkg-types: 1.3.1 + + local-pkg@1.1.1: + dependencies: + mlly: 1.7.4 + pkg-types: 2.1.0 + quansync: 0.2.10 + + localstorage-polyfill@1.0.1: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + lodash.merge@4.6.2: {} + + lodash.truncate@4.4.2: {} + + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + longest-streak@3.1.0: {} + + lru-cache@11.1.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@4.0.0: + dependencies: + semver: 7.7.1 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mathml-tag-names@2.1.3: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.12.2: {} + + media-typer@0.3.0: {} + + media-typer@1.1.0: {} + + meow@13.2.0: {} + + merge-descriptors@1.0.3: {} + + merge-descriptors@2.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + + min-indent@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + miniprogram-api-typings@4.0.7: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mlly@1.7.4: + dependencies: + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + module-alias@2.2.3: {} + + mrmime@2.0.1: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nano-spawn@1.0.1: {} + + nanoid@3.3.11: {} + + napi-postinstall@0.2.3: {} + + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + + negotiator@0.6.3: {} + + negotiator@1.0.0: {} + + neo-async@2.6.2: {} + + node-addon-api@7.1.1: {} + + node-fetch-native@1.6.6: {} + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nwsapi@2.2.20: {} + + nypm@0.6.0: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 2.1.0 + tinyexec: 0.3.2 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.6 + ufo: 1.6.1 + + ohash@2.0.11: {} + + omggif@1.0.10: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + os-locale-s-fix@1.0.8-fix-1: + dependencies: + lcid: 3.1.1 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-manager-detector@1.3.0: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + + parse-css-font@4.0.0: + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-list-helpers: 2.0.0 + css-system-font-keywords: 1.0.0 + unquote: 1.1.1 + + parse-gitignore@2.0.0: {} + + parse-headers@2.0.6: {} + + parse-imports-exports@0.2.4: + dependencies: + parse-statements: 1.0.11 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-statements@1.0.11: {} + + parse5@6.0.1: {} + + parseurl@1.3.3: {} + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + + path-to-regexp@0.1.12: {} + + path-to-regexp@8.2.0: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + phin@2.9.3: {} + + phin@3.7.1: + dependencies: + centra: 2.7.0 + transitivePeerDependencies: + - debug + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinia-plugin-persistedstate@4.1.3(pinia@2.2.4(typescript@5.8.3)(vue@3.4.21(typescript@5.8.3))): + dependencies: + '@nuxt/kit': 3.17.2 + deep-pick-omit: 1.2.1 + defu: 6.1.4 + destr: 2.0.5 + optionalDependencies: + pinia: 2.2.4(typescript@5.8.3)(vue@3.4.21(typescript@5.8.3)) + transitivePeerDependencies: + - magicast + + pinia@2.2.4(typescript@5.8.3)(vue@3.4.21(typescript@5.8.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@5.8.3) + vue-demi: 0.14.10(vue@3.4.21(typescript@5.8.3)) + optionalDependencies: + typescript: 5.8.3 + + pirates@4.0.7: {} + + pixelmatch@4.0.2: + dependencies: + pngjs: 3.4.0 + + pkce-challenge@5.0.0: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 + + pkg-types@2.1.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.5 + pathe: 2.0.3 + + pluralize@8.0.0: {} + + pngjs@3.4.0: {} + + pnpm-workspace-yaml@0.3.1: + dependencies: + yaml: 2.7.1 + + postcss-html@1.8.0: + dependencies: + htmlparser2: 8.0.2 + js-tokens: 9.0.1 + postcss: 8.5.3 + postcss-safe-parser: 6.0.0(postcss@8.5.3) + + postcss-import@14.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-load-config@3.1.4(postcss@8.5.3): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.5.3 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + + postcss-modules@4.3.1(postcss@8.5.3): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.5.3 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) + postcss-modules-scope: 3.2.1(postcss@8.5.3) + postcss-modules-values: 4.0.0(postcss@8.5.3) + string-hash: 1.1.3 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@6.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-safe-parser@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@8.0.2(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + qrcode-reader@1.0.4: {} + + qrcode-terminal@0.12.0: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + quansync@0.2.10: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + rc9@2.1.2: + dependencies: + defu: 6.1.4 + destr: 2.0.5 + + react-is@17.0.2: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@1.1.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@6.0.1: + dependencies: + glob: 11.0.2 + package-json-from-dist: 1.0.1 + + rollup-plugin-visualizer@5.14.0: + dependencies: + open: 8.4.2 + picomatch: 4.0.2 + source-map: 0.7.4 + yargs: 17.7.2 + + rollup@4.40.2: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 + fsevents: 2.3.3 + + router@2.2.0: + dependencies: + debug: 4.4.0 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-area-insets@1.4.1: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sass-loader@16.0.5(sass@1.79.6): + dependencies: + neo-async: 2.6.2 + optionalDependencies: + sass: 1.79.6 + + sass@1.79.6: + dependencies: + '@parcel/watcher': 2.5.1 + chokidar: 4.0.3 + immutable: 4.3.7 + source-map-js: 1.2.1 + + sax@1.4.1: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + + scule@1.3.0: {} + + select@1.1.2: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + send@1.2.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-git-hooks@2.13.0: {} + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + sprintf-js@1.0.3: {} + + stable-hash@0.0.5: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.1: {} + + std-env@3.9.0: {} + + string-argv@0.3.2: {} + + string-hash@1.1.3: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + + stylelint-config-html@1.1.0(postcss-html@1.8.0)(stylelint@16.19.1(typescript@5.8.3)): + dependencies: + postcss-html: 1.8.0 + stylelint: 16.19.1(typescript@5.8.3) + + stylelint-config-recess-order@6.0.0(stylelint@16.19.1(typescript@5.8.3)): + dependencies: + stylelint: 16.19.1(typescript@5.8.3) + stylelint-order: 6.0.4(stylelint@16.19.1(typescript@5.8.3)) + + stylelint-config-recommended-vue@1.6.0(postcss-html@1.8.0)(stylelint@16.19.1(typescript@5.8.3)): + dependencies: + postcss-html: 1.8.0 + semver: 7.7.1 + stylelint: 16.19.1(typescript@5.8.3) + stylelint-config-html: 1.1.0(postcss-html@1.8.0)(stylelint@16.19.1(typescript@5.8.3)) + stylelint-config-recommended: 16.0.0(stylelint@16.19.1(typescript@5.8.3)) + + stylelint-config-recommended@16.0.0(stylelint@16.19.1(typescript@5.8.3)): + dependencies: + stylelint: 16.19.1(typescript@5.8.3) + + stylelint-config-standard-vue@1.0.0(postcss-html@1.8.0)(stylelint@16.19.1(typescript@5.8.3)): + dependencies: + postcss-html: 1.8.0 + stylelint: 16.19.1(typescript@5.8.3) + stylelint-config-html: 1.1.0(postcss-html@1.8.0)(stylelint@16.19.1(typescript@5.8.3)) + stylelint-config-recommended-vue: 1.6.0(postcss-html@1.8.0)(stylelint@16.19.1(typescript@5.8.3)) + stylelint-config-standard: 38.0.0(stylelint@16.19.1(typescript@5.8.3)) + + stylelint-config-standard@38.0.0(stylelint@16.19.1(typescript@5.8.3)): + dependencies: + stylelint: 16.19.1(typescript@5.8.3) + stylelint-config-recommended: 16.0.0(stylelint@16.19.1(typescript@5.8.3)) + + stylelint-order@6.0.4(stylelint@16.19.1(typescript@5.8.3)): + dependencies: + postcss: 8.5.3 + postcss-sorting: 8.0.2(postcss@8.5.3) + stylelint: 16.19.1(typescript@5.8.3) + + stylelint@16.19.1(typescript@5.8.3): + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@dual-bundle/import-meta-resolve': 4.1.0 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.8.3) + css-functions-list: 3.2.3 + css-tree: 3.1.0 + debug: 4.4.0 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 10.1.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 7.0.4 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.36.0 + mathml-tag-names: 2.1.3 + meow: 13.2.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.1(postcss@8.5.3) + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + supports-hyperlinks: 3.2.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + symbol-tree@3.2.4: {} + + synckit@0.10.3: + dependencies: + '@pkgr/core': 0.2.4 + tslib: 2.8.1 + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.2 + tslib: 2.8.1 + + systemjs@6.15.1: {} + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tapable@2.2.1: {} + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + throat@6.0.2: {} + + timm@1.7.1: {} + + tiny-emitter@2.1.0: {} + + tinycolor2@1.6.0: {} + + tinyexec@0.3.2: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toml-eslint-parser@0.10.0: + dependencies: + eslint-visitor-keys: 3.4.3 + + totalist@3.0.1: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + tslib@2.8.1: {} + + tsx@4.19.4: + dependencies: + esbuild: 0.25.4 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@5.8.3: {} + + ufo@1.6.1: {} + + unconfig@0.5.5: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + importx: 0.4.4 + transitivePeerDependencies: + - supports-color + + unctx@2.4.1: + dependencies: + acorn: 8.14.1 + estree-walker: 3.0.3 + magic-string: 0.30.17 + unplugin: 2.3.2 + + undici-types@6.21.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unimport@3.14.6: + dependencies: + '@rollup/pluginutils': 5.1.4 + acorn: 8.14.1 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.3 + local-pkg: 1.1.1 + magic-string: 0.30.17 + mlly: 1.7.4 + pathe: 2.0.3 + picomatch: 4.0.2 + pkg-types: 1.3.1 + scule: 1.3.0 + strip-literal: 2.1.1 + unplugin: 1.16.1 + transitivePeerDependencies: + - rollup + + unimport@4.1.1: + dependencies: + acorn: 8.14.1 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.3 + local-pkg: 1.1.1 + magic-string: 0.30.17 + mlly: 1.7.4 + pathe: 2.0.3 + picomatch: 4.0.2 + pkg-types: 1.3.1 + scule: 1.3.0 + strip-literal: 3.0.0 + unplugin: 2.3.2 + unplugin-utils: 0.2.4 + + unimport@5.0.1: + dependencies: + acorn: 8.14.1 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.1.1 + magic-string: 0.30.17 + mlly: 1.7.4 + pathe: 2.0.3 + picomatch: 4.0.2 + pkg-types: 2.1.0 + scule: 1.3.0 + strip-literal: 3.0.0 + tinyglobby: 0.2.13 + unplugin: 2.3.2 + unplugin-utils: 0.2.4 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unocss-preset-weapp@66.0.1(@nuxt/kit@3.17.2)(esbuild@0.23.1)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)): + dependencies: + '@rollup/pluginutils': 5.1.4 + '@unocss/core': 66.1.1 + '@unocss/extractor-arbitrary-variants': 66.1.1 + '@unocss/rule-utils': 66.1.1 + unplugin-attributify-to-class: 0.2.5 + unplugin-transform-class: 0.6.0(@nuxt/kit@3.17.2)(esbuild@0.23.1)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + transitivePeerDependencies: + - '@farmfe/core' + - '@nuxt/kit' + - '@nuxt/schema' + - esbuild + - rollup + - vite + - webpack + + unocss@0.63.6(postcss@8.5.3)(typescript@5.8.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)): + dependencies: + '@unocss/astro': 0.63.6(typescript@5.8.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + '@unocss/cli': 0.63.6 + '@unocss/core': 0.63.6 + '@unocss/postcss': 0.63.6(postcss@8.5.3) + '@unocss/preset-attributify': 0.63.6 + '@unocss/preset-icons': 0.63.6 + '@unocss/preset-mini': 0.63.6 + '@unocss/preset-tagify': 0.63.6 + '@unocss/preset-typography': 0.63.6 + '@unocss/preset-uno': 0.63.6 + '@unocss/preset-web-fonts': 0.63.6 + '@unocss/preset-wind': 0.63.6 + '@unocss/transformer-attributify-jsx': 0.63.6 + '@unocss/transformer-compile-class': 0.63.6 + '@unocss/transformer-directives': 0.63.6 + '@unocss/transformer-variant-group': 0.63.6 + '@unocss/vite': 0.63.6(typescript@5.8.3)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)) + optionalDependencies: + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + - typescript + + unpipe@1.0.0: {} + + unplugin-attributify-to-class@0.2.5: + dependencies: + '@rollup/pluginutils': 5.1.4 + unplugin: 1.16.1 + unplugin-transform-class: 0.5.3 + transitivePeerDependencies: + - rollup + + unplugin-auto-import@0.19.0(@nuxt/kit@3.17.2): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.4 + local-pkg: 0.5.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + unimport: 3.14.6 + unplugin: 2.3.2 + optionalDependencies: + '@nuxt/kit': 3.17.2 + transitivePeerDependencies: + - rollup + + unplugin-auto-import@19.1.0(@nuxt/kit@3.17.2): + dependencies: + local-pkg: 1.1.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + unimport: 4.1.1 + unplugin: 2.3.2 + unplugin-utils: 0.2.4 + optionalDependencies: + '@nuxt/kit': 3.17.2 + + unplugin-transform-class@0.5.3: + dependencies: + '@meoc/utils': 0.2.10 + '@rollup/pluginutils': 5.1.4 + unplugin: 1.7.1 + transitivePeerDependencies: + - rollup + + unplugin-transform-class@0.6.0(@nuxt/kit@3.17.2)(esbuild@0.23.1)(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)): + dependencies: + '@meoc/utils': 0.2.10 + '@rollup/pluginutils': 5.1.4 + unplugin: 2.3.2 + optionalDependencies: + '@nuxt/kit': 3.17.2 + esbuild: 0.23.1 + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + + unplugin-utils@0.2.4: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.2 + + unplugin-vue-components@28.5.0(@babel/parser@7.27.2)(@nuxt/kit@3.17.2)(vue@3.4.21(typescript@5.8.3)): + dependencies: + chokidar: 3.6.0 + debug: 4.4.0 + local-pkg: 1.1.1 + magic-string: 0.30.17 + mlly: 1.7.4 + tinyglobby: 0.2.13 + unplugin: 2.3.2 + unplugin-utils: 0.2.4 + vue: 3.4.21(typescript@5.8.3) + optionalDependencies: + '@babel/parser': 7.27.2 + '@nuxt/kit': 3.17.2 + transitivePeerDependencies: + - supports-color + + unplugin@1.16.1: + dependencies: + acorn: 8.14.1 + webpack-virtual-modules: 0.6.2 + + unplugin@1.7.1: + dependencies: + acorn: 8.14.1 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.2 + + unplugin@2.3.2: + dependencies: + acorn: 8.14.1 + picomatch: 4.0.2 + webpack-virtual-modules: 0.6.2 + + unquote@1.1.1: {} + + unrs-resolver@1.7.2: + dependencies: + napi-postinstall: 0.2.3 + optionalDependencies: + '@unrs/resolver-binding-darwin-arm64': 1.7.2 + '@unrs/resolver-binding-darwin-x64': 1.7.2 + '@unrs/resolver-binding-freebsd-x64': 1.7.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.7.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-musl': 1.7.2 + '@unrs/resolver-binding-wasm32-wasi': 1.7.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 + + untyped@2.0.0: + dependencies: + citty: 0.1.6 + defu: 6.1.4 + jiti: 2.4.2 + knitwork: 1.2.0 + scule: 1.3.0 + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + utif@2.0.1: + dependencies: + pako: 1.0.11 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uview-plus@3.4.28: + dependencies: + clipboard: 2.0.11 + dayjs: 1.11.13 + + v8-to-istanbul@8.1.1: + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.4 + + vary@1.1.2: {} + + vite-plugin-clean-build@1.4.1(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)): + dependencies: + del: 6.1.1 + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + + vite-plugin-replace-image-url@1.4.1(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)): + dependencies: + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + + vite-plugin-restart@0.4.2(vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0)): + dependencies: + micromatch: 4.0.8 + vite: 5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0) + + vite@5.2.8(@types/node@22.15.17)(sass@1.79.6)(terser@5.39.0): + dependencies: + esbuild: 0.20.2 + postcss: 8.5.3 + rollup: 4.40.2 + optionalDependencies: + '@types/node': 22.15.17 + fsevents: 2.3.3 + sass: 1.79.6 + terser: 5.39.0 + + vscode-uri@3.1.0: {} + + vue-demi@0.14.10(vue@3.4.21(typescript@5.8.3)): + dependencies: + vue: 3.4.21(typescript@5.8.3) + + vue-eslint-parser@10.1.3(eslint@9.26.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.26.0(jiti@2.4.2) + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + vue-flow-layout@0.0.5(typescript@5.8.3): + dependencies: + vue: 3.5.13(typescript@5.8.3) + transitivePeerDependencies: + - typescript + + vue-i18n@9.1.9(vue@3.4.21(typescript@5.8.3)): + dependencies: + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@5.8.3) + + vue-router@4.5.1(vue@3.4.21(typescript@5.8.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@5.8.3) + + vue-tsc@2.2.10(typescript@5.8.3): + dependencies: + '@volar/typescript': 2.4.13 + '@vue/language-core': 2.2.10(typescript@5.8.3) + typescript: 5.8.3 + + vue@3.4.21(typescript@5.8.3): + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/runtime-dom': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.8.3)) + '@vue/shared': 3.4.21 + optionalDependencies: + typescript: 5.8.3 + + vue@3.5.13(typescript@5.8.3): + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) + '@vue/shared': 3.5.13 + optionalDependencies: + typescript: 5.8.3 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-mimetype@2.3.0: {} + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + ws@7.5.10: {} + + ws@8.18.2: {} + + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.6 + xtend: 4.0.2 + + xml-name-validator@3.0.0: {} + + xml-name-validator@4.0.0: {} + + xml-parse-from-string@1.0.1: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest@1.8.0: {} + + xregexp@3.1.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml-eslint-parser@1.3.0: + dependencies: + eslint-visitor-keys: 3.4.3 + yaml: 2.7.1 + + yaml@1.10.2: {} + + yaml@2.7.1: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + z-paging@2.8.6: {} + + zod-to-json-schema@3.24.5(zod@3.24.4): + dependencies: + zod: 3.24.4 + + zod@3.24.4: {} + + zwitch@2.0.4: {} diff --git a/scripts/post-upgrade.js b/scripts/post-upgrade.js new file mode 100644 index 0000000..bcaadda --- /dev/null +++ b/scripts/post-upgrade.js @@ -0,0 +1,36 @@ +// # 执行 `pnpm upgrade` 后会升级 `uniapp` 相关依赖 +// # 在升级完后,会自动添加很多无用依赖,这需要删除以减小依赖包体积 +// # 只需要执行下面的命令即可 + +import { exec } from 'node:child_process'; + +// 定义要执行的命令 +const dependencies = [ + '@dcloudio/uni-app-harmony', + // TODO: 如果需要某个平台的小程序,请手动删除或注释掉 + '@dcloudio/uni-mp-alipay', + '@dcloudio/uni-mp-baidu', + '@dcloudio/uni-mp-jd', + '@dcloudio/uni-mp-kuaishou', + '@dcloudio/uni-mp-lark', + '@dcloudio/uni-mp-qq', + '@dcloudio/uni-mp-toutiao', + '@dcloudio/uni-mp-xhs', + '@dcloudio/uni-quickapp-webview', + '@dcloudio/uni-mp-harmony', + // vue 已经内置了 @vue/runtime-core,这里移除掉 + '@vue/runtime-core', +]; + +// 使用exec执行命令 +exec(`pnpm remove ${dependencies.join(' ')}`, (error, stdout, stderr) => { + if (error) { + // 如果有错误,打印错误信息 + console.error(`执行出错: ${error}`); + return; + } + // 打印正常输出 + console.log(`stdout: ${stdout}`); + // 如果有错误输出,也打印出来 + console.error(`stderr: ${stderr}`); +}); diff --git a/scripts/verify-commit.js b/scripts/verify-commit.js new file mode 100644 index 0000000..96cdb28 --- /dev/null +++ b/scripts/verify-commit.js @@ -0,0 +1,28 @@ +/** + * 提交信息校验 + * @link https://github.com/toplenboren/simple-git-hooks + * @see 参考:https://github.com/vuejs/vue-next/blob/master/.github/commit-convention.md + */ +import { readFileSync } from 'node:fs'; +import path from 'node:path'; +import process from 'node:process'; +import pico from 'picocolors'; + +const msgPath = path.resolve('.git/COMMIT_EDITMSG'); +const msg = readFileSync(msgPath, 'utf-8').trim(); + +const commitRE + = /^(?:revert: )?(?:feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|mod|release|strengthen)(?:\(.+\))?: .{1,50}/; + +if (!commitRE.test(msg)) { + console.log(pico.yellow(`\n提交的信息: ${msg}\n`)); + console.error( + ` ${pico.white(pico.bgRed(' 格式错误 '))} ${pico.red( + '无效的提交信息格式.', + )}\n\n${ + pico.red(' 正确的提交消息格式. 例如:\n\n') + } ${pico.green('feat: add a new feature')}\n` + + ` ${pico.green('fix: fixed an bug')}`, + ); + process.exit(1); +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..4ca4e88 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/api/common/index.ts b/src/api/common/index.ts new file mode 100644 index 0000000..2653a9c --- /dev/null +++ b/src/api/common/index.ts @@ -0,0 +1,24 @@ +/** + * 通用接口 + */ +import type { SendCodeReq, SendCodeRes, UploadRes } from './types'; +// import type { CommonRes } from '@/api/common/types'; +import { get,post, upload } from '@/utils/request'; + +// 文件上传 +export const uploadFile = (filePath: string) => + upload('/common/upload', { filePath, name: 'file' }); + +// 发送验证码 +export const sendCode = (data: SendCodeReq) => post('/sendCode', { data }); + + +// repeatSubmit 防止重复提交 auth 传token +/** 获取列表 get实列 */ +export const goodsMenu = (data:any) => get('/api/config', { data, custom: { toast: false } }); + +/** 登录 post 实列 */ +export const goodsLogin = (data:any) => post('/api/auth/login', { data, custom: { toast: false } }); + + + diff --git a/src/api/common/types.ts b/src/api/common/types.ts new file mode 100644 index 0000000..cdd33eb --- /dev/null +++ b/src/api/common/types.ts @@ -0,0 +1,21 @@ +export interface CommonReq { + [key: string]: any; +} + +export interface CommonRes { + [key: string]: any; +} + +export interface UploadRes { + file: string; + url: string; +} + +export interface SendCodeReq { + phone: number; + code: number; +} + +export interface SendCodeRes { + code: number; +} diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..24d8353 --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,4 @@ +import * as CommonApi from './common'; +import * as UserApi from './user'; + +export { CommonApi, UserApi }; diff --git a/src/api/user/index.ts b/src/api/user/index.ts new file mode 100644 index 0000000..3c2b9c8 --- /dev/null +++ b/src/api/user/index.ts @@ -0,0 +1,22 @@ +/** + * 用户信息相关接口 + */ +import type { CommonRes } from '@/api/common/types'; +import type { LoginByCodeReq, LoginByCodeRes, LoginReq, LoginRes, ProfileReq, ProfileRes } from './types'; +import { get, post } from '@/utils/request'; + +/** 获取用户信息 */ +export const profile = (params?: ProfileReq) => get('/user/profile', { params }); + +/** 登录 */ +export const login = (data: LoginReq) => post('/user/login', { data, custom: { auth: false } }); + +/** 验证码登录 */ +export const loginByCode = (data: LoginByCodeReq) => post('/user/loginByCode', { data }); + +/** 退出登录 */ +export const logout = () => post('/user/logout'); + + +export const goodsMenu = () => get('/api/config'); +// export const goodsMenu = (data:any) => get('/api/config', { data, custom: { toast: false } }); diff --git a/src/api/user/types.ts b/src/api/user/types.ts new file mode 100644 index 0000000..6867b1d --- /dev/null +++ b/src/api/user/types.ts @@ -0,0 +1,30 @@ +export interface ProfileReq { + user_id?: string; +} + +export interface ProfileRes { + user_id?: string; + user_name?: string; + avatar?: string; + token?: string; +} + +export interface LoginReq { + phone: string; + code: string; +} + +export interface LoginRes { + token: string; + user_id: number; + user_name: string; + avatar: string; +} + +export interface LoginByCodeReq { + code: string; +} + +export interface LoginByCodeRes { + [key: string]: any; +} diff --git a/src/components/.gitkeep b/src/components/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/components/agree-privacy/index.vue b/src/components/agree-privacy/index.vue new file mode 100644 index 0000000..9aeec8f --- /dev/null +++ b/src/components/agree-privacy/index.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/src/components/lang-select/index.vue b/src/components/lang-select/index.vue new file mode 100644 index 0000000..a939265 --- /dev/null +++ b/src/components/lang-select/index.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/hooks/index.ts b/src/hooks/index.ts new file mode 100644 index 0000000..a38242d --- /dev/null +++ b/src/hooks/index.ts @@ -0,0 +1,8 @@ +import useClipboard from './use-clipboard'; +import useLoading from './use-loading'; +import useLocation from './use-location'; +import useModal from './use-modal'; +import usePermission from './use-permission'; +import useShare from './use-share'; + +export { useClipboard, useLoading, useLocation, useModal, usePermission, useShare }; diff --git a/src/hooks/use-clipboard/index.ts b/src/hooks/use-clipboard/index.ts new file mode 100644 index 0000000..b522ad4 --- /dev/null +++ b/src/hooks/use-clipboard/index.ts @@ -0,0 +1,33 @@ +/** + * 剪切板 + * @example + * const {setClipboardData, getClipboardData} = useClipboard() + * // 设置剪切板 + * setClipboardData({data: '1234567890'}) + * // 获取剪切板 + * const data = await getClipboardData() + */ +export default function useClipboard() { + const setClipboardData = ({ data, showToast = true }: UniApp.SetClipboardDataOptions) => { + return new Promise((resolve, reject) => { + uni.setClipboardData({ + data, + showToast, + success: ({ data }) => resolve(data), + fail: error => reject(error), + }); + }); + }; + const getClipboardData = () => { + return new Promise((resolve, reject) => { + uni.getClipboardData({ + success: ({ data }) => resolve(data), + fail: error => reject(error), + }); + }); + }; + return { + setClipboardData, + getClipboardData, + }; +} diff --git a/src/hooks/use-loading/index.ts b/src/hooks/use-loading/index.ts new file mode 100644 index 0000000..58be800 --- /dev/null +++ b/src/hooks/use-loading/index.ts @@ -0,0 +1,24 @@ +/** + * loading 提示框 + * @example + * const {showLoading, hideLoading} = useLoading() + * // 显示loading + * showLoading() + * // 隐藏loading + * hideLoading() + */ +export default function useLoading() { + const showLoading = (content = '加载中') => { + uni.showLoading({ + title: content, + mask: true, + }); + }; + const hideLoading = () => { + uni.hideLoading(); + }; + return { + showLoading, + hideLoading, + }; +} diff --git a/src/hooks/use-location/index.ts b/src/hooks/use-location/index.ts new file mode 100644 index 0000000..3cef3ad --- /dev/null +++ b/src/hooks/use-location/index.ts @@ -0,0 +1,329 @@ +import { env } from 'process'; +import type { AddressInfo, LocationInfo, LocationOptions } from './types'; +const map_key = import.meta.env.VITE_APP_MAP_KEY; + +/** + * 定位hooks,提供定位相关功能 + * - 获取位置 + * - 位置监听 + * - 地址解析 + * - 距离计算 + */ +export default function useLocation() { + // 当前位置信息 + const location = ref(null); + + // 定位状态 + const isLocating = ref(false); + + // 是否正在监听位置 + const isWatching = ref(false); + + // 定位错误信息 + const error = ref(null); + + // 历史位置 + const historyLocations = ref([]); + + // 监听位置的定时器ID + let watchId: number | null = null; + + /** + * 获取当前位置 + * @param options 定位选项 + */ + const getLocation = (options: LocationOptions = {}) => { + isLocating.value = true; + error.value = null; + + const defaultOptions: LocationOptions = { + type: 'gcj02', + altitude: false, + isHighAccuracy: false, + }; + + const finalOptions = { ...defaultOptions, ...options }; + + return new Promise((resolve, reject) => { + uni.getLocation({ + type: finalOptions.type, + altitude: finalOptions.altitude, + isHighAccuracy: finalOptions.isHighAccuracy, + highAccuracyExpireTime: finalOptions.highAccuracyExpireTime, + success: (res) => { + // 更新当前位置 + const locationData: LocationInfo = { + ...res, + timestamp: Date.now(), + }; + + location.value = locationData; + + // 添加到历史记录 + historyLocations.value.push(locationData); + + // 只保留最近的20条记录 + if (historyLocations.value.length > 20) { + historyLocations.value.shift(); + } + + finalOptions.success && finalOptions.success(res); + resolve(locationData); + }, + fail: (err) => { + error.value = err; + finalOptions.fail && finalOptions.fail(err); + reject(err); + }, + complete: () => { + isLocating.value = false; + finalOptions.complete && finalOptions.complete(); + }, + }); + }); + }; + + /** + * 使用地理编码获取地址信息 + * @param latitude 纬度 + * @param longitude 经度 + */ + const getAddress = (latitude: number, longitude: number) => { + return new Promise((resolve, reject) => { + // console.log('getAddress', `https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude},${longitude}&key=${map_key}`); + // #ifdef APP-PLUS + uni.request({ + url: `https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude},${longitude}&key=${map_key}`, + success: (res: any) => { + if (res.data && res.data.status === 0) { + const addressComponent = res.data.result.address_component; + const formattedAddress = res.data.result.formatted_addresses.recommend; + + const addressInfo: AddressInfo = { + nation: addressComponent.nation, + province: addressComponent.province, + city: addressComponent.city, + district: addressComponent.district, + street: addressComponent.street, + streetNum: addressComponent.street_number, + poiName: res.data.result.poi_count > 0 ? res.data.result.pois[0].title : '', + cityCode: res.data.result.ad_info.city_code, + }; + + if (location.value) { + location.value.address = addressInfo; + location.value.formatted = formattedAddress; + } + + resolve(addressInfo); + } + else { + reject(new Error('获取地址信息失败')); + } + }, + fail: (err) => { + reject(err); + }, + }); + // #endif + + // #ifndef APP-PLUS + // 其他平台可以使用uni.getLocation的geocode参数获取(仅App和微信小程序支持) + // 或者使用其他地图服务的API + reject(new Error('当前平台不支持地址解析')); + // #endif + }); + }; + + /** + * 停止监听位置 + */ + const stopWatchLocation = () => { + if (watchId !== null) { + clearInterval(watchId); + watchId = null; + } + + isWatching.value = false; + }; + + /** + * 开始监听位置变化 + * @param options 定位选项 + * @param interval 监听间隔,单位毫秒 + */ + const watchLocation = (options: LocationOptions = {}, interval: number = 5000) => { + // 已经在监听,先停止 + if (isWatching.value) { + stopWatchLocation(); + } + + isWatching.value = true; + + // 首次定位 + getLocation(options).catch((err) => { + console.error('监听位置首次定位失败', err); + }); + + // 定时获取位置 + watchId = window.setInterval(() => { + if (isWatching.value) { + getLocation(options).catch((err) => { + console.error('监听位置更新失败', err); + }); + } + }, interval); + + return watchId; + }; + + /** + * 计算两点间距离(米) + * @param lat1 第一个点的纬度 + * @param lon1 第一个点的经度 + * @param lat2 第二个点的纬度 + * @param lon2 第二个点的经度 + * @returns 距离,单位:米 + */ + const calculateDistance = (lat1: number, lon1: number, lat2: number, lon2: number): number => { + const R = 6371000; // 地球半径,单位米 + const dLat = ((lat2 - lat1) * Math.PI) / 180; + const dLon = ((lon2 - lon1) * Math.PI) / 180; + + const a + = Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.cos((lat1 * Math.PI) / 180) + * Math.cos((lat2 * Math.PI) / 180) + * Math.sin(dLon / 2) + * Math.sin(dLon / 2); + + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + const distance = R * c; + + return distance; + }; + + /** + * 获取当前位置到目标位置的距离 + * @param targetLat 目标位置纬度 + * @param targetLon 目标位置经度 + * @returns 距离,单位:米,如果当前没有位置信息则返回-1 + */ + const getDistanceFromCurrent = (targetLat: number, targetLon: number): number => { + if (!location.value) { + return -1; + } + + return calculateDistance( + location.value.latitude, + location.value.longitude, + targetLat, + targetLon, + ); + }; + + /** + * 格式化距离显示 + * @param distance 距离,单位:米 + * @returns 格式化后的距离字符串 + */ + const formatDistance = (distance: number): string => { + if (distance < 0) { + return '未知距离'; + } + else if (distance < 1000) { + return `${Math.round(distance)}米`; + } + else { + return `${(distance / 1000).toFixed(1)}公里`; + } + }; + + /** + * 打开导航 + * @param latitude 目标纬度 + * @param longitude 目标经度 + * @param name 目标名称 + * @param address 目标地址 + */ + const openLocation = ( + latitude: number, + longitude: number, + name: string = '', + address: string = '', + ) => { + return new Promise((resolve, reject) => { + uni.openLocation({ + latitude, + longitude, + name, + address, + success: () => resolve(), + fail: err => reject(err), + }); + }); + }; + + /** + * 选择位置 + */ + const chooseLocation = () => { + return new Promise((resolve, reject) => { + uni.chooseLocation({ + success: (res) => { + // 更新当前位置 + if (res.latitude && res.longitude) { + const locationData: LocationInfo = { + latitude: res.latitude, + longitude: res.longitude, + accuracy: 0, + verticalAccuracy: 0, + horizontalAccuracy: 0, + altitude: 0, + speed: 0, + timestamp: Date.now(), + address: { + province: '', + city: '', + district: '', + street: '', + poiName: res.name, + }, + formatted: res.address, + }; + + location.value = locationData; + } + + resolve(res); + }, + fail: err => reject(err), + }); + }); + }; + + // 自动清理 + onUnmounted(() => { + stopWatchLocation(); + }); + + return { + // 状态 + location, + isLocating, + isWatching, + error, + historyLocations, + + // 方法 + getLocation, + getAddress, + watchLocation, + stopWatchLocation, + calculateDistance, + getDistanceFromCurrent, + formatDistance, + openLocation, + chooseLocation, + }; +} diff --git a/src/hooks/use-location/types.ts b/src/hooks/use-location/types.ts new file mode 100644 index 0000000..aaee050 --- /dev/null +++ b/src/hooks/use-location/types.ts @@ -0,0 +1,30 @@ +// 定位选项 +export interface LocationOptions { + type?: 'wgs84' | 'gcj02'; + altitude?: boolean; + isHighAccuracy?: boolean; + highAccuracyExpireTime?: number; + success?: (res: UniApp.GetLocationSuccess) => void; + fail?: (err: any) => void; + complete?: () => void; +} + +// 地址信息 +export interface AddressInfo { + nation?: string; + province?: string; + city?: string; + district?: string; + street?: string; + streetNum?: string; + poiName?: string; + postalCode?: string; + cityCode?: string; +} + +// 位置信息 +export interface LocationInfo extends UniApp.GetLocationSuccess { + address?: AddressInfo; + formatted?: string; + timestamp?: number; +} diff --git a/src/hooks/use-modal/index.ts b/src/hooks/use-modal/index.ts new file mode 100644 index 0000000..57e2f7b --- /dev/null +++ b/src/hooks/use-modal/index.ts @@ -0,0 +1,24 @@ +/** + * Dialog 提示框 + * @example + * const {showModal} = useModal() + * showModal('提示内容') + */ +export default function useModal() { + const showModal = (content: string, options: UniApp.ShowModalOptions) => { + return new Promise((resolve, reject) => { + uni.showModal({ + title: '温馨提示', + content, + showCancel: false, + confirmColor: '#1677FF', + success: res => resolve(res), + fail: () => reject(new Error('Alert 调用失败 !')), + ...options, + }); + }); + }; + return { + showModal, + }; +} diff --git a/src/hooks/use-permission/index.ts b/src/hooks/use-permission/index.ts new file mode 100644 index 0000000..d8c5416 --- /dev/null +++ b/src/hooks/use-permission/index.ts @@ -0,0 +1,10 @@ +import { hasPerm } from '@/plugins/permission'; +import { currentRoute } from '@/router'; + +// 对某些特殊场景需要在页面onShow生命周期中校验权限: +// 1.微信小程序端点击tabbar的底层逻辑不触发uni.switchTab +// 2.h5在浏览器地址栏输入url后跳转不触发uni的路由api +// 3.首次启动加载的页面不触发uni的路由api +export default async function usePermission() { + return hasPerm(currentRoute()); +} diff --git a/src/hooks/use-share/index.ts b/src/hooks/use-share/index.ts new file mode 100644 index 0000000..e2186c2 --- /dev/null +++ b/src/hooks/use-share/index.ts @@ -0,0 +1,48 @@ +import type { ShareOptions } from './types'; + +/** + * 小程序分享 + * @param {object} options + * @example + * // 必须要调用onShareAppMessage,onShareTimeline才能正常分享 + * // 因为小程序平台,必须在注册页面时,主动配置onShareAppMessage, onShareTimeline才可以 + * // 组合式API是运行时才能注册,框架不可能默认给每个页面都开启这两个分享,所以必须在页面代码里包含这两个API的字符串,才会主动去注册。 + * // 相关说明链接:https://ask.dcloud.net.cn/question/150353 + * const {onShareAppMessage, onShareTimeline} = useShare({title: '分享标题', path: 'pages/index/index', query: 'id=1', imageUrl: 'https://xxx.png'}) + * onShareAppMessage() + * onShareTimeline() + */ +export default function useShare(options?: ShareOptions) { + // #ifdef MP-WEIXIN + const title = options?.title ?? ''; + const path = options?.path ?? ''; + const query = options?.query ?? ''; + const imageUrl = options?.imageUrl ?? ''; + + const shareApp = (params: ShareOptions = {}) => { + onShareAppMessage(() => { + return { + title, + path: path ? `${path}${query ? `?${query}` : ''}` : '', + imageUrl, + ...params, + }; + }); + }; + + const shareTime = (params: ShareOptions = {}) => { + onShareTimeline(() => { + return { + title, + query: options?.query ?? '', + imageUrl, + ...params, + }; + }); + }; + return { + onShareAppMessage: shareApp, + onShareTimeline: shareTime, + }; + // #endif +} diff --git a/src/hooks/use-share/types.ts b/src/hooks/use-share/types.ts new file mode 100644 index 0000000..f3caf30 --- /dev/null +++ b/src/hooks/use-share/types.ts @@ -0,0 +1,6 @@ +export interface ShareOptions { + title?: string; + path?: string; + query?: string; + imageUrl?: string; +} diff --git a/src/locales/index.ts b/src/locales/index.ts new file mode 100644 index 0000000..8d4474c --- /dev/null +++ b/src/locales/index.ts @@ -0,0 +1,21 @@ +import type { App } from 'vue'; +import { createI18n } from 'vue-i18n'; +import en from './langs/en'; +import zhHans from './langs/zh-Hans'; + +const i18n = createI18n({ + legacy: false, // 必须设置false才能使用Composition API + globalInjection: true, // 为每个组件注入$为前缀的全局属性和函数 + locale: uni.getLocale(), + messages: { + en, + 'zh-Hans': zhHans, + }, +}); + +function setupI18n(app: App) { + app.use(i18n); +} + +export { i18n }; +export default setupI18n; diff --git a/src/locales/langs/en.ts b/src/locales/langs/en.ts new file mode 100644 index 0000000..793dcd6 --- /dev/null +++ b/src/locales/langs/en.ts @@ -0,0 +1,11 @@ +export default { + locale: { + 'auto': 'System', + 'en': 'English', + 'zh-hans': 'Chinese', + }, + home: { + 'intro': 'Welcome to uni-app demo', + 'toggle-langs': 'Change languages', + }, +}; diff --git a/src/locales/langs/zh-Hans.ts b/src/locales/langs/zh-Hans.ts new file mode 100644 index 0000000..e9cd01a --- /dev/null +++ b/src/locales/langs/zh-Hans.ts @@ -0,0 +1,11 @@ +export default { + locale: { + 'auto': '系统', + 'en': '英语', + 'zh-hans': '中文', + }, + home: { + 'intro': '欢迎来到uni-app演示', + 'toggle-langs': '切换语言', + }, +}; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..3be2ff1 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,14 @@ +import App from '@/App.vue'; +import setupPlugins from '@/plugins'; +import { createSSRApp } from 'vue'; +// 引入UnoCSS +import 'virtual:uno.css'; + +export function createApp() { + const app = createSSRApp(App); + app.use(setupPlugins); + + return { + app, + }; +} diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..dd11f03 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,85 @@ +{ + "name" : "", + "appid" : "", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3", + "h5" : { + "router" : { + "mode" : "hash", + "base" : "/uniapp-vue3-template/" + }, + "sdkConfigs" : { + "maps" : { + "tencent" : { + "key" : "SMJBZ-WCHK4-ZPZUA-DSIXI-XDDVQ-XWFX7" + } + } + } + } +} diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..b021ac7 --- /dev/null +++ b/src/pages.json @@ -0,0 +1,113 @@ +{ + "easycom": { + "custom": { + "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue", + "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue", + "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue", + "^(?!z-paging-refresh|z-paging-load-more)z-paging(.*)": "z-paging/components/z-paging$1/z-paging$1.vue" + } + }, + "pages": [ + { + "path": "pages/tab/user/index", + "style": { + "navigationStyle": "custom" + }, + "needLogin": true + }, + { + "path": "pages/tab/home/index", + "style": { + "navigationBarTitleText": "菜单分类", + "navigationStyle": "custom" + }, + "needLogin": true + }, + { + "path": "pages/tab/list/index", + "style": { + "navigationBarTitleText": "食谱清单", + "navigationStyle": "custom" + }, + "needLogin": true + }, + + ], + "subPackages": [ + { + "root": "pages/common", + "pages": [ + { + "path": "login/index", + "style": { + "navigationBarTitleText": "登录", + "navigationStyle": "custom" + } + }, + { + "path": "webview/index", + "style": { + "navigationBarTitleText": "网页" + } + }, + { + "path": "404/index", + "style": { + "navigationBarTitleText": "404", + "navigationStyle": "custom" + } + }, + { + "path": "goods/detail", + "style": { + "navigationBarTitleText": "菜谱详情", + "navigationStyle": "custom" + } + }, + { + "path": "goods/order", + "style": { + "navigationBarTitleText": "订单详情", + "navigationStyle": "custom" + } + } + ] + } + ], + "preloadRule": { + "pages/tab/home/index": { + "network": "all", + "packages": ["pages/common"] + } + }, + "tabBar": { + "color": "#1b233b", + "selectedColor": "#59CB56", + "borderStyle": "black", + "backgroundColor": "#ffffff", + "list": [{ + "iconPath": "static/images/tabbar/icon_home.png", + "selectedIconPath": "static/images/tabbar/icon_home_selected.png", + "pagePath": "pages/tab/home/index", + "text": "菜单分类" + }, + { + "iconPath": "static/images/tabbar/icon_list.png", + "selectedIconPath": "static/images/tabbar/icon_list_selected.png", + "pagePath": "pages/tab/list/index", + "text": "食谱清单" + }, + { + "iconPath": "static/images/tabbar/icon_me.png", + "selectedIconPath": "static/images/tabbar/icon_me_selected.png", + "pagePath": "pages/tab/user/index", + "text": "我的" + }] + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + } +} diff --git a/src/pages/common/404/index.vue b/src/pages/common/404/index.vue new file mode 100644 index 0000000..962006a --- /dev/null +++ b/src/pages/common/404/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/src/pages/common/goods/address.vue b/src/pages/common/goods/address.vue new file mode 100644 index 0000000..57719a7 --- /dev/null +++ b/src/pages/common/goods/address.vue @@ -0,0 +1,240 @@ + + + + diff --git a/src/pages/common/goods/detail.vue b/src/pages/common/goods/detail.vue new file mode 100644 index 0000000..9b9a5bc --- /dev/null +++ b/src/pages/common/goods/detail.vue @@ -0,0 +1,183 @@ + + + + \ No newline at end of file diff --git a/src/pages/common/goods/order copy.vue b/src/pages/common/goods/order copy.vue new file mode 100644 index 0000000..74b61e4 --- /dev/null +++ b/src/pages/common/goods/order copy.vue @@ -0,0 +1,507 @@ + + + + + + + \ No newline at end of file diff --git a/src/pages/common/goods/order.vue b/src/pages/common/goods/order.vue new file mode 100644 index 0000000..d0fd70b --- /dev/null +++ b/src/pages/common/goods/order.vue @@ -0,0 +1,309 @@ + + + + + \ No newline at end of file diff --git a/src/pages/common/login/index.vue b/src/pages/common/login/index.vue new file mode 100644 index 0000000..369e773 --- /dev/null +++ b/src/pages/common/login/index.vue @@ -0,0 +1,180 @@ + + + + + diff --git a/src/pages/common/webview/index.vue b/src/pages/common/webview/index.vue new file mode 100644 index 0000000..1c387c7 --- /dev/null +++ b/src/pages/common/webview/index.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/pages/tab/home/index.vue b/src/pages/tab/home/index.vue new file mode 100644 index 0000000..d1206d5 --- /dev/null +++ b/src/pages/tab/home/index.vue @@ -0,0 +1,835 @@ + + + + diff --git a/src/pages/tab/list/index.vue b/src/pages/tab/list/index.vue new file mode 100644 index 0000000..d0453a5 --- /dev/null +++ b/src/pages/tab/list/index.vue @@ -0,0 +1,1081 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/pages/tab/user/index.vue b/src/pages/tab/user/index.vue new file mode 100644 index 0000000..40c8498 --- /dev/null +++ b/src/pages/tab/user/index.vue @@ -0,0 +1,83 @@ + + + + diff --git a/src/plugins/index.ts b/src/plugins/index.ts new file mode 100644 index 0000000..1c0b540 --- /dev/null +++ b/src/plugins/index.ts @@ -0,0 +1,21 @@ +import type { App } from 'vue'; +import setupI18n from '@/locales'; +import setupStore from '@/store'; +import setupRequest from '@/utils/request'; +import setupPermission from './permission'; +import setupUI from './ui'; + +export default { + install(app: App) { + // UI扩展配置 + setupUI(app); + // 状态管理 + setupStore(app); + // 国际化 + setupI18n(app); + // 路由拦截 + setupPermission(); + // 网络请求 + setupRequest(); + }, +}; diff --git a/src/plugins/permission.ts b/src/plugins/permission.ts new file mode 100644 index 0000000..2283198 --- /dev/null +++ b/src/plugins/permission.ts @@ -0,0 +1,57 @@ +import { + ERROR404_PATH, + isPathExists, + LOGIN_PATH, + removeQueryString, + routes, +} from '@/router'; +import { isLogin } from '@/utils/auth'; + +// 白名单路由 +const whiteList = ['/']; +routes.forEach((item) => { + if (item.needLogin !== true) { + whiteList.push(item.path); + } +}); + +/** + * 权限校验 + * @param {string} path + * @returns {boolean} 是否有权限 + */ +export function hasPerm(path = '') { + if (!isPathExists(path) && path !== '/') { + uni.redirectTo({ + url: ERROR404_PATH, + }); + return false; + } + // 在白名单中或有token,直接放行 + const hasPermission + = whiteList.includes(removeQueryString(path)) || isLogin(); + if (!hasPermission) { + // 将用户的目标路径传递过去,这样可以实现用户登录之后,直接跳转到目标页面 + uni.redirectTo({ + url: `${LOGIN_PATH}?redirect=${encodeURIComponent(path)}`, + }); + } + return hasPermission; +} + +function setupPermission() { + // 注意:拦截uni.switchTab本身没有问题。但是在微信小程序端点击tabbar的底层逻辑并不是触发uni.switchTab。 + // 所以误认为拦截无效,此类场景的解决方案是在tabbar页面的页面生命周期onShow中处理。 + ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab'].forEach((item) => { + // https://uniapp.dcloud.net.cn/api/interceptor.html + uni.addInterceptor(item, { + // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转 + invoke(args) { + // args为所拦截api中的参数,比如拦截的是uni.redirectTo(OBJECT),则args对应的是OBJECT参数 + return hasPerm(args.url); + }, + }); + }); +} + +export default setupPermission; diff --git a/src/plugins/ui.ts b/src/plugins/ui.ts new file mode 100644 index 0000000..a00fe4e --- /dev/null +++ b/src/plugins/ui.ts @@ -0,0 +1,28 @@ +import type { App } from 'vue'; +import uviewPlus, { setConfig } from 'uview-plus'; + +function setupUI(app: App) { + // 下面的在特殊场景下才需要配置,通常不用配置即可直接使用uview-plus框架。 + // 调用setConfig方法,方法内部会进行对象属性深度合并,可以放心嵌套配置 + // 需要在app.use(uview-plus)之后执行 + setConfig({ + // 修改$u.config对象的属性 + config: { + // 修改默认单位为rpx,相当于执行 uni.$u.config.unit = 'rpx' + unit: 'px', + }, + // 修改$u.props对象的属性 + props: { + // 修改radio组件的size参数的默认值,相当于执行 uni.$u.props.radio.size = 30 + radio: { + // size: 20 + }, + // 其他组件属性配置 + // ...... + }, + }); + + app.use(uviewPlus); +} + +export default setupUI; diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..9029a64 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,89 @@ +import pagesJson from '@/pages.json'; + +// 路径常量 +export const HOME_PATH = '/pages/tab/home/index'; +export const LOGIN_PATH = '/pages/common/login/index'; +export const ERROR404_PATH = '/pages/common/404/index'; + +/** + * 解析路由地址 + * @param {object} pagesJson + * @returns [{"path": "/pages/tab/home/index","needLogin": false},...] + */ +function parseRoutes(pagesJson = {} as any) { + if (!pagesJson.pages) { + pagesJson.pages = []; + } + if (!pagesJson.subPackages) { + pagesJson.subPackages = []; + } + + function parsePages(pages = [] as any, rootPath = '') { + const routes = []; + for (let i = 0; i < pages.length; i++) { + routes.push({ + path: rootPath ? `/${rootPath}/${pages[i].path}` : `/${pages[i].path}`, + needLogin: pages[i].needLogin === true, + }); + } + return routes; + } + + function parseSubPackages(subPackages = [] as any) { + const routes = []; + for (let i = 0; i < subPackages.length; i++) { + routes.push(...parsePages(subPackages[i].pages, subPackages[i].root)); + } + return routes; + } + + return [ + ...parsePages(pagesJson.pages), + ...parseSubPackages(pagesJson.subPackages), + ]; +} +export const routes = parseRoutes(pagesJson); + +/** + * 当前路由 + * @returns {string} 当前路由 + */ +export function currentRoute() { + // getCurrentPages() 至少有1个元素,所以不再额外判断 + const pages = getCurrentPages(); + const currentPage = pages[pages.length - 1] as any; + return currentPage?.$page?.fullPath || currentPage.route; +} + +/** + * 去除查询字符串 + * @param {string} path + * @returns {string} 去除查询字符串后的路径 + */ +export function removeQueryString(path = '') { + return path.split('?')[0]; +} + +/** + * 路径是否存在 + * @param {string} path + * @returns {boolean} 路径是否存在 + */ +export function isPathExists(path = '') { + const cleanPath = removeQueryString(path); + return routes.some(item => item.path === cleanPath); +} + +/** + * 是否是tabbar页面路径 + * @param {string} path + * @returns {boolean} 是否是tabbar页面 + */ +export function isTabBarPath(path = '') { + const cleanPath = removeQueryString(path); + return ( + pagesJson.tabBar?.list?.some( + item => `/${item.pagePath}` === cleanPath, + ) === true + ); +} diff --git a/src/static/images/404.png b/src/static/images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d3dbfc89190d02bb880730290e7eae950e255c GIT binary patch literal 8486 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 R{`=`CFRda~BViiyKLFRPfR+FN literal 0 HcmV?d00001 diff --git a/src/static/images/logo.png b/src/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5771e209bb677e2ebd5ff766ad5ee11790f305a GIT binary patch literal 4023 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 SYs}WS&%*SCNx89m_Rsf)IKYBE2_h0@6#Q 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 Ko^*9$sQO=78)8KO literal 0 HcmV?d00001 diff --git a/src/static/images/tabbar/icon_home.png b/src/static/images/tabbar/icon_home.png new file mode 100644 index 0000000000000000000000000000000000000000..2b5823957695a9a7c9420edc614a87e846c4f8f6 GIT binary patch literal 693 zcmV;m0!safP)Px%Z%IT!RCr$Pn_X_gFbv0=USm9L8gJ81FeJ)Zrk!JOj!C-;Oo9_k+7pO9z%d}h z6P>!!#`$m@s+uP>nx_8Q{yR=HmG%6idTxIv03-r>P9RAN42GjZYyFyKSpoc&QnSgl;Dbl z=m2i+pXR05Rdc&)pb5}^vzo-zglGWjO5bLD`FBJdC$TC-6aZ)A!ShZ^p8^6o0K|CI zlfLkL(}WZNl?OQ?kO7DxWHtio>-oQu8+rp6AH#S|9I47=a0GC8sSPj%gdhMM#$%BH zO;pHQ!3%(Eji*R6B-Nm!L@P{VS$2ImPK9oIHmXYFC4$tGyTY%e1MDX_FSLRp0BLBT zk7wP?ph`n44TxFhe50To7b?UkfNM4$s}MG2(g>hU@N8}z>RH$EhP8sRI$!`U_V2FI zcvB=`<&iUuHWn?wXf1PugY zR)O2kw<6E;LMt`ahr{gq@r9(B>Wm29eZ9{!t$$yS!)N>OjP@lq6`>OV!22rC|Mm0w zc$`o~fdJ@28I%Z+6c7y%5tJ$*Wl+`uvJk2+ZDl1WOJV5+`qKiPhwuitN0 z#?4lAC)RW-EVXgi{Mgw57>@#|9zKBYr_)(uY~s|vgHGB0^OZG#)JDacUjW1++m-wF bJ_3FKkrGI5n$PyF00000NkvXXu0mjfDJnKA literal 0 HcmV?d00001 diff --git a/src/static/images/tabbar/icon_home_selected.png b/src/static/images/tabbar/icon_home_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..7533dde12d2d9fedb438dac8b74baee486614b5d GIT binary patch literal 689 zcmV;i0#5yjP)Px%Ye_^wRCr$Pn@di^Fc5}4?J;1%YemHgKx%RoD$ddN90;z`Ae9p!SOH}L$7l>L z1k#ZBIkszMx~hufc)pqW$1i~O`~y9=pAi6xfSwbGk^%=0*BK0lQ^t8F_yc3}vMh_Y zv#TPsKY{}|dc2u&#-?qC3J|ZO$t)yjugItxhj?|EBHNggm<=zaLbr_!8-h^;V87f9{awtOT&j#;YoXPMMSf=*l&nj$J)#`h1t8RO=5ZfVNI| z(Rf)T-~w=*beMY8rhQWrR1PzX00Q7P?X>Zz=`$1ojXg+80mWepX@D%p{*^%zK@vfy z&4+rl?VntTli`eWJ_dmK`|}dzWH^~Buy=ee&J8xl^&Hl?dmjOx X4h|-6?>)Jo00000NkvXXu0mjfTB<7i literal 0 HcmV?d00001 diff --git a/src/static/images/tabbar/icon_list.png b/src/static/images/tabbar/icon_list.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5ee04423327daacc89bac278b0654d0f322757 GIT binary patch literal 604 zcmV-i0;BzjP)Px%7D+@wRCr$PTT4#EKnxxC8g#*@D-b8366sYyoP+cn2(HppDkng&DxXEUMhA=% zl!msRrsKw;FT1MA#D3%PJo`<^?fFG}?!N;7h=4suV523_?e!Dy{jF8Zh-l2V&8Cwy z)W#qHN{%O?12=u&HyDH2bdpJS1OaexaxrqwwZ{3}>Fo3Maj-Q2`Rp?Qt-C^^K#YKH zub)=eJrNBpqT#*2EJvyq070SE1VGiL$`d6e#5xfG078-rBA@{TummdGHF5xwAa((4 zgWv%|We6f9ZP!a`0Wd)@!GJnjiY$%)%`icY21*F4GXcP|{z0tSmOwB8fX3_>0JZ`E z#TJ^l`v<_$!R8-Hwi* z?^9320!8$TydS@vU9S{AO(emimxqz_KI#_uizHF@etNZ1@B8-vkaI)x5pei)mr$pp zBBr(ifFfKu7sN^e^ZERT1%900tYw2HmOw10>x=^czy!er7mo6P3PT%&HVADH+90&S z^~Yw>5RoV+8X_AuL?l2p|3@u=T0o~3;EyEA4UVk%FhMh%>x{kZPi|(u6^T&ULgobgJO402%lNIv4RySD$wmNd qWtq{30f5no*_m00fSo~Y^hICDmC;{oHa?>O0000Px%5=lfsRCr$PTT5=jFc9^?G0LJJR;_x1A`!0As^=)2qiU~0kl+MWyP}^3JqEaS zq*M?-GZD5kXVn)_Z+}J*@ z?uODaiU9Zv+}cFian=8`tJUD^`ab2xAp+p+?Rji!6nqvmQTlm#J2)DEZ1!8NG1rmC zb_oku2Asb>4XrU7>z<4msSKE?zs}S!00^m71wh56>L!Xyh~*go0A$Gp45$DBEP=vy zjU0d^h+P2NAanq8GK3J~w(G640F)qIPfVBW1SP4zA`>0?*K3fh5U(|Q~NGiOl0Pq>Sv@ZaFdcdZC!6nViKH%sDDO~gg z1lgDaHB`Hb9MI|ZhSu7Ch#-k*vY1cz8lNfvIJvlSHk#Kha1G4#`+c_8@B8-v5Yb3I z13KMa^1B3rn5ne@Ag8O#1s?N2=JPM+(}RA$iY4GN=+a#Q04PBy!Hugtkizf=;SItY zgf|Fp@bI-+6ht_^iHZ;^LWQfcD2X-99^bOMh|>JS1TKHXZr^pO`)C~y%!g)eJ71AYK$7|>rv%6>Hf0000M literal 0 HcmV?d00001 diff --git a/src/static/images/tabbar/icon_me.png b/src/static/images/tabbar/icon_me.png new file mode 100644 index 0000000000000000000000000000000000000000..9b76318ad08fe03177a24a4b39c1210f59fc0e1b GIT binary patch literal 909 zcmV;819JR{P)Px&M@d9MRCr$Pn@>(1F$~5hTmu$uVFl_5Kq~JlMLh>_j;g&1QwdH`wJRuHz%@w8 zBU25TBzEG@^BBFb0g3rz|MJ;!;*9CG{Kss$|6K#n6fh%!y@Qie|GM>WYwaiZ+Zgj> zWJdpRd)?1vmU;*{r>(W;UDplHvwSngT)GP%Zm%y`H&kAv2B6mQm>&*?76=spdj}^M ze$*?+WqO+y1ULYO^Z(;}i2WfKP+_700SbU{zV{B0366Ts|6DSZ!WJta zOim4e;=)BE-z;7M(wSiK09pZn5@*K(^Ci_vKoZs8VCT*^|}M0x!(W*;KLxM0?2l@M(hs? zg8@jWz;%5@YxdYii1eA`@PYwIN!7Q$svsnsho}m!fZWzqO>vak43!o>YP-S&fUeZ= z*yz`Qq;|bwA&~0@)>Len<_NpNLOH(lM>h;|pow02}<^|MCi;`UofPH#e{r&ibJUcMz5hPEc zl!OEe09tkk0KW8g2e87fv5zX=xgruk&iUH*GztJ!eR7nL1&~?cRTnqTXfy!HLW}}1 zi8BsWs&do-kl8rN=BH8s>^VLMK?^`^V}=^A1|T<5kp$QjP@DP3pj!w;D#6l1D5c!e z^9mcu0mD={cA}&T%!Tb@08mq9?f)Bq;5^}*oCa%0mvf)G0)o$5I5y3CP57OHQ~}A= z)~sF$UM2z%D=h`KY~)s|AHi7;FIEMd9wG@~yaVI@9(~@jkrCy*)a5DeM^lN@1)zd9*1QO^X00000NkvXXu0mjf!9bI$ literal 0 HcmV?d00001 diff --git a/src/static/images/tabbar/icon_me_selected.png b/src/static/images/tabbar/icon_me_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..e4bd23a5951cbe68c1276776c51cd227f36940e3 GIT binary patch literal 897 zcmV-{1AhF8P)Px&J4r-ARCr$Pn_W)ZKoG~h<{0InP@alVg6|xVy5hVUkhvfsnMx*oR@s8H+H~2f_CJB1KIx?;r}$a(*;^m{HpH`kgbzbcj$; z1Mql!25EbA`rz-cYd1+E`hXbe#y&#&u5>vSAi_WlK+7;LcGr?DAPmF+xcEm%lLg?0 z!6pLGkbfu{N@0r?;3lUEKyl-uk#DwM0n(XZ>jBgpAY5?470>{tCg1v9W6Bi+&@d_$ z0Aj`w1JKCKJ^&g^ZZQBdR%40kLeNqg1^}~DlTJ@AfVJHqDAzy$Xzteugywkz1i%mm zj0zA*iVHDRyVN!e0ILG3{s@n*IIz+-SHlYiz$aDuz0_b$RgDm!0DPfPvN-Y`hDw*d zYNx`Xvpf1P*Klt1OF&L?DomY(YJnw5%Uc}DD6qtwhb2K@0(|SBxUd63^8%#P++@cAFvcvN?{AVHjzU35 z0)Uns0>EeAVUelDx;iLU`SoL z4{Xem1XE6GO0TH^ochGZhCt~E$L>>C!0PKQF=OWV-+fO(q=3-=e-7tL`V;}+rj-&S z=Da6XkBDxEw^;?TjZoI1C@qWWhUM!ma}H~yZ^~1tFIhzuu)%&pOsfDO7`M2Qomaqr Xt.title { + font-size: 32rpx; + text-align: center; + position: relative; + } +} + + +.detail-count { + border-radius: 44rpx 44rpx 0 0; + background: linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 54%, rgba(255, 255, 255, 0) 100%); +} + +.swiper-bg { + border-radius: 44rpx 44rpx 0 0; + background: #F5f5f5; + top: -2px; +} + +.flex { + display: flex; + align-items: center; + justify-content: space-between; +} + +.flex-sub { + flex: 1; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + /* height: 100%; */ + bottom: 100rpx; + position: fixed; + border: 1px solid #59cb56; + border-radius: 40rpx; + background-color: #ffffffdc; +} + + + + +.flex-column { + position: static; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + margin: 0px; + color: rgb(51, 51, 51); + background: rgb(255, 255, 255); + border-radius: 0px; + border-color: rgb(255, 255, 255); + border-width: 0px; + border-style: solid; +} + +.flex-row { + position: static; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + margin: 0px; + color: rgb(51, 51, 51); + border-radius: 0px; + border-color: rgb(255, 255, 255); + border-width: 0px; + border-style: solid; +} + +.address_box { + border: 2rpx solid #dfdfdf; + margin: 10PX; + border-radius: 10rpx; + background-color: #ffffff; +} \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..1e5c742 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,27 @@ +import type { App } from 'vue'; +import { createPinia } from 'pinia'; +// 数据持久化 +import { createPersistedState } from 'pinia-plugin-persistedstate'; + +// 导入子模块 +import useAppStore from './modules/app'; +import useUserStore from './modules/user'; + +// 安装pinia状态管理插件 +function setupStore(app: App) { + const store = createPinia(); + + const piniaPersist = createPersistedState({ + storage: { + getItem: uni.getStorageSync, + setItem: uni.setStorageSync, + }, + }); + store.use(piniaPersist); + + app.use(store); +} + +// 导出模块 +export { useAppStore, useUserStore }; +export default setupStore; diff --git a/src/store/modules/app/index.ts b/src/store/modules/app/index.ts new file mode 100644 index 0000000..458a2e4 --- /dev/null +++ b/src/store/modules/app/index.ts @@ -0,0 +1,58 @@ +import type { AppState } from './types'; +import { defineStore } from 'pinia'; + +const useAppStore = defineStore('app', { + state: (): AppState => ({ + systemInfo: {} as UniApp.GetSystemInfoResult, + }), + getters: { + getSystemInfo(): UniApp.GetSystemInfoResult { + return this.systemInfo; + }, + }, + actions: { + setSystemInfo(info: UniApp.GetSystemInfoResult) { + this.systemInfo = info; + }, + initSystemInfo() { + uni.getSystemInfo({ + success: (res: UniApp.GetSystemInfoResult) => { + this.setSystemInfo(res); + }, + fail: (err: any) => { + console.error(err); + }, + }); + }, + checkUpdate() { + const updateManager = uni.getUpdateManager(); + updateManager.onCheckForUpdate((res: UniApp.OnCheckForUpdateResult) => { + // 请求完新版本信息的回调 + + console.log(res.hasUpdate); + }); + updateManager.onUpdateReady(() => { + uni.showModal({ + title: '更新提示', + content: '新版本已经准备好,是否重启应用?', + success(res) { + if (res.confirm) { + // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 + updateManager.applyUpdate(); + } + }, + }); + }); + updateManager.onUpdateFailed((res: any) => { + console.error(res); + // 新的版本下载失败 + uni.showToast({ + title: '更新失败', + icon: 'error', + }); + }); + }, + }, +}); + +export default useAppStore; diff --git a/src/store/modules/app/types.ts b/src/store/modules/app/types.ts new file mode 100644 index 0000000..48131b0 --- /dev/null +++ b/src/store/modules/app/types.ts @@ -0,0 +1,3 @@ +export interface AppState { + systemInfo: UniApp.GetSystemInfoResult; +} diff --git a/src/store/modules/user/index.ts b/src/store/modules/user/index.ts new file mode 100644 index 0000000..4b035cc --- /dev/null +++ b/src/store/modules/user/index.ts @@ -0,0 +1,85 @@ +import type { LoginReq } from '@/api/user/types'; +import type { providerType, UserState } from './types'; +import { UserApi } from '@/api'; +import { clearToken, setToken } from '@/utils/auth'; + +import { defineStore } from 'pinia'; + +const useUserStore = defineStore('user', { + state: (): UserState => ({ + user_id: '0', + user_name: '游客登录', + avatar: '', + token: '', + }), + getters: { + userInfo(state: UserState): UserState { + return { ...state }; + }, + }, + actions: { + // 设置用户的信息 + setInfo(partial: Partial) { + this.$patch(partial); + }, + // 重置用户信息 + resetInfo() { + this.$reset(); + }, + // 获取用户信息 + async info() { + const result = await UserApi.profile(); + this.setInfo(result); + }, + // 异步登录并存储token + login(loginForm: LoginReq) { + return new Promise((resolve, reject) => { + UserApi.login(loginForm).then((res) => { + const token = res.token; + if (token) { + setToken(token); + } + resolve(res); + }).catch((error) => { + reject(error); + }); + }); + }, + // Logout + async logout() { + await UserApi.logout(); + this.resetInfo(); + clearToken(); + }, + // 小程序授权登录 + authLogin(provider: providerType = 'weixin') { + return new Promise((resolve, reject) => { + uni.login({ + provider, + success: async (result: UniApp.LoginRes) => { + if (result.code) { + const res = await UserApi.loginByCode({ code: result.code }); + resolve(res); + } + else { + reject(new Error(result.errMsg)); + } + }, + fail: (err: any) => { + console.error(`login error: ${err}`); + reject(err); + }, + }); + }); + }, + + // 获取菜单 + async goodsMenu() { + await UserApi.goodsMenu(); + }, + + }, + persist: true, +}); + +export default useUserStore; diff --git a/src/store/modules/user/types.ts b/src/store/modules/user/types.ts new file mode 100644 index 0000000..aac7cd4 --- /dev/null +++ b/src/store/modules/user/types.ts @@ -0,0 +1,16 @@ +export type RoleType = '' | '*' | 'user'; +export interface UserState { + user_id?: string; + user_name?: string; + avatar?: string; + token?: string; +} + +export type providerType = + | 'weixin' + | 'qq' + | 'sinaweibo' + | 'xiaomi' + | 'apple' + | 'univerify' + | undefined; diff --git a/src/uni.scss b/src/uni.scss new file mode 100644 index 0000000..dc84a5a --- /dev/null +++ b/src/uni.scss @@ -0,0 +1,54 @@ +@import 'uview-plus/theme.scss'; + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$u-primary: #59CB56; +$u-primary-dark: #76a3fd; +$u-success: #3ed268; +$u-warning: #fe9831; +$u-error: #fa4e62; + +/* 文字基本颜色 */ +$u-main-color: #1b233b; +$u-content-color: #60687e; +$u-tips-color: #7e869a; +$u-light-color: #bdc3d2; +$u-disabled-color: #dce0eb; + +/* 背景颜色 */ +$u-bg-color: #fbfbfb; + +/* 边框颜色 */ +$u-border-color: #f2f7f7; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$u-font-sm: 24rpx; +$u-font-base: 28rpx; +$u-font-lg: 32rpx; + +/* 图片尺寸 */ +$u-img-sm: 40rpx; +$u-img-base: 52rpx; +$u-img-lg: 80rpx; + +/* Border Radius */ +$u-border-radius-sm: 4rpx; +$u-border-radius-base: 6rpx; +$u-border-radius-lg: 12rpx; +$u-border-radius-circle: 50%; + +/* 水平间距 */ +$u-spacing-row-sm: 10rpx; +$u-spacing-row-base: 20rpx; +$u-spacing-row-lg: 30rpx; + +/* 垂直间距 */ +$u-spacing-col-sm: 8rpx; +$u-spacing-col-base: 16rpx; +$u-spacing-col-lg: 24px; + +/* 透明度 */ +$u-opacity-disabled: 0.3; diff --git a/src/uni_modules/uview-plus/LICENSE b/src/uni_modules/uview-plus/LICENSE new file mode 100644 index 0000000..c0ffd3e --- /dev/null +++ b/src/uni_modules/uview-plus/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 https://uiadmin.net/uview-plus + +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/src/uni_modules/uview-plus/README.md b/src/uni_modules/uview-plus/README.md new file mode 100644 index 0000000..d5ba135 --- /dev/null +++ b/src/uni_modules/uview-plus/README.md @@ -0,0 +1,74 @@ +

+ logo +

+

uview-plus 3.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/ijry/uview-plus?style=flat-square&logo=GitHub)](https://github.com/ijry/uview-plus) +[![forks](https://img.shields.io/github/forks/ijry/uview-plus?style=flat-square&logo=GitHub)](https://github.com/ijry/uview-plus) +[![issues](https://img.shields.io/github/issues/ijry/uview-plus?style=flat-square&logo=GitHub)](https://github.com/ijry/uview-plus/issues) +[![release](https://img.shields.io/github/v/release/ijry/uview-plus?style=flat-square)](https://gitee.com/jry/uview-plus/releases) +[![license](https://img.shields.io/github/license/ijry/uview-plus?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 说明 + +uview-plus,是uni-app全面兼容vue3/nvue/鸿蒙/uni-app-x(即将发布)的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水。uview-plus是基于uView2.x移植的支持vue3的版本,感谢uView。 + +## 可视化设计 + +uview-plus现已推出免费可视化设计,可以方便的进行页面可视化设计,导出源码即可使用。极大提高前端页面开发效率;如产品经理设计师直接使用更可作为高保真高可用原型制作工具,让设计稿即代码,无需传统的设计稿开发还原步骤。 + + + + + +## 文档 +[官方文档:https://uview-plus.jiangruyi.com](https://uview-plus.jiangruyi.com) +[备用文档:https://uiadmin.net/uview-plus](https://uiadmin.net/uview-plus) + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + +## 链接 + +- [官方文档](https://uview-plus.jiangruyi.com) +- [更新日志](https://uview-plus.jiangruyi.com/components/changelog.html) +- [升级指南](https://uview-plus.jiangruyi.com/components/changeGuide.html) +- [关于我们](https://uview-plus.jiangruyi.com/cooperation/about.html) + +## 交流反馈 + +欢迎加入我们的QQ群交流反馈:[点此跳转](https://uview-plus.jiangruyi.com/components/addQQGroup.html) + +## 关于PR + +> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uview-plus是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 +> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?name=uview-plus](https://ext.dcloud.net.cn/plugin?name=uview-plus) + +请通过[官网安装文档](https://uview-plus.jiangruyi.com/components/install.html)了解更详细的内容 + +## 快速上手 + +请通过[快速上手](https://uview-plus.jiangruyi.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +## 版权信息 +uview-plus遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uview-plus应用到您的产品中。 + diff --git a/src/uni_modules/uview-plus/changelog.md b/src/uni_modules/uview-plus/changelog.md new file mode 100644 index 0000000..9ddd3a6 --- /dev/null +++ b/src/uni_modules/uview-plus/changelog.md @@ -0,0 +1,921 @@ +## 3.4.52(2025-07-16) +fix: 修复底部安全区域组件兼容性 + +## 3.4.51(2025-07-14) +fix: 修复u-slider在click后没有触发change事件 + +## 3.4.50(2025-07-13) +feat: subsection分段器添加禁用参数 + +## 3.4.49(2025-07-11) +feat: picker支持bgColor、round、duration和overlayOpacity属性 + +## 3.4.48(2025-07-10) +fix: 官方文档Card示例组件多行显示省略号样式异常 + +feat: album组件支持自定义preview事件 + +## 3.4.47(2025-07-09) +fix: 修复datetime-picker打开时,数值可能出现对不上的问题 + +feat: Subsection 分段器添加支持从 list中读取激活文字颜色和未激活文字颜色 + +fix: 修复modal定义confirmButton + +fix: safe-bottom底部安全距离在小程序优先用JS计算 + +feat: 新增tree树形组件 + +## 3.4.46(2025-07-08) +feat: 上传组件预览视频支持videoPreviewObjectFit参数 + +feat: td增加多个样式props + +fix: 修复noticeBar字号增大时文字遮挡 + +feat: 项目工程增加pinia + +## 3.4.45(2025-07-01) +fix: 修复picker-data组件缺少name + +fix: 优化picker高度单位 + +## 3.4.44(2025-06-30) +fix: 修复indexList中stikcy属性写死的问题(always true) + +feat: 搜索框添加新的右侧插槽 + +fix: 修复indexList中丢失的select event + +fix: 解决因为层级问题导致点击picker选择器无法正常弹出 + +## 3.4.43(2025-06-16) +feat: table2支持header插槽 + +## 3.4.42(2025-06-12) +fix: 修复qrcode中默认id问题及canvas2时App无法绘制二维码 感谢@jiaruiyan + +## 3.4.41(2025-06-11) +feat: qrcode支持 新参数useRootHeightAndWidth 是否使用根节点的宽高 感谢@YJR + +feat: toast支持设置zIndex层级 + + + +## 3.4.40(2025-06-06) +fix: 升级二维码 canvas -> canvas2 感谢@yjr + +## 3.4.39(2025-05-31) +fix: 修改步骤条微信小程序下的布局 感谢@jiaruiyan + +fix: u-tabs在屏幕尺寸发生变化时滑块位置没有发生变化 感谢@aqzhft + +fix: 鸿蒙平台不支持plus.runtime.openWeb 感谢@aqzhft + +## 3.4.38(2025-05-30) +fix: 修复picker-data快捷组件缺少index + +fix: 修复picker组件双向绑定初始化及取消后复原再次打开后的当前项目 + +## 3.4.37(2025-05-29) +feat: modal支持设置动画时间 + +fix: DatetimePicker v-model 绑定异步设置无效 (#803) + +## 3.4.36(2025-05-28) +fix: lazy-load图片为空时显示错误 + +## 3.4.35(2025-05-28) +feat: 进度条支持从右往左加载 + +## 3.4.34(2025-05-28) +feat: table2支持自定义标题和单元格样式 + +## 3.4.33(2025-05-27) +fix: 修复小程序cate-tab第一次切换时没反应 感谢@jiaruiyan + +fix: 修复datetimepicker传入空字符串时导致组件崩溃 感谢@jiaruiyan + +fix: 修复album带单位的字符串参与计算导致的计算数据错误 感谢@jiaruiyan + +## 3.4.32(2025-05-26) +feat: 增加状态栏独立颜色配置支持支付宝小程序状态栏对背景色识别的不友好的情况 + +fix: 抖音二维码兼容修复 + +feat: cate-tab组件增加rightTop插槽 #715 + +fix: 修改 test.promise(res) 预期结果不一致 + +## 3.4.31(2025-05-17) +fix: 修复parse富文本组件导致鸿蒙运行白屏 + +fix: 去除演示项目中uni.$u用法便于兼容鸿蒙 + +feat: modal新增popupBottom插槽适用类似关闭按钮与内容区域分离的场景 + +## 3.4.30(2025-05-16) +feat: 新增pagination分页器组件 + +feat: popup新增bottom插槽适用类似关闭按钮与内容区域分离的场景 + +## 3.4.29(2025-05-15) +fix: 修复table2横向滚动样式 + +fix: 修复table2组件宽度兼容 + +fix: 修复image显示png图片时默认背景色问题 + +feat: cate-tab新增height参数便于设置组件高度 + +feat: 在index.js种导出digit.js便于使用 + +fix: 修复tag组件缺失iconColor属性 + +fix: 优化index-list的setValueForTouch方法逻辑 #708 + +feat: number-box支持change事件返回变动是点击了增加还是减少按钮 + +fix: 修复table2在小程序下部分情形不显示表格 + +## 3.4.28(2025-05-12) +feat: 新增table表格组件 + +feat: 新增element-plus风格的table2组件 + +## 3.4.27(2025-05-06) +fix: 修复card组件props + +## 3.4.26(2025-05-06) +fix: 修复test工具引入 + +feat: card组件支持全局设置props默认值 + +fix: 修复image在加载错误情况下高度和宽度不正确问题 + +fix: 修复picker-data快捷组件默认picker选中 + +fix: 修复日历month子组件缺失emits定义 + +## 3.4.25(2025-04-27) +fix: up-form编译在微信小程序里样式缺失 #640 + +fix: number-box输入为空时自动设为最小值 + +feat: picker与datetimepicke组件hasInput模式支持inputProps属性 + +## 3.4.24(2025-04-25) +fix: 修复upload上传逻辑(感谢@semdy) + +## 3.4.23(2025-04-24) +chore: 补全chooseFile TS类型(感谢@semdy) + +feat: u-search组件的图标支持显示在右边(感谢@semdy) + +chore: 修正chooseFile返回的数据TS类型(感谢@semdy) + +fix: PR导致缺失name影响uplad自动上传扩展名 + + +## 3.4.22(2025-04-22) +fix: 修复自动上传偶发的success被覆盖为uploading + +fix: float-button缺少key #677 + +fix: upload组件完善优化(感谢@semdy) + +fix: toolbar组件confirmColor属性默认改为空,以便默认使用主题色、标题字体加粗(感谢@semdy) + +## 3.4.21(2025-04-21) +feat: subsection分段器支持双向绑定current + +feat: select组件支持maxHeight属性 + +feat: datetime-picker支持inputBorder属性 + +## 3.4.20(2025-04-17) +fix: 修复navbar-mini提示border不存在 + +feat: status-bar支持对外暴露状态栏高度值 + +feat: upload支持自定义自动上传后处理逻辑便于对接不同规范后端 + +feat: 优化tag组件插槽 + + +## 3.4.19(2025-04-14) +fix: 修复model组件增加contentStyle带来的语法问题 + +## 3.4.18(2025-04-14) +fix: upload组件支持所有文件类型的onClickPreview事件 + +## 3.4.17(2025-04-11) +feat: select组件text插槽增加scope传递currentLabel + +## 3.4.16(2025-04-10) +fix: 修复安卓新加载字体方式导致Cannot read property '$page' of undefined + +## 3.4.15(2025-04-10) +improvment: 优化移步加载数据时swiper组件displayMultipleItems报错 + +feat: modal增加contentStyle属性 + +fix: 修复下拉菜单收起动画缺失 + +fix: 修复sticky的offset属性值为响应式数据时失效 #237 + + +## 3.4.14(2025-04-09) +feat: 支持自托管内置图标及扩展自定义图标 + +## 3.4.13(2025-04-08) +fix: tabs点击当前tab触发change事件 + +## 3.4.12(2025-04-02) +fix: dropdown关闭后遮挡页面内容 #653 + +fix u-sticky.vue Uncaught TypeError: e.querySelector is not a function at uni-app-view.umd.js + +## 3.4.11(2025-03-31) +fix: 优化upload组件预览视频的弹窗占位 + +## 3.4.10(2025-03-28) +feat: select组件新增多个props属性及优化 + +fix: 修复cate-tab报错index is not defined #661 + + +## 3.4.9(2025-03-27) +fix: 修复upload组件split报错 + +fix: 修复float-button缺少flex样式 + +## 3.4.8(2025-03-27) +fix: 修复upload组件split报错 + +fix: 移除mapState + +## 3.4.7(2025-03-26) +fix: 修复action-sheet-data和picker-data数据回显 + +fix: 优化upload组件视频封面兼容 + +## 3.4.6(2025-03-25) +feat: checkbox触发change时携带name参数 + +feat: upload组件支持服务器本机和阿里云OSS自动上传功能及上传进度条 + +feat: upload组件支持视频预览及oss上传时获取视频封面图 + +feat: 新增up-action-sheet-data快捷组件 + +feat: 新增up-picker-data快捷组件 + +## 3.4.5(2025-03-24) +feat: tag组件新增textSize/height/padding/borderRadius属性 + +feat: 新增genLightColor自动计算浅色方法及tag组件支持autoBgColor自动计算背景色 + +## 3.4.4(2025-03-13) +feat: modal增加异步操作进行中点击取消弹出提示特性防止操作被中断 + +fix: 修复toast组件show方法类型声明 + +## 3.4.3(2025-03-12) +fix: 修复textarea自动增高时在输入时高度异常 + +## 3.4.2(2025-03-11) +feat: step组件增加title插槽及增加辅助class便于自定义样式 + +## 3.4.1(2025-03-11) +feat: 新机制确保setConfig与http在nvue等环境下生效 + +## 3.3.74(2025-03-06) +fix: CateTab语法问题 + +## 3.3.73(2025-03-06) +feat: CateTab新增v-model:current属性 + +## 3.3.72(2025-02-28) +feat: tabs组件支持icon图标及插槽 + +## 3.3.71(2025-02-27) +feat: 折叠面板collapse增加titileStyle/iconStyle/rightIconStyle属性 + +feat: 折叠面板组件新增cellCustomStyle/cellCustomClass属性 + +fix: select组件盒模型 + +## 3.3.70(2025-02-24) +fix: 修改u-checkbox-group组件changes事件发生位置 + +## 3.3.69(2025-02-19) +picker允许传递禁用颜色props + +slider组件isRange状态下增加min max插槽分开显示内容 + +feat: 新增经典下拉框组件up-select + +## 3.3.68(2025-02-12) +fix: 修复weekText类型 + +feat: 日历增加单选与多选指定禁止选中的日期功能 + +fix: NumberBox删除数字时取值有误 #613 + +## 3.3.67(2025-02-11) +feat: navbar支持返回全局拦截器配置 + +feat: 表单-校验-支持无提示-得到校验结果 + +feat: picker传递hasInput属性时候,可以禁用输入框点击 + +## 3.3.66(2025-02-09) +feat: steps-item增加content插槽 + +## 3.3.65(2025-02-05) +feat: number-box组件新增按钮圆角/按钮宽度/数据框背景色/迷你模式 +## 3.3.64(2025-01-18) +feat: 日历组件支持自定义星期文案 + +## 3.3.63(2025-01-13) +fix: cate-tab支持支付宝小程序 + +fix: textarea 修复 placeholder-style + +fix: 修复在图片加载及加载失败时容器宽度 + +fix: waterfall组件报错Maximum recursive updates + +## 3.3.62(2025-01-10) +feat: sleder滑动选择器双滑块增加外层触发值的变动功能 + +fix: picker支持hasInput优化 + +## 3.3.61(2024-12-31) +fix: 修复微信getSystemInfoSync接口废弃警告 + +fix: 'u-status-bar' symbol missing + +## 3.3.60(2024-12-30) +feat: 日期组件支持禁用 + +fix: ts定义修复 #600 + +feat: Tabs组件选中时增加一个active的class #595 + +## 3.3.59(2024-12-30) +fix: Property "isH5" was accessed during render + +## 3.3.58(2024-12-26) +fix: slider组件change事件传参 + +## 3.3.57(2024-12-23) +fix: slider组件change事件传参 + +feat: 更新u-picker组件增加当前选中class类名 + +## 3.3.56(2024-12-18) +feat: 在u-alert组件中添加关闭事件 + +## 3.3.55(2024-12-17) +add: swiper增加双向绑定 + +## 3.3.54(2024-12-11) +add: qrcode支持props控制是否开启点击预览 + +add: 新增cate-tab垂直分类组件 + +## 3.3.53(2024-12-10) +fix: 修复popup居中模式点击内容区域触发关闭 + +## 3.3.52(2024-12-09) +add: notice-bar支持justifyContent属性 + +## 3.3.51(2024-12-09) +add: radio增加label插槽 + +## 3.3.50(2024-12-05) +fix: 优化popup等对禁止背景滚动机制 + +add: slider在弹窗使用示例 + +fix: card组件类名问题 + +## 3.3.49(2024-12-02) +fix: 去除album多余的$u引用 + +fix: 优化图片组件兼容性 + +add: picker组件增加zIndex属性 + +add: text增加是否占满剩余空间属性 + +add: input颜色示例 + +## 3.3.48(2024-11-29) +add: 文本行数限制样式提高到10行 + +del: 去除不跨端的inputmode +## 3.3.47(2024-11-28) +fix: 时间选择器在hasInput模式下部分机型键盘弹出 + +## 3.3.46(2024-11-26) +fix: 修复text传递事件参数 + +## 3.3.45(2024-11-24) +add: navbar组件支持配置标题颜色 + +fix: 边框按钮警告类型下颜色变量使用错误 + +## 3.3.43(2024-11-18) +fix: 支持瀑布流组件v-model置为[] + +add: 新增字符串路径访问工具方法getValueByPath + +add: 新增float-button悬浮按钮组件 + +## 3.3.42(2024-11-15) +add: button组件支持stop参数阻止冒泡 + +## 3.3.41(2024-11-13) +fix: u-radio-group invalid import + +improvement: 优化图片组件宽高及修复事件event传递 + +## 3.3.40(2024-11-11) +add: 组件radioGroup增加gap属性用于设置item间隔 + +fix: 修复H5全局导入 + +## 3.3.39(2024-11-04) +fix: 修复相册组件 + +## 3.3.38(2024-11-04) +fix: 修复视频预览报错 #510 + +add: album组件增加stop参数支持阻止事件冒泡 + +## 3.3.37(2024-10-21) +fix: 修复因为修改组件名称前缀,导致h5打包后$parent方法内找不到父组件的问题 + +fix: 修复datetime-picker选择2000年以前日期出错 + +## 3.3.36(2024-10-09) +fix: toast 自动关闭 + +feat: 增加微信小程序用户昵称审核完毕回调及修改 ts 定义文件 + +## 3.3.35(2024-10-08) +feat: modal和picker支持v-model:show双向绑定 + +feat: 支持checkbox使用slot自定义label后自带点击事件 #522 + +feat: swipe-action支持自动关闭特性及初始化打开状态 + +## 3.3.34(2024-09-23) +feat: 支持toast设置duration值为-1时不自动关闭 + +## 3.3.33(2024-09-18) +fix: 修复test.date('008')等验证结果不准确 + +## 3.3.32(2024-09-09) +fix: u-keyboard名称冲突warning + +## 3.3.31(2024-08-31) +feat: qrcode初步支持nvue + +## 3.3.30(2024-08-30) +fix: slider兼容step为字符串类型 + +## 3.3.29(2024-08-30) +fix: 修复tabs组件current参数为字符串处理逻辑 + +## 3.3.28(2024-08-26) +fix: list组件滑动偏移量不一样取绝对值导致iOS下拉偏移量计算错误 + +## 3.3.27(2024-08-22) +fix: 修复up-datetime-picker组件toolbarRightSlot定义缺失 + +fix: 修复FormItem的rules更新错误的问题 + +## 3.3.26(2024-08-22) +fix: 批量注册全局组件优化 + +## 3.3.25(2024-08-21) +fix: 修复slider在app-vue下样式问题 + +## 3.3.24(2024-08-19) +fix: 修复时间选择器hasInput模式小程序不生效 + +feat: 支持H5导入所有组件 + +## 3.3.23(2024-08-17) +feat: swipe-action增加closeAll方法 + +fix: 兼容tabs在某些场景下index小于0时自动设置为0 + +add: 通用mixin新增navTo页面跳转方法 + +## 3.3.21(2024-08-15) +improvement: 优化二维码组件loading及支持预览与长按事件 #351 + +fix: 修复swipe-action自动关闭其它功能及组件卸载自动关闭 + +## 3.3.20(2024-08-15) +refactor: props默认值文件移至组件文件夹内便于查找 +## 3.3.19(2024-08-14) +fix: 修复2被rpx兼容处理只在数字值生效 + +add: 增加swiper自定义插槽示例 + +## 3.3.18(2024-08-13) +feat: 新增支持datetime-picker工具栏插槽及picker插槽支持修复 +## 3.3.17(2024-08-12) +feat: swiper组件增加默认slot便于自定义 + +feat: grid新增间隔参数 + +feat: picker新增toolbar-right和toolbar-bottom插槽 + +## 3.3.16(2024-08-12) +fix: 解决swiper中title换行后多余的内容未被遮挡问题 + +fix: 修复迷你导航适配异形屏 + +## 3.3.15(2024-08-09) +fix: 修复默认单位设置为rpx时一些组件高度间距异常 + +fix: 修复日历在rpx单位下布局异常 + +feat: code-input支持App端展示输入光标 + +## 3.3.14(2024-08-09) +add: 增加box组件 + +add: 增加card卡片组件 + + +## 3.3.13(2024-08-08) +feat: input支持调用原生组件的focus和blur方法 + +improvement: grid-item条件编译优化 + +add: 新增迷你导航组件 + +## 3.3.12(2024-08-06) +improvement: $u挂载时机调整便于打包分离chunk + +fix: steps新增itemStyle属性名称冲突 + +## 3.3.11(2024-08-05) +feat: 新增支持upload组件的deletable/maxCount/accept变更监听 #333 + +feat: 新增支持tabs在swiper中使用 + +feat: 新增FormItem支持独立设置验证规则rules + +fix: 修复index-list未设置$slots.header时索引高亮失效 + +## 3.3.10(2024-08-02) +fix: 修复index-list偶发的滑动最后一个索引报错top不存在 + +fix: 修复gird在QQ、抖音小程序下布局 + +feat: 优化step支持自定义样式prop + +feat: action-sheet组件支持v-model:show双向绑定 + +fix: 小程序下steps和grid都统一采用grid布局 + +fix: 修复支付宝小程序下input类型为数字时双向绑定失效 + +feat : form 表单 validate 校验不通过后 error增加字段prop信息 #304 + +fix: form组件异步校异常验问题 #393 + +## 3.3.9(2024-08-01) +fix: 优化获取nvue元素 + +feat: modal新增contentTextAlign设置文案对齐方式 + +fix: 修复NVUE下tabbar文字不显示 #458 + +feat: loading-page增加zIndex属性 + +fix: 相册在宽度较小时换行问题 + +feat: album相册增加自适应自动换行模式 + +feat: album相册增加图片尺寸单位prop + +fix: 修复calendar日历月份居中 + +## 3.3.8(2024-07-31) +feat: slider支持进度条任意位置触发按钮拖动 + +fix: 修复app-vue下modal标题不居中 + +fix: #459 TS setConfig 声明异常 + +feat: tabs组件增加longPress长按事件 + +feat: 新增showRight属性控制collapse右侧图标显隐 + +fix: 优化nvue下css警告 + +## 3.3.7(2024-07-29) +feat: 支持IndexList组件支持在弹窗等场景下使用及联动优化 + +feat: popup组件支持v-model:show双向绑定 + +feat: 优化tabs的current双向绑定 + +fix: checkbox独立使用时checked赋初始值可以,但是手动切换时值没有做双向绑定! #455 + +feat: slider组件支持区间双滑块 + +fix: toast 支持自定义图标?可传入了决对路径的 icon也没有用 #409 + +feat: form-item校验失败时 增加class方便自定义显示错误的展示方式 #394 + +fix: up-cell的required配置不生效 #395 + +fix: 横向滚动组件,微信小程序编译后会有警告 #415 + +fix: u-picker内部对默认值defaultIndex的监听 #425 + +feat: toast 组件支持遮掩层穿透 #417 + +fix: 兼容vue的slot编译bug #423 + +fix: upload 微信小程序 点击预览视频报错 #424 + +fix: u-number-box 组件修改【integer, decimalLength, min, max 】props时没有触发绑定值更新 #429 + +feat: Tabs组件能否支持自定义插槽 #439 + +feat: ActionSheet 可以配置最大高度吗, 我当做select使用了。 #445 + +fix: cursor-pointer优化 + +feat: 新版slider组件兼容NVUE改造 + +feat: 新增slider组件手动实现以支持样式自定义 + +perf:补充TS声明提示信息 + +修复:ActionSheet 操作菜单cancelText属性为空DOM节点还存在并且可以点击问题 + +fix: 去除预留的beforeDestroy兼容容易在某些sdk下不识别条件编译 + +## 3.3.6(2024-07-23) +feat: u-album组件添加radius,shape参数,定义参考当前u-image参数 + +fix: 修复了calendar组件title和日期title未垂直居中的问题 + +fix: update:modelValue缺失emit定义 + +## 3.3.5(2024-07-10) +picker组件支持hasInput模式 + +## 3.3.4(2024-07-07) +fix: input组件双向绑定问题 #419 + +lazy-load完善emit + +优化通用小程序分享 + +## 3.3.2(2024-06-27) +fix: 在Nvue环境中编译,出现大量警告 #406 +## 3.3.1(2024-06-27) +u-button组件报错,找不到button mixins #407 +## 3.3.0(2024-06-27) +feat: checkbox支持label设置slot + +feat: modal增加customClass + +feat: navbar、popup、tabs、text支持customClass + +fix: cell组建缺少flex布局 + +fix: 修复微信小程序真机调试时快速输入出现文本回退问题 + +feat: tag增加默认slot + +公共mixin改造为按需导入语法 + +refactor: 组件props混入mixin改造为按需导入语法 + +fix: u-tabbar 安卓手机点击按钮变蓝问题 #396 + +feat: upload组建增加extension属性 + +fix: upload组件参数mode添加left + +fix: 修复阴影在非nvue时白色背景色不显示 + +## 3.2.24(2024-06-11) +fix: 修复时间选择器confirm事件触发时机导致2次才会触发v-model更新 +## 3.2.23(2024-05-30) +fix: #378 H5 u-input 在表单中初始值为空也会触发一次 formValidate(this,"change")事件导致进入页面直接校验了一次 + +fix: #373 搜索组件up-search的@clear事件无效 + +fix: #372 ActionSheet 组件的取消按钮触发区域太小 + +## 3.2.22(2024-05-13) +上传组件支持微信小程序预览视频 + +修复折叠面板右侧箭头不显示 + +修复uxp2px + +## 3.2.21(2024-05-10) +fix: loading-icon修复flex布局 +## 3.2.20(2024-05-10) +修复瀑布流大小写#355 +## 3.2.19(2024-05-10) +去除意外的文件引入 +## 3.2.18(2024-05-09) +fix: 349 popup 组件设置 zIndex 属性后,组件渲染异常# +feat: 搜索框增加adjustPosition属性 +fix: #331增加u-action-sheet__cancel +优化mixin兼容性 +feat: #326 up-list增加下拉刷新功能 +fix: #319 优化up-tabs参数与定义匹配 +fix: index-list组件微信小程序端使用自定义导航栏异常 +fix: #285 pickerimmediateChange 写死为true +fix: #111 u-scroll-list组件,隐藏指示器后报错, 提示找不到ref +list增加微信小程序防抖配置 + +## 3.2.17(2024-05-08) +fix: 支付宝小程序二维码渲染 +## 3.2.16(2024-05-06) +修复tabs中,当前激活样式的undefined bug + +fix: #341u-code 倒计时没结束前退出,再次进入结束后退出界面,再次进入重新开始倒计时bug + +受到uni-app内置text样式影响修复 + +## 3.2.15(2024-04-28) +优化时间选择器hasInput模式初始化值 +## 3.2.14(2024-04-24) +去除pleaseSetTranspileDependencies + +http采用useStore + +## 3.2.13(2024-04-22) +修复modal标题样式 + +优化日期选择器hasInput模式宽度 + +## 3.2.12(2024-04-22) +修复color应用 +## 3.2.11(2024-04-18) +修复import化带来的问题 +## 3.2.10(2024-04-17) +完善input清空事件App端失效的兼容性 + +修复日历组件二次打开后当前月份显示不正确 + +## 3.2.9(2024-04-16) +组件内uni.$u用法改为import引入 + +规范化及兼容性增强 + +## 3.2.8(2024-04-15) +修复up-tag语法错 +## 3.2.7(2024-04-15) +修复下拉菜单背景色在支付宝小程序无效 + +setConfig改为浅拷贝解决无法用import导入代替uni.$u.props设置 + +## 3.2.6(2024-04-14) +修复某些情况下滑动单元格默认右侧按钮是展开的问题 +## 3.2.5(2024-04-13) +调整分段器尺寸及修复窗口大小改变时重新计算尺寸 + +多个组件支持cursor-pointer增强PC端体验 + +## 3.2.4(2024-04-12) +初步支持typescript +## 3.2.3(2024-04-12) +fix: 修复square属性在小程序下无效问题 + +fix:修复lastIndex异常导致的column异常问题 + +fix: alipayapp picker style + +feat(button): 添加用户同意隐私协议事件回调 + +fix: input switch password + +fix: 修复u-code组件keepRuning失效问题 + +feat: form-item添加labelPosition属性 + +新增dropdown组件 + +分段器支持内部current值 + +优化cell和action-sheet视觉大小 + +修复tabs文字换行 + +## 3.2.2(2024-04-11) +修复换行符问题 +## 3.2.1(2024-04-11) +修复演示H5二维码 + +fix: #270 ReadMore 展开阅读更多内容变化兼容 + +fix: #238Calendar组件maxDate修改为不能小于minDate + +checkbox支持独立使用 + +修复popup中在微信小程序中真机调试滚动失效 + +## 3.2.0(2024-04-10) +修复轮播图在nvue显示 +修复疑似u-slider名称被占用导致slider在App下不显示 +解决微信小程序提示 Some selectors are not allowed in component wxss +示例中u-前缀统一为up- +增加瀑布流与图片懒加载组件 +fix: #308修复tag组件缺失iconColor参数 +fix: #297使用grid布局解决目前编译为抖音小程序无法开启virtualHost +## 3.1.52(2024-04-07) +工具类方法调用import化改造 +新增up-copy复制组件 +## 3.1.51(2024-04-07) +优化时间选择器自带输入框格式化显示 +防止按钮文字换行 +修复订单列表模板滑动 +增加u-qrcode二维码组件 +## 3.1.49(2024-03-27) +日期时间组件支持自带输入框 +fix: popup弹窗滚动穿透问题 +fix: 修复小程序numberbox bug +## 3.1.48(2024-03-18) +fix:[plugin:uni:pre-css] Unbalanced delimiter found in string +## 3.1.47(2024-03-18) +fix: setConfig设置组件默认参数无效问题 +fix: 修复自定义图标无效问题 +feat: 增加u-form-item单独设置规则变量 +fix:#293小程序是自定义导航栏的时候即传了customNavHeight的时候会出现跳转偏移的情况 + +## 3.1.46(2024-01-29) +beforeUnmount +## 3.1.45(2024-01-24) +fix: #262ext组件为超链接的情况下size属性不生效 +fix: #263最新版本3.1.42中微信小程序u-swipe-action-item报错 +fix: #224最新版本3.1.42中微信小程序u-swipe-action-item报错 +fix: #263支持支付宝小程序 +fix: #261u-input在直接修改v-model的绑定值时,每隔一次会无法出发change事件 +优化折叠面板兼容微信小程序 +## 3.1.42(2024-01-15) +修复u-number-box默认值0时在小程序不显示值 +优化u-code的timer判断 +优化支付宝小程序下textarea字数统计兼容 +优化u-calendar +## 3.1.41(2023-11-18) +#215优化u-cell图标容器间距问题 +## 3.1.40(2023-11-16) +修复u-slider双向绑定 +## 3.1.39(2023-11-10) +修复头条小程序不支持env(safe-area-inset-bottom) +优化#201u-grid 指定列数导致闪烁 +#193IndexList 索引列表 高度错误 +其他优化 +## 3.1.38(2023-10-08) +修复u-slider +## 3.1.37(2023-09-13) +完善emits定义及修复code-input双向数据绑定 +## 3.1.36(2023-08-08) +修复富文本事件名称大小写 +## 3.1.35(2023-08-02) +修复编译到支付宝小程序u-form报错 +## 3.1.34(2023-07-27) +修复App打包uni.$u.mpMixin方式sdk暂时不支持导致报错 +## 3.1.33(2023-07-13) +修复弹窗进入动画、模板页面样式等 +## 3.1.31(2023-07-11) +修复dayjs引用 +## 3.0.8(2022-07-12) +修复u-tag默认宽度撑满容器 +## 3.0.7(2022-07-12) +修复u-navbar自定义插槽演示示例 +## 3.0.6(2022-07-11) +修复u-image缺少emits申明 +## 3.0.5(2022-07-11) +修复u-upload缺少emits申明 +## 3.0.4(2022-07-10) +修复u-textarea/u-input/u-datetime-picker/u-number-box/u-radio-group/u-switch/u-rate在vue3下数据绑定 +## 3.0.3(2022-07-09) +启用自建演示二维码 +## 3.0.2(2022-07-09) +修复dayjs/clipboard等导致打包报错 +## 3.0.1(2022-07-09) +增加插件市场地址 +## 3.0.0(2022-07-09) +# uview-plus(vue3)初步发布 diff --git a/src/uni_modules/uview-plus/components/u--form/u--form.vue b/src/uni_modules/uview-plus/components/u--form/u--form.vue new file mode 100644 index 0000000..04c937e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u--form/u--form.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/uni_modules/uview-plus/components/u--image/u--image.vue b/src/uni_modules/uview-plus/components/u--image/u--image.vue new file mode 100644 index 0000000..5916065 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u--image/u--image.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/src/uni_modules/uview-plus/components/u--input/u--input.vue b/src/uni_modules/uview-plus/components/u--input/u--input.vue new file mode 100644 index 0000000..2a8933f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u--input/u--input.vue @@ -0,0 +1,74 @@ + + + \ No newline at end of file diff --git a/src/uni_modules/uview-plus/components/u--text/u--text.vue b/src/uni_modules/uview-plus/components/u--text/u--text.vue new file mode 100644 index 0000000..9cdcf7b --- /dev/null +++ b/src/uni_modules/uview-plus/components/u--text/u--text.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/uni_modules/uview-plus/components/u--textarea/u--textarea.vue b/src/uni_modules/uview-plus/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..becd23d --- /dev/null +++ b/src/uni_modules/uview-plus/components/u--textarea/u--textarea.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/uni_modules/uview-plus/components/u-action-sheet-data/u-action-sheet-data.vue b/src/uni_modules/uview-plus/components/u-action-sheet-data/u-action-sheet-data.vue new file mode 100644 index 0000000..234d5cf --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-action-sheet-data/u-action-sheet-data.vue @@ -0,0 +1,109 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/uview-plus/components/u-action-sheet/actionSheet.js b/src/uni_modules/uview-plus/components/u-action-sheet/actionSheet.js new file mode 100644 index 0000000..086898d --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-action-sheet/actionSheet.js @@ -0,0 +1,26 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:44:35 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/actionSheet.js + */ +export default { + // action-sheet组件 + actionSheet: { + show: false, + title: '', + description: '', + actions: [], + index: '', + cancelText: '', + closeOnClickAction: true, + safeAreaInsetBottom: true, + openType: '', + closeOnClickOverlay: true, + round: 0, + wrapMaxHeight: '600px' + } +} diff --git a/src/uni_modules/uview-plus/components/u-action-sheet/props.js b/src/uni_modules/uview-plus/components/u-action-sheet/props.js new file mode 100644 index 0000000..eb45834 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-action-sheet/props.js @@ -0,0 +1,62 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: () => defProps.actionSheet.show + }, + // 标题 + title: { + type: String, + default: () => defProps.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: () => defProps.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: () => defProps.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: () => defProps.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: () => defProps.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: () => defProps.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: () => defProps.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: () => defProps.actionSheet.round + }, + // 选项区域最大高度 + wrapMaxHeight: { + type: [String], + default: () => defProps.actionSheet.wrapMaxHeight + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue b/src/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..307ba91 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,282 @@ + + + + + + diff --git a/src/uni_modules/uview-plus/components/u-album/album.js b/src/uni_modules/uview-plus/components/u-album/album.js new file mode 100644 index 0000000..8aebaba --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-album/album.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:47:24 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/album.js + */ +export default { + // album 组件 + album: { + urls: [], + keyName: '', + singleSize: 180, + multipleSize: 70, + space: 6, + singleMode: 'scaleToFill', + multipleMode: 'aspectFill', + maxCount: 9, + previewFullImage: true, + rowCount: 3, + showMore: true, + autoWrap: false, + unit: 'px', + stop: true, + } +} diff --git a/src/uni_modules/uview-plus/components/u-album/props.js b/src/uni_modules/uview-plus/components/u-album/props.js new file mode 100644 index 0000000..a219acb --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-album/props.js @@ -0,0 +1,86 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: () => defProps.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: () => defProps.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: () => defProps.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: () => defProps.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: () => defProps.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: () => defProps.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: () => defProps.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: () => defProps.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: () => defProps.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: () => defProps.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: () => defProps.album.showMore + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: () => defProps.image.radius + }, + // 自适应换行 + autoWrap: { + type: Boolean, + default: () => defProps.album.autoWrap + }, + // 单位 + unit: { + type: [String], + default: () => defProps.album.unit + }, + // 阻止点击冒泡 + stop: { + type: Boolean, + default: () => defProps.album.stop + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-album/u-album.vue b/src/uni_modules/uview-plus/components/u-album/u-album.vue new file mode 100644 index 0000000..6686ddd --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-album/u-album.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-alert/alert.js b/src/uni_modules/uview-plus/components/u-alert/alert.js new file mode 100644 index 0000000..8f8182c --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-alert/alert.js @@ -0,0 +1,22 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:48:53 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/alert.js + */ +export default { + // alert警告组件 + alert: { + title: '', + type: 'warning', + description: '', + closable: false, + showIcon: false, + effect: 'light', + center: false, + fontSize: 14 + } +} diff --git a/src/uni_modules/uview-plus/components/u-alert/props.js b/src/uni_modules/uview-plus/components/u-alert/props.js new file mode 100644 index 0000000..9f150b5 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-alert/props.js @@ -0,0 +1,46 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 显示文字 + title: { + type: String, + default: () => defProps.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: () => defProps.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: () => defProps.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: () => defProps.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: () => defProps.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: () => defProps.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: () => defProps.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.alert.fontSize + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-alert/u-alert.vue b/src/uni_modules/uview-plus/components/u-alert/u-alert.vue new file mode 100644 index 0000000..5e15e67 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-alert/u-alert.vue @@ -0,0 +1,250 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js b/src/uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js new file mode 100644 index 0000000..29ad008 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js @@ -0,0 +1,23 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:49:55 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/avatarGroup.js + */ +export default { + // avatarGroup 组件 + avatarGroup: { + urls: [], + maxCount: 5, + shape: 'circle', + mode: 'scaleToFill', + showMore: true, + size: 40, + keyName: '', + gap: 0.5, + extraValue: 0 + } +} diff --git a/src/uni_modules/uview-plus/components/u-avatar-group/props.js b/src/uni_modules/uview-plus/components/u-avatar-group/props.js new file mode 100644 index 0000000..96ed871 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-avatar-group/props.js @@ -0,0 +1,54 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 头像图片组 + urls: { + type: Array, + default: () => defProps.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: () => defProps.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: () => defProps.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: () => defProps.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: () => defProps.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: () => defProps.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: () => defProps.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: () => defProps.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: () => defProps.avatarGroup.extraValue + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue b/src/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..67d1576 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-avatar/avatar.js b/src/uni_modules/uview-plus/components/u-avatar/avatar.js new file mode 100644 index 0000000..c097d4e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-avatar/avatar.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:49:22 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/avatar.js + */ +export default { + // avatar 组件 + avatar: { + src: '', + shape: 'circle', + size: 40, + mode: 'scaleToFill', + text: '', + bgColor: '#c0c4cc', + color: '#ffffff', + fontSize: 18, + icon: '', + mpAvatar: false, + randomBgColor: false, + defaultUrl: '', + colorIndex: '', + name: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-avatar/props.js b/src/uni_modules/uview-plus/components/u-avatar/props.js new file mode 100644 index 0000000..8fa15ac --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-avatar/props.js @@ -0,0 +1,81 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +import test from '../../libs/function/test'; +export const props = defineMixin({ + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: () => defProps.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: () => defProps.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: () => defProps.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: () => defProps.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: () => defProps.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: () => defProps.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: () => defProps.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: () => defProps.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: () => defProps.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: () => defProps.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: () => defProps.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return test.range(n, [0, 19]) || n === '' + }, + default: () => defProps.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: () => defProps.avatar.name + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-avatar/u-avatar.vue b/src/uni_modules/uview-plus/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..a113bf0 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-avatar/u-avatar.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-back-top/backtop.js b/src/uni_modules/uview-plus/components/u-back-top/backtop.js new file mode 100644 index 0000000..13052ab --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-back-top/backtop.js @@ -0,0 +1,27 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:50:18 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/backtop.js + */ +export default { + // backtop组件 + backtop: { + mode: 'circle', + icon: 'arrow-upward', + text: '', + duration: 100, + scrollTop: 0, + top: 400, + bottom: 100, + right: 20, + zIndex: 9, + iconStyle: { + color: '#909399', + fontSize: '19px' + } + } +} diff --git a/src/uni_modules/uview-plus/components/u-back-top/props.js b/src/uni_modules/uview-plus/components/u-back-top/props.js new file mode 100644 index 0000000..b714641 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-back-top/props.js @@ -0,0 +1,56 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: () => defProps.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: () => defProps.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: () => defProps.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: () => defProps.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: () => defProps.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: () => defProps.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: () => defProps.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: () => defProps.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: () => defProps.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: () => defProps.backtop.iconStyle + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-back-top/u-back-top.vue b/src/uni_modules/uview-plus/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..f7a5947 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-back-top/u-back-top.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-badge/badge.js b/src/uni_modules/uview-plus/components/u-badge/badge.js new file mode 100644 index 0000000..8818f98 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-badge/badge.js @@ -0,0 +1,27 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-23 19:51:50 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/badge.js + */ +export default { + // 徽标数组件 + badge: { + isDot: false, + value: '', + show: true, + max: 999, + type: 'error', + showZero: false, + bgColor: null, + color: null, + shape: 'circle', + numberType: 'overflow', + offset: [], + inverted: false, + absolute: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-badge/props.js b/src/uni_modules/uview-plus/components/u-badge/props.js new file mode 100644 index 0000000..5ed924b --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-badge/props.js @@ -0,0 +1,79 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: () => defProps.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: () => defProps.badge.value + }, + // 显示的内容 + modelValue: { + type: [Number, String], + default: () => defProps.badge.modelValue + }, + // 是否显示 + show: { + type: Boolean, + default: () => defProps.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: () => defProps.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: () => defProps.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: () => defProps.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: () => defProps.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: () => defProps.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: () => defProps.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: () => defProps.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: () => defProps.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: () => defProps.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: () => defProps.badge.absolute + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-badge/u-badge.vue b/src/uni_modules/uview-plus/components/u-badge/u-badge.vue new file mode 100644 index 0000000..6e03954 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-badge/u-badge.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-box/props.js b/src/uni_modules/uview-plus/components/u-box/props.js new file mode 100644 index 0000000..cfe75e4 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-box/props.js @@ -0,0 +1,27 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const propsBox = defineMixin({ + props: { + // 背景色 + bgColors: { + type: [Array], + default: ['#EEFCFF', '#FCF8FF', '#FDF8F2'] + }, + // 高度 + height: { + type: [String], + default: "160px" + }, + // 圆角 + borderRadius: { + type: [String], + default: "6px" + }, + // 间隔 + gap: { + type: [String], + default: "15px" + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-box/u-box.vue b/src/uni_modules/uview-plus/components/u-box/u-box.vue new file mode 100644 index 0000000..8ad979a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-box/u-box.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-button/button.js b/src/uni_modules/uview-plus/components/u-button/button.js new file mode 100644 index 0000000..4519ff8 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-button/button.js @@ -0,0 +1,43 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:51:27 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/button.js + */ +export default { + // button组件 + button: { + hairline: false, + type: 'info', + size: 'normal', + shape: 'square', + plain: false, + disabled: false, + loading: false, + loadingText: '', + loadingMode: 'spinner', + loadingSize: 15, + openType: '', + formType: '', + appParameter: '', + hoverStopPropagation: true, + lang: 'en', + sessionFrom: '', + sendMessageTitle: '', + sendMessagePath: '', + sendMessageImg: '', + showMessageCard: false, + dataName: '', + throttleTime: 0, + hoverStartTime: 0, + hoverStayTime: 200, + text: '', + icon: '', + iconColor: '', + color: '', + stop: true, + } +} diff --git a/src/uni_modules/uview-plus/components/u-button/nvue.scss b/src/uni_modules/uview-plus/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/src/uni_modules/uview-plus/components/u-button/props.js b/src/uni_modules/uview-plus/components/u-button/props.js new file mode 100644 index 0000000..c42d019 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-button/props.js @@ -0,0 +1,159 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: () => defProps.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: () => defProps.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: () => defProps.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: () => defProps.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: () => defProps.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: () => defProps.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: () => defProps.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: () => defProps.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: () => defProps.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: () => defProps.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: () => defProps.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: () => defProps.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: () => defProps.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: () => defProps.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: () => defProps.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: () => defProps.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: () => defProps.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: () => defProps.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: () => defProps.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: () => defProps.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: () => defProps.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: () => defProps.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: () => defProps.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: () => defProps.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: () => defProps.button.text + }, + // 按钮图标 + icon: { + type: String, + default: () => defProps.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: () => defProps.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: () => defProps.button.color + }, + // 停止冒泡 + stop: { + type: Boolean, + default: () => defProps.button.stop + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-button/u-button.vue b/src/uni_modules/uview-plus/components/u-button/u-button.vue new file mode 100644 index 0000000..8cf071b --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-button/u-button.vue @@ -0,0 +1,503 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-button/vue.scss b/src/uni_modules/uview-plus/components/u-button/vue.scss new file mode 100644 index 0000000..35fe999 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-button/vue.scss @@ -0,0 +1,81 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-warning; + +.u-button { + width: 100%; + white-space: nowrap; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/src/uni_modules/uview-plus/components/u-calendar/calendar.js b/src/uni_modules/uview-plus/components/u-calendar/calendar.js new file mode 100644 index 0000000..f0fb3bb --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-calendar/calendar.js @@ -0,0 +1,45 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:52:43 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/calendar.js + */ +export default { + // calendar 组件 + calendar: { + title: '日期选择', + showTitle: true, + showSubtitle: true, + mode: 'single', + startText: '开始', + endText: '结束', + customList: [], + color: '#3c9cff', + minDate: 0, + maxDate: 0, + defaultDate: null, + maxCount: Number.MAX_SAFE_INTEGER, // Infinity + rowHeight: 56, + formatter: null, + showLunar: false, + showMark: true, + confirmText: '确定', + confirmDisabledText: '确定', + show: false, + closeOnClickOverlay: false, + readonly: false, + showConfirm: true, + maxRange: Number.MAX_SAFE_INTEGER, // Infinity + rangePrompt: '', + showRangePrompt: true, + allowSameDay: false, + round: 0, + monthNum: 3, + weekText: ['一', '二', '三', '四', '五', '六', '日'], + forbidDays: [], + forbidDaysToast: '该日期已禁用', + } +} diff --git a/src/uni_modules/uview-plus/components/u-calendar/header.vue b/src/uni_modules/uview-plus/components/u-calendar/header.vue new file mode 100644 index 0000000..7861fb4 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-calendar/header.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-calendar/month.vue b/src/uni_modules/uview-plus/components/u-calendar/month.vue new file mode 100644 index 0000000..dfde12b --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-calendar/month.vue @@ -0,0 +1,608 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-calendar/props.js b/src/uni_modules/uview-plus/components/u-calendar/props.js new file mode 100644 index 0000000..7c0fb7c --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-calendar/props.js @@ -0,0 +1,160 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 日历顶部标题 + title: { + type: String, + default: () => defProps.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: () => defProps.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: () => defProps.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: () => defProps.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: () => defProps.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: () => defProps.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: () => defProps.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: () => defProps.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: () => defProps.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: () => defProps.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: () => defProps.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: () => defProps.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: () => defProps.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: () => defProps.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: () => defProps.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: () => defProps.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: () => defProps.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: () => defProps.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: () => defProps.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: () => defProps.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: () => defProps.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: () => defProps.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: () => defProps.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: () => defProps.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: () => defProps.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: () => defProps.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + }, + // 星期文案 + weekText: { + type: Array, + default: defProps.calendar.weekText + }, + forbidDays: { + type: Array, + default: defProps.calendar.forbidDays + }, + forbidDaysToast:{ + type: String, + default: defProps.calendar.forbidDaysToast + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-calendar/u-calendar.vue b/src/uni_modules/uview-plus/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..a64718f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-calendar/u-calendar.vue @@ -0,0 +1,411 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-calendar/util.js b/src/uni_modules/uview-plus/components/u-calendar/util.js new file mode 100644 index 0000000..18762c1 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-calendar/util.js @@ -0,0 +1,86 @@ +import dayjs from 'dayjs/esm/index' +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/src/uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js b/src/uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js new file mode 100644 index 0000000..af1baa0 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js @@ -0,0 +1,15 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:53:20 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/carKeyboard.js + */ +export default { + // 车牌号键盘 + carKeyboard: { + random: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-car-keyboard/props.js b/src/uni_modules/uview-plus/components/u-car-keyboard/props.js new file mode 100644 index 0000000..7cca0ae --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-car-keyboard/props.js @@ -0,0 +1,17 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue b/src/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..80e8ee0 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-card/card.js b/src/uni_modules/uview-plus/components/u-card/card.js new file mode 100644 index 0000000..9d71214 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-card/card.js @@ -0,0 +1,40 @@ +/* + * @Author : jry + * @Description : + * @version : 3.0 + * @Date : 2025-04-26 16:37:21 + * @LastAuthor : jry + * @lastTime : 2025-04-26 16:37:21 + * @FilePath : /uview-plus/libs/config/props/card.js + */ +export default { + // card组件的props + card: { + full: false, + title: '', + titleColor: '#303133', + titleSize: '15px', + subTitle: '', + subTitleColor: '#909399', + subTitleSize: '13px', + border: true, + index: '', + margin: '15px', + borderRadius: '8px', + headStyle: {}, + bodyStyle: {}, + footStyle: {}, + headBorderBottom: true, + footBorderTop: true, + thumb: '', + thumbWidth: '30px', + thumbCircle: false, + padding: '15px', + paddingHead: '', + paddingBody: '', + paddingFoot: '', + showHead: true, + showFoot: true, + boxShadow: 'none' + } +} diff --git a/src/uni_modules/uview-plus/components/u-card/props.js b/src/uni_modules/uview-plus/components/u-card/props.js new file mode 100644 index 0000000..fa8d72a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-card/props.js @@ -0,0 +1,134 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const propsCard = defineMixin({ + props: { + // 与屏幕两侧是否留空隙 + full: { + type: Boolean, + default: () => defProps.card.full + }, + // 标题 + title: { + type: String, + default: () => defProps.card.title + }, + // 标题颜色 + titleColor: { + type: String, + default: () => defProps.card.titleColor + }, + // 标题字体大小 + titleSize: { + type: [Number, String], + default: () => defProps.card.titleSize + }, + // 副标题 + subTitle: { + type: String, + default: () => defProps.card.subTitle + }, + // 副标题颜色 + subTitleColor: { + type: String, + default: () => defProps.card.subTitleColor + }, + // 副标题字体大小 + subTitleSize: { + type: [Number, String], + default: () => defProps.card.subTitleSize + }, + // 是否显示外部边框,只对full=false时有效(卡片与边框有空隙时) + border: { + type: Boolean, + default: () => defProps.card.border + }, + // 用于标识点击了第几个 + index: { + type: [Number, String, Object], + default: () => defProps.card.index + }, + // 用于隔开上下左右的边距,带单位的写法,如:"30px 30px","20px 20px 30px 30px" + margin: { + type: String, + default: () => defProps.card.margin + }, + // card卡片的圆角 + borderRadius: { + type: [Number, String], + default: () => defProps.card.borderRadius + }, + // 头部自定义样式,对象形式 + headStyle: { + type: Object, + default: () => defProps.card.headStyle + }, + // 主体自定义样式,对象形式 + bodyStyle: { + type: Object, + default: () => defProps.card.bodyStyle + }, + // 底部自定义样式,对象形式 + footStyle: { + type: Object, + default: () => defProps.card.footStyle + }, + // 头部是否下边框 + headBorderBottom: { + type: Boolean, + default: () => defProps.card.headBorderBottom + }, + // 底部是否有上边框 + footBorderTop: { + type: Boolean, + default: () => defProps.card.footBorderTop + }, + // 标题左边的缩略图 + thumb: { + type: String, + default: () => defProps.card.thumb + }, + // 缩略图宽高 + thumbWidth: { + type: [String, Number], + default: () => defProps.card.thumbWidth + }, + // 缩略图是否为圆形 + thumbCircle: { + type: Boolean, + default: () => defProps.card.thumbCircle + }, + // 给head,body,foot的内边距 + padding: { + type: [String, Number], + default: () => defProps.card.padding + }, + paddingHead: { + type: [String, Number], + default: () => defProps.card.paddingHead + }, + paddingBody: { + type: [String, Number], + default: () => defProps.card.paddingBody + }, + paddingFoot: { + type: [String, Number], + default: () => defProps.card.paddingFoot + }, + // 是否显示头部 + showHead: { + type: Boolean, + default: () => defProps.card.showHead + }, + // 是否显示尾部 + showFoot: { + type: Boolean, + default: () => defProps.card.showFoot + }, + // 卡片外围阴影,字符串形式 + boxShadow: { + type: String, + default: () => defProps.card.boxShadow + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-card/u-card.vue b/src/uni_modules/uview-plus/components/u-card/u-card.vue new file mode 100644 index 0000000..0d98131 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-card/u-card.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue b/src/uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue new file mode 100644 index 0000000..ef69f8f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue @@ -0,0 +1,359 @@ + + + + diff --git a/src/uni_modules/uview-plus/components/u-cell-group/cellGroup.js b/src/uni_modules/uview-plus/components/u-cell-group/cellGroup.js new file mode 100644 index 0000000..d48a9cd --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-cell-group/cellGroup.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:54:16 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/cellGroup.js + */ +export default { + // cell-group组件的props + cellGroup: { + title: '', + border: true, + customStyle: {} + } +} diff --git a/src/uni_modules/uview-plus/components/u-cell-group/props.js b/src/uni_modules/uview-plus/components/u-cell-group/props.js new file mode 100644 index 0000000..59c2012 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-cell-group/props.js @@ -0,0 +1,16 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 分组标题 + title: { + type: String, + default: () => defProps.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: () => defProps.cellGroup.border + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue b/src/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..0fd1fb4 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,66 @@ + + + + + + diff --git a/src/uni_modules/uview-plus/components/u-cell/cell.js b/src/uni_modules/uview-plus/components/u-cell/cell.js new file mode 100644 index 0000000..425ea3f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-cell/cell.js @@ -0,0 +1,35 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-23 20:53:09 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/cell.js + */ +export default { + // cell组件的props + cell: { + customClass: '', + title: '', + label: '', + value: '', + icon: '', + disabled: false, + border: true, + center: false, + url: '', + linkType: 'navigateTo', + clickable: false, + isLink: false, + required: false, + arrowDirection: '', + iconStyle: {}, + rightIconStyle: {}, + rightIcon: 'arrow-right', + titleStyle: {}, + size: '', + stop: true, + name: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-cell/props.js b/src/uni_modules/uview-plus/components/u-cell/props.js new file mode 100644 index 0000000..73f5210 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-cell/props.js @@ -0,0 +1,112 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 标题 + title: { + type: [String, Number], + default: () => defProps.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: () => defProps.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: () => defProps.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: () => defProps.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: () => defProps.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: () => defProps.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: () => defProps.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: () => defProps.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: () => defProps.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: () => defProps.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: () => defProps.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: () => defProps.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: () => defProps.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: () => defProps.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return defProps.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return defProps.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return defProps.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: () => defProps.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: () => defProps.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: () => defProps.cell.name + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-cell/u-cell.vue b/src/uni_modules/uview-plus/components/u-cell/u-cell.vue new file mode 100644 index 0000000..b92f422 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-cell/u-cell.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js b/src/uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js new file mode 100644 index 0000000..d0e22b6 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js @@ -0,0 +1,29 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:54:47 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/checkboxGroup.js + */ +export default { + // checkbox-group组件 + checkboxGroup: { + name: '', + value: [], + shape: 'square', + disabled: false, + activeColor: '#2979ff', + inactiveColor: '#c8c9cc', + size: 18, + placement: 'row', + labelSize: 14, + labelColor: '#303133', + labelDisabled: false, + iconColor: '#ffffff', + iconSize: 12, + iconPlacement: 'left', + borderBottom: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-checkbox-group/props.js b/src/uni_modules/uview-plus/components/u-checkbox-group/props.js new file mode 100644 index 0000000..222d184 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-checkbox-group/props.js @@ -0,0 +1,93 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 标识符 + name: { + type: String, + default: () => defProps.checkboxGroup.name + }, + // #ifdef VUE3 + // 绑定的值 + modelValue: { + type: Array, + default: () => defProps.checkboxGroup.value + }, + // #endif + // #ifdef VUE2 + // 绑定的值 + value: { + type: Array, + default: () => defProps.checkboxGroup.value + }, + // #endif + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: () => defProps.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: () => defProps.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: () => defProps.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: () => defProps.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: () => defProps.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: () => defProps.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: () => defProps.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: () => defProps.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: () => defProps.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: () => defProps.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: () => defProps.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: () => defProps.checkboxGroup.borderBottom + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue b/src/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..fb30148 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-checkbox/checkbox.js b/src/uni_modules/uview-plus/components/u-checkbox/checkbox.js new file mode 100644 index 0000000..2310901 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-checkbox/checkbox.js @@ -0,0 +1,27 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-23 21:06:59 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/checkbox.js + */ +export default { + // checkbox组件 + checkbox: { + name: '', + shape: '', + size: '', + checkbox: false, + disabled: '', + activeColor: '', + inactiveColor: '', + iconSize: '', + iconColor: '', + label: '', + labelSize: '', + labelColor: '', + labelDisabled: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-checkbox/props.js b/src/uni_modules/uview-plus/components/u-checkbox/props.js new file mode 100644 index 0000000..66d8150 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-checkbox/props.js @@ -0,0 +1,76 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: () => defProps.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: () => defProps.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: () => defProps.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: () => defProps.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: () => defProps.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: () => defProps.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: () => defProps.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: () => defProps.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: () => defProps.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: () => defProps.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: () => defProps.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: () => defProps.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: () => defProps.checkbox.labelDisabled + }, + // 是否独立使用 + usedAlone: { + type: [Boolean], + default: () => false + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue b/src/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..ac4686c --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,388 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-circle-progress/circleProgress.js b/src/uni_modules/uview-plus/components/u-circle-progress/circleProgress.js new file mode 100644 index 0000000..b3a9b43 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-circle-progress/circleProgress.js @@ -0,0 +1,15 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:55:02 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/circleProgress.js + */ +export default { + // circleProgress 组件 + circleProgress: { + percentage: 30 + } +} diff --git a/src/uni_modules/uview-plus/components/u-circle-progress/props.js b/src/uni_modules/uview-plus/components/u-circle-progress/props.js new file mode 100644 index 0000000..ff1eeaa --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-circle-progress/props.js @@ -0,0 +1,10 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + percentage: { + type: [String, Number], + default: () => defProps.circleProgress.percentage + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue b/src/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..f252ed0 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-code-input/codeInput.js b/src/uni_modules/uview-plus/components/u-code-input/codeInput.js new file mode 100644 index 0000000..cac9265 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-code-input/codeInput.js @@ -0,0 +1,29 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:55:58 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/codeInput.js + */ +export default { + // codeInput 组件 + codeInput: { + adjustPosition: true, + maxlength: 6, + dot: false, + mode: 'box', + hairline: false, + space: 10, + value: '', + focus: false, + bold: false, + color: '#606266', + fontSize: 18, + size: 35, + disabledKeyboard: false, + borderColor: '#c9cacc', + disabledDot: true + } +} diff --git a/src/uni_modules/uview-plus/components/u-code-input/props.js b/src/uni_modules/uview-plus/components/u-code-input/props.js new file mode 100644 index 0000000..0a4b1e8 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-code-input/props.js @@ -0,0 +1,90 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: () => defProps.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: () => defProps.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: () => defProps.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: () => defProps.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: () => defProps.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: () => defProps.codeInput.space + }, + // #ifdef VUE3 + // 预置值 + modelValue: { + type: [String, Number], + default: () => defProps.codeInput.value + }, + // #endif + // #ifdef VUE2 + // 预置值 + value: { + type: [String, Number], + default: () => defProps.codeInput.value + }, + // #endif + // 是否自动获取焦点 + focus: { + type: Boolean, + default: () => defProps.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: () => defProps.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: () => defProps.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: () => defProps.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: () => defProps.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: () => defProps.codeInput.disabledDot + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-code-input/u-code-input.vue b/src/uni_modules/uview-plus/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..d02a3aa --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-code-input/u-code-input.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-code/code.js b/src/uni_modules/uview-plus/components/u-code/code.js new file mode 100644 index 0000000..693417a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-code/code.js @@ -0,0 +1,21 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:55:27 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/code.js + */ + +export default { + // code 组件 + code: { + seconds: 60, + startText: '获取验证码', + changeText: 'X秒重新获取', + endText: '重新获取', + keepRunning: false, + uniqueKey: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-code/props.js b/src/uni_modules/uview-plus/components/u-code/props.js new file mode 100644 index 0000000..60977b5 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-code/props.js @@ -0,0 +1,36 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: () => defProps.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: () => defProps.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: () => defProps.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: () => defProps.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: () => defProps.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: () => defProps.code.uniqueKey + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-code/u-code.vue b/src/uni_modules/uview-plus/components/u-code/u-code.vue new file mode 100644 index 0000000..24b09d8 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-code/u-code.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-col/col.js b/src/uni_modules/uview-plus/components/u-col/col.js new file mode 100644 index 0000000..7621653 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-col/col.js @@ -0,0 +1,19 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:56:12 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/col.js + */ +export default { + // col 组件 + col: { + span: 12, + offset: 0, + justify: 'start', + align: 'stretch', + textAlign: 'left' + } +} diff --git a/src/uni_modules/uview-plus/components/u-col/props.js b/src/uni_modules/uview-plus/components/u-col/props.js new file mode 100644 index 0000000..b28decb --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-col/props.js @@ -0,0 +1,31 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: () => defProps.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: () => defProps.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: () => defProps.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: () => defProps.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: () => defProps.col.textAlign + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-col/u-col.vue b/src/uni_modules/uview-plus/components/u-col/u-col.vue new file mode 100644 index 0000000..816bcbf --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-col/u-col.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-collapse-item/collapseItem.js b/src/uni_modules/uview-plus/components/u-collapse-item/collapseItem.js new file mode 100644 index 0000000..9611c47 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-collapse-item/collapseItem.js @@ -0,0 +1,31 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:56:42 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/collapseItem.js + */ +export default { + // collapseItem 组件 + collapseItem: { + title: '', + value: '', + label: '', + disabled: false, + isLink: true, + clickable: true, + border: true, + align: 'left', + name: '', + icon: '', + duration: 300, + showRight: true, + titleStyle: {}, + iconStyle: {}, + rightIconStyle: {}, + cellCustomStyle: {}, + cellCustomClass: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-collapse-item/props.js b/src/uni_modules/uview-plus/components/u-collapse-item/props.js new file mode 100644 index 0000000..095c571 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-collapse-item/props.js @@ -0,0 +1,97 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 标题 + title: { + type: String, + default: () => defProps.collapseItem.title + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.titleStyle + } + }, + // 标题右侧内容 + value: { + type: String, + default: () => defProps.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: () => defProps.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: () => defProps.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: () => defProps.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: () => defProps.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: () => defProps.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: () => defProps.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: () => defProps.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: () => defProps.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: () => defProps.collapseItem.duration + }, + // 显示右侧图标 + showRight: { + type: Boolean, + default: () => defProps.collapseItem.showRight + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.rightIconStyle + } + }, + cellCustomStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.cellCustomStyle + } + }, + cellCustomClass: { + type: String, + default: () => defProps.collapseItem.cellCustomClass + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue b/src/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..f4db885 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-collapse/collapse.js b/src/uni_modules/uview-plus/components/u-collapse/collapse.js new file mode 100644 index 0000000..c2b9fdd --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-collapse/collapse.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:56:30 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/collapse.js + */ +export default { + // collapse 组件 + collapse: { + value: null, + accordion: false, + border: true + } +} diff --git a/src/uni_modules/uview-plus/components/u-collapse/props.js b/src/uni_modules/uview-plus/components/u-collapse/props.js new file mode 100644 index 0000000..7712603 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-collapse/props.js @@ -0,0 +1,21 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: () => defProps.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: () => defProps.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: () => defProps.collapse.border + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-collapse/u-collapse.vue b/src/uni_modules/uview-plus/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..f556522 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-column-notice/columnNotice.js b/src/uni_modules/uview-plus/components/u-column-notice/columnNotice.js new file mode 100644 index 0000000..f1497af --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-column-notice/columnNotice.js @@ -0,0 +1,25 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:57:16 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/columnNotice.js + */ +export default { + // columnNotice 组件 + columnNotice: { + text: '', + icon: 'volume', + mode: '', + color: '#f9ae3d', + bgColor: '#fdf6ec', + fontSize: 14, + speed: 80, + step: false, + duration: 1500, + disableTouch: true, + justifyContent: 'flex-start' + } +} diff --git a/src/uni_modules/uview-plus/components/u-column-notice/props.js b/src/uni_modules/uview-plus/components/u-column-notice/props.js new file mode 100644 index 0000000..4e3cc1f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-column-notice/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: () => defProps.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: () => defProps.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: () => defProps.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: () => defProps.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: () => defProps.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: () => defProps.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: () => defProps.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: () => defProps.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: () => defProps.columnNotice.disableTouch + }, + justifyContent: { + type: String, + default: () => defProps.columnNotice.justifyContent + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue b/src/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..eaac95d --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-copy/u-copy.vue b/src/uni_modules/uview-plus/components/u-copy/u-copy.vue new file mode 100644 index 0000000..3a71910 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-copy/u-copy.vue @@ -0,0 +1,70 @@ + + + + diff --git a/src/uni_modules/uview-plus/components/u-count-down/countDown.js b/src/uni_modules/uview-plus/components/u-count-down/countDown.js new file mode 100644 index 0000000..81e33b1 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-count-down/countDown.js @@ -0,0 +1,18 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:11:29 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/countDown.js + */ +export default { + // u-count-down 计时器组件 + countDown: { + time: 0, + format: 'HH:mm:ss', + autoStart: true, + millisecond: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-count-down/props.js b/src/uni_modules/uview-plus/components/u-count-down/props.js new file mode 100644 index 0000000..6dbf1c2 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-count-down/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: () => defProps.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: () => defProps.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: () => defProps.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: () => defProps.countDown.millisecond + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-count-down/u-count-down.vue b/src/uni_modules/uview-plus/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..e6ea5f8 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-count-down/u-count-down.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-count-down/utils.js b/src/uni_modules/uview-plus/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/src/uni_modules/uview-plus/components/u-count-to/countTo.js b/src/uni_modules/uview-plus/components/u-count-to/countTo.js new file mode 100644 index 0000000..a536cde --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-count-to/countTo.js @@ -0,0 +1,25 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:57:32 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/countTo.js + */ +export default { + // countTo 组件 + countTo: { + startVal: 0, + endVal: 0, + duration: 2000, + autoplay: true, + decimals: 0, + useEasing: true, + decimal: '.', + color: '#606266', + fontSize: 22, + bold: false, + separator: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-count-to/props.js b/src/uni_modules/uview-plus/components/u-count-to/props.js new file mode 100644 index 0000000..0b97c1f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-count-to/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: () => defProps.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: () => defProps.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: () => defProps.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: () => defProps.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: () => defProps.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: () => defProps.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: () => defProps.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: () => defProps.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: () => defProps.countTo.separator + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-count-to/u-count-to.vue b/src/uni_modules/uview-plus/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..92623a9 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-count-to/u-count-to.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js b/src/uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js new file mode 100644 index 0000000..b2b87e4 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js @@ -0,0 +1,42 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:57:48 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/datetimePicker.js + */ +export default { + // datetimePicker 组件 + datetimePicker: { + show: false, + popupMode: 'bottom', + showToolbar: true, + value: '', + title: '', + mode: 'datetime', + maxDate: new Date(new Date().getFullYear() + 10, 0, 1).getTime(), + minDate: new Date(new Date().getFullYear() - 10, 0, 1).getTime(), + minHour: 0, + maxHour: 23, + minMinute: 0, + maxMinute: 59, + filter: null, + formatter: null, + loading: false, + itemHeight: 44, + cancelText: '取消', + confirmText: '确认', + cancelColor: '#909193', + confirmColor: '#3c9cff', + visibleItemCount: 5, + closeOnClickOverlay: false, + defaultIndex: [], + inputBorder: 'surround', + disabled: false, + disabledColor: '', + placeholder: '请选择', + inputProps: {}, + } +} diff --git a/src/uni_modules/uview-plus/components/u-datetime-picker/props.js b/src/uni_modules/uview-plus/components/u-datetime-picker/props.js new file mode 100644 index 0000000..8dd338d --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-datetime-picker/props.js @@ -0,0 +1,168 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否显示input + hasInput: { + type: Boolean, + default: false + }, + inputProps: { + type: Object, + default: () => { + return {} + } + }, + inputBorder: { + type: String, + default: () => defProps.input.inputBorder + }, + disabled: { + type: Boolean, + default: () => defProps.input.disabled + }, + disabledColor:{ + type: String, + default: () => defProps.input.disabledColor + }, + placeholder: { + type: String, + default: () => defProps.input.placeholder + }, + format: { + type: String, + default: () => '' + }, + // 是否打开组件 + show: { + type: Boolean, + default: () => defProps.datetimePicker.show + }, + // 弹出的方向,可选值为 top bottom right left center + popupMode: { + type: String, + default: () => defProps.picker.popupMode + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: () => defProps.datetimePicker.showToolbar + }, + // 工具栏右侧内容 + toolbarRightSlot:{ + type: Boolean, + default: false + }, + // #ifdef VUE2 + // 绑定值 + value: { + type: [String, Number], + default: () => defProps.datetimePicker.value + }, + // #endif + // #ifdef VUE3 + // 绑定值 + modelValue: { + type: [String, Number], + default: () => defProps.datetimePicker.value + }, + // #endif + // 顶部标题 + title: { + type: String, + default: () => defProps.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: () => defProps.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: () => defProps.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: () => defProps.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: () => defProps.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: () => defProps.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: () => defProps.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: () => defProps.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: () => defProps.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: () => defProps.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: () => defProps.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: () => defProps.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: () => defProps.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: () => defProps.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: () => defProps.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: () => defProps.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: () => defProps.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: () => defProps.datetimePicker.defaultIndex + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue b/src/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..19f304c --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,520 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-divider/divider.js b/src/uni_modules/uview-plus/components/u-divider/divider.js new file mode 100644 index 0000000..55a8ce4 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-divider/divider.js @@ -0,0 +1,23 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 16:58:03 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/divider.js + */ +export default { + // divider组件 + divider: { + dashed: false, + hairline: true, + dot: false, + textPosition: 'center', + text: '', + textSize: 14, + textColor: '#909399', + lineColor: '#dcdfe6' + } + +} diff --git a/src/uni_modules/uview-plus/components/u-divider/props.js b/src/uni_modules/uview-plus/components/u-divider/props.js new file mode 100644 index 0000000..ec3fd8f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-divider/props.js @@ -0,0 +1,46 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: () => defProps.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: () => defProps.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: () => defProps.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: () => defProps.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: () => defProps.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: () => defProps.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: () => defProps.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: () => defProps.divider.lineColor + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-divider/u-divider.vue b/src/uni_modules/uview-plus/components/u-divider/u-divider.vue new file mode 100644 index 0000000..9c2ad2f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-divider/u-divider.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-dropdown-item/props.js b/src/uni_modules/uview-plus/components/u-dropdown-item/props.js new file mode 100644 index 0000000..e5e0265 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-dropdown-item/props.js @@ -0,0 +1,47 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // #ifdef VUE3 + // 当前选中项的value值 + modelValue: { + type: [Number, String, Array], + default: '' + }, + // #endif + // #ifdef VUE2 + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // #endif + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue b/src/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..c31eddb --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-dropdown/props.js b/src/uni_modules/uview-plus/components/u-dropdown/props.js new file mode 100644 index 0000000..4614b96 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-dropdown/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 菜单标题和选项的激活态颜色 + activeColor: { + type: String, + default: '#2979ff' + }, + // 菜单标题和选项的未激活态颜色 + inactiveColor: { + type: String, + default: '#606266' + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue b/src/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..ca7c5cc --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-empty/empty.js b/src/uni_modules/uview-plus/components/u-empty/empty.js new file mode 100644 index 0000000..fe20445 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-empty/empty.js @@ -0,0 +1,26 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:03:27 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/empty.js + */ +export default { + // empty组件 + empty: { + icon: '', + text: '', + textColor: '#c0c4cc', + textSize: 14, + iconColor: '#c0c4cc', + iconSize: 90, + mode: 'data', + width: 160, + height: 160, + show: true, + marginTop: 0 + } + +} diff --git a/src/uni_modules/uview-plus/components/u-empty/props.js b/src/uni_modules/uview-plus/components/u-empty/props.js new file mode 100644 index 0000000..40edd11 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-empty/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: () => defProps.empty.icon + }, + // 提示文字 + text: { + type: String, + default: () => defProps.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: () => defProps.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: () => defProps.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: () => defProps.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: () => defProps.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: () => defProps.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: () => defProps.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: () => defProps.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: () => defProps.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: () => defProps.empty.marginTop + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-empty/u-empty.vue b/src/uni_modules/uview-plus/components/u-empty/u-empty.vue new file mode 100644 index 0000000..f2ff4ea --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-empty/u-empty.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-float-button/u-float-button.vue b/src/uni_modules/uview-plus/components/u-float-button/u-float-button.vue new file mode 100644 index 0000000..c67f33a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-float-button/u-float-button.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-form-item/formItem.js b/src/uni_modules/uview-plus/components/u-form-item/formItem.js new file mode 100644 index 0000000..5afc562 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-form-item/formItem.js @@ -0,0 +1,24 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:04:32 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/formItem.js + */ +export default { + // formItem 组件 + formItem: { + label: '', + prop: '', + rules: [], + borderBottom: '', + labelPosition: '', + labelWidth: '', + rightIcon: '', + leftIcon: '', + required: false, + leftIconStyle: '', + } +} diff --git a/src/uni_modules/uview-plus/components/u-form-item/props.js b/src/uni_modules/uview-plus/components/u-form-item/props.js new file mode 100644 index 0000000..cd434ce --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-form-item/props.js @@ -0,0 +1,55 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // input的label提示语 + label: { + type: String, + default: () => defProps.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: () => defProps.formItem.prop + }, + // 绑定的规则 + rules: { + type: Array, + default: () => defProps.formItem.rules + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: () => defProps.formItem.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: () => defProps.formItem.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: () => defProps.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: () => defProps.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: () => defProps.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: () => defProps.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: () => defProps.formItem.leftIconStyle, + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-form-item/u-form-item.vue b/src/uni_modules/uview-plus/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..361eff0 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-form-item/u-form-item.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-form/form.js b/src/uni_modules/uview-plus/components/u-form/form.js new file mode 100644 index 0000000..204d845 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-form/form.js @@ -0,0 +1,22 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:03:49 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/form.js + */ +export default { + // form 组件 + form: { + model: {}, + rules: {}, + errorType: 'message', + borderBottom: true, + labelPosition: 'left', + labelWidth: 45, + labelAlign: 'left', + labelStyle: {} + } +} diff --git a/src/uni_modules/uview-plus/components/u-form/props.js b/src/uni_modules/uview-plus/components/u-form/props.js new file mode 100644 index 0000000..b80d623 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-form/props.js @@ -0,0 +1,47 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: () => defProps.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: () => defProps.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: () => defProps.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: () => defProps.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: () => defProps.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: () => defProps.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: () => defProps.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: () => defProps.form.labelStyle + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-form/u-form.vue b/src/uni_modules/uview-plus/components/u-form/u-form.vue new file mode 100644 index 0000000..f58e818 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-form/u-form.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-gap/gap.js b/src/uni_modules/uview-plus/components/u-gap/gap.js new file mode 100644 index 0000000..60a21af --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-gap/gap.js @@ -0,0 +1,19 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:05:25 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/gap.js + */ +export default { + // gap组件 + gap: { + bgColor: 'transparent', + height: 20, + marginTop: 0, + marginBottom: 0, + customStyle: {} + } +} diff --git a/src/uni_modules/uview-plus/components/u-gap/props.js b/src/uni_modules/uview-plus/components/u-gap/props.js new file mode 100644 index 0000000..77b1d7c --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-gap/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: () => defProps.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: () => defProps.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: () => defProps.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: () => defProps.gap.marginBottom + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-gap/u-gap.vue b/src/uni_modules/uview-plus/components/u-gap/u-gap.vue new file mode 100644 index 0000000..5ed32d3 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-gap/u-gap.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-grid-item/gridItem.js b/src/uni_modules/uview-plus/components/u-grid-item/gridItem.js new file mode 100644 index 0000000..1b747f4 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-grid-item/gridItem.js @@ -0,0 +1,16 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:06:13 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/gridItem.js + */ +export default { + // grid-item组件 + gridItem: { + name: null, + bgColor: 'transparent' + } +} diff --git a/src/uni_modules/uview-plus/components/u-grid-item/props.js b/src/uni_modules/uview-plus/components/u-grid-item/props.js new file mode 100644 index 0000000..55f957c --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-grid-item/props.js @@ -0,0 +1,16 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: () => defProps.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.gridItem.bgColor + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue b/src/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..65c320e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-grid/grid.js b/src/uni_modules/uview-plus/components/u-grid/grid.js new file mode 100644 index 0000000..60abeb7 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-grid/grid.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:05:57 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/grid.js + */ +export default { + // grid组件 + grid: { + col: 3, + border: false, + align: 'left' + } +} diff --git a/src/uni_modules/uview-plus/components/u-grid/props.js b/src/uni_modules/uview-plus/components/u-grid/props.js new file mode 100644 index 0000000..506baf7 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-grid/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 分成几列 + col: { + type: [String, Number], + default: () => defProps.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: () => defProps.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: () => defProps.grid.align + }, + // 间隔 + gap: { + type: String, + default: '0px' + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-grid/u-grid.vue b/src/uni_modules/uview-plus/components/u-grid/u-grid.vue new file mode 100644 index 0000000..785059a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-grid/u-grid.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-icon/icon.js b/src/uni_modules/uview-plus/components/u-icon/icon.js new file mode 100644 index 0000000..86910f7 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-icon/icon.js @@ -0,0 +1,36 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 18:00:14 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/icon.js + */ +import config from '../../libs/config/config' + +const { + color +} = config +export default { + // icon组件 + icon: { + name: '', + color: color['u-content-color'], + size: '16px', + bold: false, + index: '', + hoverClass: '', + customPrefix: 'uicon', + label: '', + labelPos: 'right', + labelSize: '15px', + labelColor: color['u-content-color'], + space: '3px', + imgMode: '', + width: '', + height: '', + top: 0, + stop: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-icon/icons.js b/src/uni_modules/uview-plus/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/src/uni_modules/uview-plus/components/u-icon/props.js b/src/uni_modules/uview-plus/components/u-icon/props.js new file mode 100644 index 0000000..d5bdfdb --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-icon/props.js @@ -0,0 +1,91 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 图标类名 + name: { + type: String, + default: () => defProps.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: () => defProps.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: () => defProps.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: () => defProps.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: () => defProps.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: () => defProps.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: () => defProps.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: () => defProps.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: () => defProps.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: () => defProps.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: () => defProps.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: () => defProps.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: () => defProps.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: () => defProps.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: () => defProps.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: () => defProps.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: () => defProps.icon.stop + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-icon/u-icon.vue b/src/uni_modules/uview-plus/components/u-icon/u-icon.vue new file mode 100644 index 0000000..6793728 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-icon/u-icon.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-icon/util.js b/src/uni_modules/uview-plus/components/u-icon/util.js new file mode 100644 index 0000000..11fd8c8 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-icon/util.js @@ -0,0 +1,73 @@ +import config from '../../libs/config/config'; +// 定义高阶函数 +function once(fn) { + let called = false; + let result; + + return function(...args) { + if (!called) { + result = fn.apply(this, args); + // called = true; + } + return result; + }; +} + +// 使用高阶函数 +const loadFont = once(() => { + console.log('这个函数只能执行一次'); + // #ifdef APP-NVUE + // nvue通过weex的dom模块引入字体,相关文档地址如下: + // https://weex.apache.org/zh/docs/modules/dom.html#addrule + const domModule = weex.requireModule('dom'); + domModule.addRule('fontFace', { + 'fontFamily': "uicon-iconfont", + 'src': `url('${config.iconUrl}')` + }); + if (config.customIcon.family) { + domModule.addRule('fontFace', { + 'fontFamily': config.customIcon.family, + 'src': `url('${config.customIcon.url}')` + }); + } + // #endif + // #ifdef APP || H5 || MP-WEIXIN || MP-ALIPAY + uni.loadFontFace({ + family: 'uicon-iconfont', + source: 'url("' + config.iconUrl + '")', + success() { + // console.log('内置字体图标加载成功'); + }, + fail() { + // console.error('内置字体图标加载出错'); + } + }); + if (config.customIcon.family) { + uni.loadFontFace({ + family: config.customIcon.family, + source: 'url("' + config.customIcon.url + '")', + success() { + // console.log('扩展字体图标加载成功'); + }, + fail() { + // console.error('扩展字体图标加载出错'); + } + }); + } + // #endif + // #ifdef APP-NVUE + if (this.customFontFamily) { + domModule.addRule('fontFace', { + 'fontFamily': `${this.customPrefix}-${this.customFontFamily}`, + 'src': `url('${this.customFontUrl}')` + }) + } + // #endif + return true; +}); + +let util = { + loadFont +} + +export default util diff --git a/src/uni_modules/uview-plus/components/u-image/image.js b/src/uni_modules/uview-plus/components/u-image/image.js new file mode 100644 index 0000000..2552db6 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-image/image.js @@ -0,0 +1,30 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:01:51 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/image.js + */ +export default { + // image组件 + image: { + src: '', + mode: 'aspectFill', + width: '300', + height: '225', + shape: 'square', + radius: 0, + lazyLoad: true, + showMenuByLongpress: true, + loadingIcon: 'photo', + errorIcon: 'error-circle', + showLoading: true, + showError: true, + fade: true, + webp: false, + duration: 500, + bgColor: '#f3f4f6' + } +} diff --git a/src/uni_modules/uview-plus/components/u-image/props.js b/src/uni_modules/uview-plus/components/u-image/props.js new file mode 100644 index 0000000..71bc6db --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-image/props.js @@ -0,0 +1,86 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 图片地址 + src: { + type: String, + default: () => defProps.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: () => defProps.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: () => defProps.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: () => defProps.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: () => defProps.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: () => defProps.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: () => defProps.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: () => defProps.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: () => defProps.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: () => defProps.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: () => defProps.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: () => defProps.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: () => defProps.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: () => defProps.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: () => defProps.image.bgColor + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-image/u-image.vue b/src/uni_modules/uview-plus/components/u-image/u-image.vue new file mode 100644 index 0000000..7627984 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-image/u-image.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js b/src/uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js new file mode 100644 index 0000000..bb20d46 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js @@ -0,0 +1,19 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:13:15 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/indexAnchor.js + */ +export default { + // indexAnchor 组件 + indexAnchor: { + text: '', + color: '#606266', + size: 14, + bgColor: '#dedede', + height: 32 + } +} diff --git a/src/uni_modules/uview-plus/components/u-index-anchor/props.js b/src/uni_modules/uview-plus/components/u-index-anchor/props.js new file mode 100644 index 0000000..f07e407 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-anchor/props.js @@ -0,0 +1,31 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: () => defProps.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: () => defProps.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: () => defProps.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: () => defProps.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: () => defProps.indexAnchor.height + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue b/src/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..e5c50a1 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-index-item/props.js b/src/uni_modules/uview-plus/components/u-index-item/props.js new file mode 100644 index 0000000..3461f1e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-item/props.js @@ -0,0 +1,8 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + + } +}) diff --git a/src/uni_modules/uview-plus/components/u-index-item/u-index-item.vue b/src/uni_modules/uview-plus/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..5d9346a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-item/u-index-item.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-index-list/indexList.js b/src/uni_modules/uview-plus/components/u-index-list/indexList.js new file mode 100644 index 0000000..4f31b37 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-list/indexList.js @@ -0,0 +1,20 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:13:35 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/indexList.js + */ +export default { + // indexList 组件 + indexList: { + inactiveColor: '#606266', + activeColor: '#5677fc', + indexList: [], + sticky: true, + customNavHeight: 0, + safeBottomFix: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-index-list/props.js b/src/uni_modules/uview-plus/components/u-index-list/props.js new file mode 100644 index 0000000..46a1fba --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-list/props.js @@ -0,0 +1,36 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: () => defProps.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: () => defProps.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: () => defProps.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: () => defProps.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: () => defProps.indexList.customNavHeight + }, + // 是否开启底部安全距离适配 + safeBottomFix: { + type: Boolean, + default: () => defProps.indexList.safeBottomFix + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-index-list/u-index-list.vue b/src/uni_modules/uview-plus/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..0128bd6 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-index-list/u-index-list.vue @@ -0,0 +1,589 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-input/input.js b/src/uni_modules/uview-plus/components/u-input/input.js new file mode 100644 index 0000000..6c310ea --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-input/input.js @@ -0,0 +1,48 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:13:55 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/input.js + */ +export default { + // index 组件 + input: { + value: '', + type: 'text', + fixed: false, + disabled: false, + disabledColor: '#f5f7fa', + clearable: false, + password: false, + maxlength: 140, + placeholder: null, + placeholderClass: 'input-placeholder', + placeholderStyle: 'color: #c0c4cc', + showWordLimit: false, + confirmType: 'done', + confirmHold: false, + holdKeyboard: false, + focus: false, + autoBlur: false, + disableDefaultPadding: false, + cursor: -1, + cursorSpacing: 30, + selectionStart: -1, + selectionEnd: -1, + adjustPosition: true, + inputAlign: 'left', + fontSize: '15px', + color: '#303133', + prefixIcon: '', + prefixIconStyle: '', + suffixIcon: '', + suffixIconStyle: '', + border: 'surround', + readonly: false, + shape: 'square', + formatter: null + } +} diff --git a/src/uni_modules/uview-plus/components/u-input/props.js b/src/uni_modules/uview-plus/components/u-input/props.js new file mode 100644 index 0000000..e5e343e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-input/props.js @@ -0,0 +1,198 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // #ifdef VUE3 + // 绑定的值 + modelValue: { + type: [String, Number], + default: () => defProps.input.value + }, + // #endif + // #ifdef VUE2 + // 绑定的值 + value: { + type: [String, Number], + default: () => defProps.input.value + }, + // #endif + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: () => defProps.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: () => defProps.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: () => defProps.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: () => defProps.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: () => defProps.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: () => defProps.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: () => defProps.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: () => defProps.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: () => defProps.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: () => defProps.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: () => defProps.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: () => defProps.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: () => defProps.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: () => defProps.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: () => defProps.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: () => defProps.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: () => defProps.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: () => defProps.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: () => defProps.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: () => defProps.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: () => defProps.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: () => defProps.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: () => defProps.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: () => defProps.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: () => defProps.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: () => defProps.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: () => defProps.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: () => defProps.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: () => defProps.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: () => defProps.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: () => defProps.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: () => defProps.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-input/u-input.vue b/src/uni_modules/uview-plus/components/u-input/u-input.vue new file mode 100644 index 0000000..0418718 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-input/u-input.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-keyboard/keyboard.js b/src/uni_modules/uview-plus/components/u-keyboard/keyboard.js new file mode 100644 index 0000000..57182bd --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-keyboard/keyboard.js @@ -0,0 +1,30 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:07:49 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/keyboard.js + */ +export default { + // 键盘组件 + keyboard: { + mode: 'number', + dotDisabled: false, + tooltip: true, + showTips: true, + tips: '', + showCancel: true, + showConfirm: true, + random: false, + safeAreaInsetBottom: true, + closeOnClickOverlay: true, + show: false, + overlay: true, + zIndex: 10075, + cancelText: '取消', + confirmText: '确定', + autoChange: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-keyboard/props.js b/src/uni_modules/uview-plus/components/u-keyboard/props.js new file mode 100644 index 0000000..8c5d8ae --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-keyboard/props.js @@ -0,0 +1,86 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: () => defProps.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: () => defProps.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: () => defProps.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: () => defProps.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: () => defProps.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: () => defProps.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: () => defProps.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: () => defProps.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: () => defProps.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: () => defProps.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: () => defProps.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: () => defProps.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: () => defProps.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: () => defProps.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: () => defProps.keyboard.autoChange + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue b/src/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..1e9658d --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue b/src/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue new file mode 100644 index 0000000..bc8cc20 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue @@ -0,0 +1,260 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/uview-plus/components/u-line-progress/lineProgress.js b/src/uni_modules/uview-plus/components/u-line-progress/lineProgress.js new file mode 100644 index 0000000..51531a6 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-line-progress/lineProgress.js @@ -0,0 +1,20 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:14:11 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/lineProgress.js + */ +export default { + // lineProgress 组件 + lineProgress: { + activeColor: '#19be6b', + inactiveColor: '#ececec', + percentage: 0, + showText: true, + height: 12, + fromRight: false, + } +} diff --git a/src/uni_modules/uview-plus/components/u-line-progress/props.js b/src/uni_modules/uview-plus/components/u-line-progress/props.js new file mode 100644 index 0000000..2690e29 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-line-progress/props.js @@ -0,0 +1,35 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: () => defProps.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: () => defProps.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: () => defProps.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: () => defProps.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: () => defProps.lineProgress.height + }, + // 是否从右往左加载 + fromRight: { + type: Boolean, + default: () => defProps.lineProgress.fromRight + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue b/src/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..983394a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-line/line.js b/src/uni_modules/uview-plus/components/u-line/line.js new file mode 100644 index 0000000..2c87af2 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-line/line.js @@ -0,0 +1,20 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:04:49 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/line.js + */ +export default { + // line组件 + line: { + color: '#d6d7d9', + length: '100%', + direction: 'row', + hairline: true, + margin: 0, + dashed: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-line/props.js b/src/uni_modules/uview-plus/components/u-line/props.js new file mode 100644 index 0000000..6428d3f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-line/props.js @@ -0,0 +1,35 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + color: { + type: String, + default: () => defProps.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: () => defProps.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: () => defProps.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: () => defProps.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: () => defProps.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: () => defProps.line.dashed + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-line/u-line.vue b/src/uni_modules/uview-plus/components/u-line/u-line.vue new file mode 100644 index 0000000..5b3e276 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-line/u-line.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-link/link.js b/src/uni_modules/uview-plus/components/u-link/link.js new file mode 100644 index 0000000..a5d0450 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-link/link.js @@ -0,0 +1,26 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:45:36 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/link.js + */ +import config from '../../libs/config/config' + +const { + color +} = config +export default { + // link超链接组件props参数 + link: { + color: color['u-primary'], + fontSize: 15, + underLine: false, + href: '', + mpTips: '链接已复制,请在浏览器打开', + lineColor: '', + text: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-link/props.js b/src/uni_modules/uview-plus/components/u-link/props.js new file mode 100644 index 0000000..d96d824 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-link/props.js @@ -0,0 +1,41 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 文字颜色 + color: { + type: String, + default: () => defProps.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: () => defProps.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: () => defProps.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: () => defProps.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: () => defProps.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: () => defProps.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: () => defProps.link.text + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-link/u-link.vue b/src/uni_modules/uview-plus/components/u-link/u-link.vue new file mode 100644 index 0000000..5462707 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-link/u-link.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-list-item/listItem.js b/src/uni_modules/uview-plus/components/u-list-item/listItem.js new file mode 100644 index 0000000..7fe2166 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-list-item/listItem.js @@ -0,0 +1,15 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:15:40 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/listItem.js + */ +export default { + // listItem 组件 + listItem: { + anchor: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-list-item/props.js b/src/uni_modules/uview-plus/components/u-list-item/props.js new file mode 100644 index 0000000..edaa4dc --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-list-item/props.js @@ -0,0 +1,11 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: () => defProps.listItem.anchor + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-list-item/u-list-item.vue b/src/uni_modules/uview-plus/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..28ed02a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-list-item/u-list-item.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-list/list.js b/src/uni_modules/uview-plus/components/u-list/list.js new file mode 100644 index 0000000..a830c32 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-list/list.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:14:53 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/list.js + */ +export default { + // list 组件 + list: { + showScrollbar: false, + lowerThreshold: 50, + upperThreshold: 0, + scrollTop: 0, + offsetAccuracy: 10, + enableFlex: false, + pagingEnabled: false, + scrollable: true, + scrollIntoView: '', + scrollWithAnimation: false, + enableBackToTop: false, + height: 0, + width: 0, + preLoadScreen: 1 + } +} diff --git a/src/uni_modules/uview-plus/components/u-list/props.js b/src/uni_modules/uview-plus/components/u-list/props.js new file mode 100644 index 0000000..9fca829 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-list/props.js @@ -0,0 +1,101 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: () => defProps.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: () => defProps.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: () => defProps.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: () => defProps.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: () => defProps.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: () => defProps.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: () => defProps.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: () => defProps.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: () => defProps.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: () => defProps.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: () => defProps.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: () => defProps.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: () => defProps.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: () => defProps.list.preLoadScreen + }, + // 开启自定义下拉刷新 + refresherEnabled: { + type: Boolean, + default: () => false + }, + // 设置自定义下拉刷新阈值 + refresherThreshold: { + type: Number, + default: () => 45 + }, + // 设置自定义下拉刷新默认样式,支持设置 black,white,none,none 表示不使用默认样式 + refresherDefaultStyle: { + type: String, + default: () => 'black' + }, + // 设置自定义下拉刷新区域背景颜色 + refresherBackground: { + type: String, + default: () => '#FFF' + }, + // 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发 + refresherTriggered: { + type: Boolean, + default: () => false + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-list/u-list.vue b/src/uni_modules/uview-plus/components/u-list/u-list.vue new file mode 100644 index 0000000..e8e28e8 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-list/u-list.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js b/src/uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js new file mode 100644 index 0000000..56cc3f2 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js @@ -0,0 +1,30 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:45:47 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadingIcon.js + */ +import config from '../../libs/config/config' + +const { + color +} = config +export default { + // loading-icon加载中图标组件 + loadingIcon: { + show: true, + color: color['u-tips-color'], + textColor: color['u-tips-color'], + vertical: false, + mode: 'spinner', + size: 24, + textSize: 15, + text: '', + timingFunction: 'ease-in-out', + duration: 1200, + inactiveColor: '' + } +} diff --git a/src/uni_modules/uview-plus/components/u-loading-icon/props.js b/src/uni_modules/uview-plus/components/u-loading-icon/props.js new file mode 100644 index 0000000..6a6abf9 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loading-icon/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否显示组件 + show: { + type: Boolean, + default: () => defProps.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: () => defProps.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: () => defProps.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: () => defProps.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: () => defProps.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: () => defProps.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: () => defProps.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: () => defProps.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: () => defProps.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: () => defProps.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: () => defProps.loadingIcon.inactiveColor + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue b/src/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..d399d26 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,348 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-loading-page/loadingPage.js b/src/uni_modules/uview-plus/components/u-loading-page/loadingPage.js new file mode 100644 index 0000000..6ed7485 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loading-page/loadingPage.js @@ -0,0 +1,24 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:00:23 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadingPage.js + */ +export default { + // loading-page组件 + loadingPage: { + loadingText: '正在加载', + image: '', + loadingMode: 'circle', + loading: false, + bgColor: '#ffffff', + color: '#C8C8C8', + fontSize: 19, + iconSize: 28, + loadingColor: '#C8C8C8', + zIndex: 10 + } +} diff --git a/src/uni_modules/uview-plus/components/u-loading-page/props.js b/src/uni_modules/uview-plus/components/u-loading-page/props.js new file mode 100644 index 0000000..185a78f --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loading-page/props.js @@ -0,0 +1,57 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: () => defProps.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: () => defProps.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: () => defProps.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: () => defProps.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: () => defProps.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: () => defProps.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: () => defProps.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: () => defProps.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: () => defProps.loadingPage.loadingColor + }, + // 层级 + zIndex: { + type: [Number], + default: () => defProps.loadingPage.zIndex + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue b/src/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..b878d5b --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-loadmore/loadmore.js b/src/uni_modules/uview-plus/components/u-loadmore/loadmore.js new file mode 100644 index 0000000..67c1160 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loadmore/loadmore.js @@ -0,0 +1,32 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:15:26 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadmore.js + */ +export default { + // loadmore 组件 + loadmore: { + status: 'loadmore', + bgColor: 'transparent', + icon: true, + fontSize: 14, + iconSize: 17, + color: '#606266', + loadingIcon: 'spinner', + loadmoreText: '加载更多', + loadingText: '正在加载...', + nomoreText: '没有更多了', + isDot: false, + iconColor: '#b7b7b7', + marginTop: 10, + marginBottom: 10, + height: 'auto', + line: false, + lineColor: '#E6E8EB', + dashed: false, + } +} diff --git a/src/uni_modules/uview-plus/components/u-loadmore/props.js b/src/uni_modules/uview-plus/components/u-loadmore/props.js new file mode 100644 index 0000000..fb78e39 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loadmore/props.js @@ -0,0 +1,96 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: () => defProps.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: () => defProps.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: () => defProps.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: () => defProps.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: () => defProps.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: () => defProps.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: () => defProps.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: () => defProps.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: () => defProps.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: () => defProps.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: () => defProps.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: () => defProps.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: () => defProps.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: () => defProps.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: () => defProps.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: () => defProps.loadmore.dashed + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue b/src/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..13f6b78 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-message-input/u-message-input.vue b/src/uni_modules/uview-plus/components/u-message-input/u-message-input.vue new file mode 100644 index 0000000..0da5f1c --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-message-input/u-message-input.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-modal/modal.js b/src/uni_modules/uview-plus/components/u-modal/modal.js new file mode 100644 index 0000000..64db018 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-modal/modal.js @@ -0,0 +1,35 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:15:59 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/modal.js + */ +export default { + // modal 组件 + modal: { + show: false, + title: '', + content: '', + confirmText: '确认', + cancelText: '取消', + showConfirmButton: true, + showCancelButton: false, + confirmColor: '#2979ff', + cancelColor: '#606266', + buttonReverse: false, + zoom: true, + asyncClose: false, + closeOnClickOverlay: false, + negativeTop: 0, + width: '650rpx', + confirmButtonShape: '', + duration: 400, + contentTextAlign: 'left', + asyncCloseTip: '操作中...', + asyncCancelClose: false, + contentStyle: {} + } +} diff --git a/src/uni_modules/uview-plus/components/u-modal/props.js b/src/uni_modules/uview-plus/components/u-modal/props.js new file mode 100644 index 0000000..0f0177b --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-modal/props.js @@ -0,0 +1,111 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否展示modal + show: { + type: Boolean, + default: () => defProps.modal.show + }, + // 标题 + title: { + type: [String], + default: () => defProps.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: () => defProps.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: () => defProps.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: () => defProps.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: () => defProps.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: () => defProps.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: () => defProps.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: () => defProps.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: () => defProps.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: () => defProps.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: () => defProps.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: () => defProps.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: () => defProps.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: () => defProps.modal.confirmButtonShape + }, + // 弹窗动画过度时间 + duration: { + type: [Number], + default: defProps.modal.duration + }, + // 文案对齐方式 + contentTextAlign: { + type: String, + default: () => defProps.modal.contentTextAlign + }, + // 异步确定时如果点击了取消时候的提示文案 + asyncCloseTip: { + type: String, + default: () => defProps.modal.asyncCloseTip + }, + // 是否异步关闭,只对取消按钮有效 + asyncCancelClose: { + type: Boolean, + default: () => defProps.modal.asyncCancelClose + }, + // 内容样式 + contentStyle: { + type: Object, + default: () => defProps.modal.contentStyle + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-modal/u-modal.vue b/src/uni_modules/uview-plus/components/u-modal/u-modal.vue new file mode 100644 index 0000000..044ad58 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-modal/u-modal.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-navbar-mini/props.js b/src/uni_modules/uview-plus/components/u-navbar-mini/props.js new file mode 100644 index 0000000..57d5b4e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-navbar-mini/props.js @@ -0,0 +1,51 @@ +import { defineMixin } from '../../libs/vue' + +export const props = defineMixin({ + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: () => true + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: () => true + }, + // 左边的图标 + leftIcon: { + type: String, + default: 'arrow-leftward' + }, + // 背景颜色 + bgColor: { + type: String, + default: () => 'rgba(0,0,0,.15)' + }, + // 导航栏高度 + height: { + type: [String, Number], + default: () => '32px' + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: '20px' + }, + // 图标的颜色 + iconColor: { + type: String, + default: '#fff' + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: () => true + }, + // 首页路径 + homeUrl: { + type: [String], + default: '' + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue b/src/uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue new file mode 100644 index 0000000..279da76 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-navbar/navbar.js b/src/uni_modules/uview-plus/components/u-navbar/navbar.js new file mode 100644 index 0000000..a950988 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-navbar/navbar.js @@ -0,0 +1,33 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:16:18 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/navbar.js + */ +import color from '../../libs/config/color' +export default { + // navbar 组件 + navbar: { + safeAreaInsetTop: true, + placeholder: false, + fixed: true, + border: false, + leftIcon: 'arrow-left', + leftText: '', + rightText: '', + rightIcon: '', + title: '', + titleColor: '', + bgColor: '#ffffff', + titleWidth: '400rpx', + height: '44px', + leftIconSize: 20, + leftIconColor: color.mainColor, + autoBack: false, + titleStyle: '' + } + +} diff --git a/src/uni_modules/uview-plus/components/u-navbar/props.js b/src/uni_modules/uview-plus/components/u-navbar/props.js new file mode 100644 index 0000000..b66f87e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-navbar/props.js @@ -0,0 +1,97 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: () => defProps.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: () => defProps.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: () => defProps.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: () => defProps.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: () => defProps.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: () => defProps.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: () => defProps.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: () => defProps.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: () => defProps.navbar.title + }, + // 标题颜色 + titleColor: { + type: String, + default: () => defProps.navbar.titleColor + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.navbar.bgColor + }, + // 状态栏背景颜色 不写会使用背景颜色bgColor + statusBarBgColor: { + type: String, + default: () => '' + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: () => defProps.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: () => defProps.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: () => defProps.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: () => defProps.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: () => defProps.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: () => defProps.navbar.titleStyle + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-navbar/u-navbar.vue b/src/uni_modules/uview-plus/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..df87fa2 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-navbar/u-navbar.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-no-network/noNetwork.js b/src/uni_modules/uview-plus/components/u-no-network/noNetwork.js new file mode 100644 index 0000000..74dba1b --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-no-network/noNetwork.js @@ -0,0 +1,18 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:16:39 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/noNetwork.js + */ +export default { + // noNetwork + noNetwork: { + tips: '哎呀,网络信号丢失', + zIndex: '', + image: 'data:image/png;base64,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' + } + +} diff --git a/src/uni_modules/uview-plus/components/u-no-network/props.js b/src/uni_modules/uview-plus/components/u-no-network/props.js new file mode 100644 index 0000000..1091cf5 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-no-network/props.js @@ -0,0 +1,21 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 页面文字提示 + tips: { + type: String, + default: () => defProps.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: () => defProps.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: () => defProps.noNetwork.image + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-no-network/u-no-network.vue b/src/uni_modules/uview-plus/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..9df8523 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-no-network/u-no-network.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-notice-bar/noticeBar.js b/src/uni_modules/uview-plus/components/u-notice-bar/noticeBar.js new file mode 100644 index 0000000..5c4adde --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-notice-bar/noticeBar.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:17:13 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/noticeBar.js + */ +export default { + // noticeBar + noticeBar: { + text: [], + direction: 'row', + step: false, + icon: 'volume', + mode: '', + color: '#f9ae3d', + bgColor: '#fdf6ec', + speed: 80, + fontSize: 14, + duration: 2000, + disableTouch: true, + url: '', + linkType: 'navigateTo', + justifyContent: 'flex-start' + } +} diff --git a/src/uni_modules/uview-plus/components/u-notice-bar/props.js b/src/uni_modules/uview-plus/components/u-notice-bar/props.js new file mode 100644 index 0000000..2dd91af --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-notice-bar/props.js @@ -0,0 +1,76 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: () => defProps.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: () => defProps.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: () => defProps.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: () => defProps.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: () => defProps.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: () => defProps.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: () => defProps.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: () => defProps.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: () => defProps.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: () => defProps.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: () => defProps.noticeBar.linkType + }, + justifyContent: { + type: String, + default: () => defProps.noticeBar.justifyContent + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue b/src/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..122a4cc --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,105 @@ + + + + diff --git a/src/uni_modules/uview-plus/components/u-notify/notify.js b/src/uni_modules/uview-plus/components/u-notify/notify.js new file mode 100644 index 0000000..1042d2a --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-notify/notify.js @@ -0,0 +1,22 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:10:21 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/notify.js + */ +export default { + // notify组件 + notify: { + top: 0, + type: 'primary', + color: '#ffffff', + bgColor: '', + message: '', + duration: 3000, + fontSize: 15, + safeAreaInsetTop: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-notify/props.js b/src/uni_modules/uview-plus/components/u-notify/props.js new file mode 100644 index 0000000..fdb01b4 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-notify/props.js @@ -0,0 +1,51 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: () => defProps.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: () => defProps.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: () => defProps.notify.type + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: () => defProps.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: () => defProps.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: () => defProps.notify.safeAreaInsetTop + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-notify/u-notify.vue b/src/uni_modules/uview-plus/components/u-notify/u-notify.vue new file mode 100644 index 0000000..e94efda --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-notify/u-notify.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-number-box/numberBox.js b/src/uni_modules/uview-plus/components/u-number-box/numberBox.js new file mode 100644 index 0000000..ac79ad0 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-number-box/numberBox.js @@ -0,0 +1,39 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:11:46 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/numberBox.js + */ +export default { + // 步进器组件 + numberBox: { + name: '', + value: 0, + min: 1, + max: Number.MAX_SAFE_INTEGER, + step: 1, + integer: false, + disabled: false, + disabledInput: false, + asyncChange: false, + inputWidth: 35, + showMinus: true, + showPlus: true, + decimalLength: null, + longPress: true, + color: '#323233', + buttonWidth: 30, + buttonSize: 30, + buttonRadius: '0px', + bgColor: '#EBECEE', + inputBgColor: '#EBECEE', + cursorSpacing: 100, + disableMinus: false, + disablePlus: false, + iconStyle: '', + miniMode: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-number-box/props.js b/src/uni_modules/uview-plus/components/u-number-box/props.js new file mode 100644 index 0000000..ac12d18 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-number-box/props.js @@ -0,0 +1,140 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: () => defProps.numberBox.name + }, + // #ifdef VUE2 + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: () => defProps.numberBox.value + }, + // #endif + // #ifdef VUE3 + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + modelValue: { + type: [String, Number], + default: () => defProps.numberBox.value + }, + // #endif + // 最小值 + min: { + type: [String, Number], + default: () => defProps.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: () => defProps.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: () => defProps.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: () => defProps.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: () => defProps.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: () => defProps.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: () => defProps.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: () => defProps.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: () => defProps.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: () => defProps.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: () => defProps.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: () => defProps.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: () => defProps.numberBox.color + }, + // 按钮宽度 + buttonWidth: { + type: [String, Number], + default: () => defProps.numberBox.buttonWidth + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: () => defProps.numberBox.buttonSize + }, + // 按钮圆角 + buttonRadius: { + type: [String], + default: () => defProps.numberBox.buttonRadius + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: () => defProps.numberBox.bgColor + }, + // 输入框背景颜色 + inputBgColor: { + type: String, + default: () => defProps.numberBox.inputBgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: () => defProps.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: () => defProps.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: () => defProps.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: () => defProps.numberBox.iconStyle + }, + // 迷你模式 + miniMode: { + type: Boolean, + default: () => defProps.numberBox.miniMode + }, + } +}) diff --git a/src/uni_modules/uview-plus/components/u-number-box/u-number-box.vue b/src/uni_modules/uview-plus/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..4b562a6 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-number-box/u-number-box.vue @@ -0,0 +1,478 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js b/src/uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js new file mode 100644 index 0000000..7b45065 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:08:05 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/numberKeyboard.js + */ +export default { + // 数字键盘 + numberKeyboard: { + mode: 'number', + dotDisabled: false, + random: false + } +} diff --git a/src/uni_modules/uview-plus/components/u-number-keyboard/props.js b/src/uni_modules/uview-plus/components/u-number-keyboard/props.js new file mode 100644 index 0000000..d853858 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-number-keyboard/props.js @@ -0,0 +1,21 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: () => defProps.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: () => defProps.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: () => defProps.numberKeyboard.random + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue b/src/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..d2b47a6 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-overlay/overlay.js b/src/uni_modules/uview-plus/components/u-overlay/overlay.js new file mode 100644 index 0000000..c26d068 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-overlay/overlay.js @@ -0,0 +1,18 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : LQ + * @lastTime : 2021-08-20 17:06:50 + * @FilePath : /u-view2.0/uview-ui/libs/config/props/overlay.js + */ +export default { + // overlay组件 + overlay: { + show: false, + zIndex: 10070, + duration: 300, + opacity: 0.5 + } +} diff --git a/src/uni_modules/uview-plus/components/u-overlay/props.js b/src/uni_modules/uview-plus/components/u-overlay/props.js new file mode 100644 index 0000000..39f16f3 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-overlay/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: () => defProps.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: () => defProps.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: () => defProps.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: () => defProps.overlay.opacity + } + } +}) diff --git a/src/uni_modules/uview-plus/components/u-overlay/u-overlay.vue b/src/uni_modules/uview-plus/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..c10a213 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-overlay/u-overlay.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-pagination/u-pagination.vue b/src/uni_modules/uview-plus/components/u-pagination/u-pagination.vue new file mode 100644 index 0000000..89dd2f0 --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-pagination/u-pagination.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/src/uni_modules/uview-plus/components/u-parse/node/node.vue b/src/uni_modules/uview-plus/components/u-parse/node/node.vue new file mode 100644 index 0000000..9ec546e --- /dev/null +++ b/src/uni_modules/uview-plus/components/u-parse/node/node.vue @@ -0,0 +1,598 @@ +