From f3886664f7152674bec3fe57d3a1dad38b78ae1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 16 Jun 2026 17:15:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(api):=20=E6=9B=BF=E6=8D=A2=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82=E7=9A=84=E5=9F=9F?= =?UTF-8?q?=E5=90=8D=E4=B8=BA=20guilixu-api.websoft.top?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将获取 STS Token 的接口地址由 paopao-api 改为 guilixu-api - 更新图片上传接口地址为新的 guilixu-api 域名 - 修改用户推广页面中邀请码链接和二维码接口的域名 - 更改注册页微信登录接口请求的域名为 guilixu-api --- ...d3038127a38b710567283f1da199d8c7585b928b7e | Bin 0 -> 2561552 bytes .workbuddy/memory/2026-05-14.md | 38 + README.md | 263 + babel.config.js | 11 + config/app.ts | 7 + config/dev.ts | 17 + config/env.js | 28 + config/index.ts | 120 + config/prod.ts | 12 + package.json | 90 + pnpm-lock.yaml | 18401 ++++++++++++++++ postcss.config.js | 7 + project.config.json | 44 + src/api/cms/cmsAd/index.ts | 115 + src/api/cms/cmsAd/model/index.ts | 59 + src/api/cms/cmsAdRecord/index.ts | 106 + src/api/cms/cmsAdRecord/model/index.ts | 35 + src/api/cms/cmsArticle/index.ts | 218 + src/api/cms/cmsArticle/model/index.ts | 132 + src/api/cms/cmsArticleCategory/index.ts | 108 + src/api/cms/cmsArticleCategory/model/index.ts | 59 + src/api/cms/cmsArticleComment/index.ts | 106 + src/api/cms/cmsArticleComment/model/index.ts | 47 + src/api/cms/cmsArticleContent/index.ts | 106 + src/api/cms/cmsArticleContent/model/index.ts | 25 + src/api/cms/cmsArticleCount/index.ts | 106 + src/api/cms/cmsArticleCount/model/index.ts | 25 + src/api/cms/cmsArticleLike/index.ts | 106 + src/api/cms/cmsArticleLike/model/index.ts | 25 + src/api/cms/cmsComponents/index.ts | 106 + src/api/cms/cmsComponents/model/index.ts | 43 + src/api/cms/cmsDesign/index.ts | 102 + src/api/cms/cmsDesign/model/index.ts | 60 + src/api/cms/cmsDesignRecord/index.ts | 106 + src/api/cms/cmsDesignRecord/model/index.ts | 51 + src/api/cms/cmsDocs/index.ts | 106 + src/api/cms/cmsDocs/model/index.ts | 45 + src/api/cms/cmsDocsBook/index.ts | 106 + src/api/cms/cmsDocsBook/model/index.ts | 37 + src/api/cms/cmsDocsContent/index.ts | 106 + src/api/cms/cmsDocsContent/model/index.ts | 25 + src/api/cms/cmsDomain/index.ts | 151 + src/api/cms/cmsDomain/model/index.ts | 44 + src/api/cms/cmsForm/index.ts | 106 + src/api/cms/cmsForm/model/index.ts | 53 + src/api/cms/cmsFormRecord/index.ts | 106 + src/api/cms/cmsFormRecord/model/index.ts | 41 + src/api/cms/cmsLang/index.ts | 105 + src/api/cms/cmsLang/model/index.ts | 39 + src/api/cms/cmsLangLog/index.ts | 105 + src/api/cms/cmsLangLog/model/index.ts | 27 + src/api/cms/cmsLink/index.ts | 106 + src/api/cms/cmsLink/model/index.ts | 43 + src/api/cms/cmsModel/index.ts | 106 + src/api/cms/cmsModel/model/index.ts | 57 + src/api/cms/cmsMp/index.ts | 106 + src/api/cms/cmsMp/model/index.ts | 61 + src/api/cms/cmsMpAd/index.ts | 106 + src/api/cms/cmsMpAd/model/index.ts | 47 + src/api/cms/cmsMpField/index.ts | 106 + src/api/cms/cmsMpField/model/index.ts | 35 + src/api/cms/cmsMpMenu/index.ts | 106 + src/api/cms/cmsMpMenu/model/index.ts | 79 + src/api/cms/cmsMpPages/index.ts | 106 + src/api/cms/cmsMpPages/model/index.ts | 47 + src/api/cms/cmsNavigation/index.ts | 138 + src/api/cms/cmsNavigation/model/index.ts | 117 + src/api/cms/cmsOrder/index.ts | 106 + src/api/cms/cmsOrder/model/index.ts | 69 + src/api/cms/cmsSpec/index.ts | 106 + src/api/cms/cmsSpec/model/index.ts | 35 + src/api/cms/cmsSpecValue/index.ts | 106 + src/api/cms/cmsSpecValue/model/index.ts | 29 + src/api/cms/cmsWebsite/index.ts | 147 + src/api/cms/cmsWebsite/model/index.ts | 138 + src/api/cms/cmsWebsiteField/index.ts | 129 + src/api/cms/cmsWebsiteField/model/index.ts | 63 + src/api/cms/link/index.ts | 113 + src/api/cms/link/model/index.ts | 31 + src/api/cms/mpOfficialMenu/index.ts | 106 + src/api/cms/mpOfficialMenu/model/index.ts | 37 + src/api/index.ts | 61 + src/api/json/china-provinces.geo.json | 1 + src/api/json/industry-data.json | 1 + src/api/json/regions-data.json | 1 + src/api/layout/index.ts | 116 + src/api/layout/model/index.ts | 29 + src/api/passport/login/index.ts | 68 + src/api/passport/login/model/index.ts | 52 + src/api/passport/qr-login/index.ts | 244 + src/api/shop/shopActivity/index.ts | 110 + src/api/shop/shopActivity/model/index.ts | 89 + src/api/shop/shopAfterSale/index.ts | 154 + src/api/shop/shopArticle/index.ts | 101 + src/api/shop/shopArticle/model/index.ts | 123 + src/api/shop/shopBooking/index.ts | 121 + src/api/shop/shopBooking/model/index.ts | 53 + src/api/shop/shopCart/index.ts | 153 + src/api/shop/shopCart/model/index.ts | 74 + src/api/shop/shopChatConversation/index.ts | 101 + .../shop/shopChatConversation/model/index.ts | 37 + src/api/shop/shopChatMessage/index.ts | 115 + src/api/shop/shopChatMessage/model/index.ts | 63 + src/api/shop/shopCommissionRecord.ts | 29 + src/api/shop/shopCommissionRole/index.ts | 101 + .../shop/shopCommissionRole/model/index.ts | 35 + src/api/shop/shopCoupon/index.ts | 115 + src/api/shop/shopCoupon/model/index.ts | 97 + src/api/shop/shopCustomerService/index.ts | 17 + src/api/shop/shopCustomerService/model.ts | 26 + src/api/shop/shopDealerApply/index.ts | 155 + src/api/shop/shopDealerApply/model/index.ts | 43 + src/api/shop/shopDealerCapital/index.ts | 101 + src/api/shop/shopDealerCapital/model.ts | 109 + src/api/shop/shopDealerCapital/model/index.ts | 41 + src/api/shop/shopDealerOrder/index.ts | 101 + src/api/shop/shopDealerOrder/model/index.ts | 60 + src/api/shop/shopDealerReferee/index.ts | 101 + src/api/shop/shopDealerReferee/model/index.ts | 31 + src/api/shop/shopDealerSetting/index.ts | 101 + src/api/shop/shopDealerSetting/model/index.ts | 25 + src/api/shop/shopDealerUser/index.ts | 103 + src/api/shop/shopDealerUser/model/index.ts | 53 + src/api/shop/shopDealerWithdraw/index.ts | 145 + .../shop/shopDealerWithdraw/model/index.ts | 48 + src/api/shop/shopEvaluation/index.ts | 119 + src/api/shop/shopEvaluation/model/index.ts | 77 + src/api/shop/shopEvent/index.ts | 80 + src/api/shop/shopEvent/model/index.ts | 96 + src/api/shop/shopExpress/index.ts | 101 + src/api/shop/shopExpress/model/index.ts | 35 + src/api/shop/shopExpressTemplate/index.ts | 101 + .../shop/shopExpressTemplate/model/index.ts | 41 + .../shop/shopExpressTemplateDetail/index.ts | 101 + .../shopExpressTemplateDetail/model/index.ts | 45 + src/api/shop/shopGift/index.ts | 260 + src/api/shop/shopGift/model/index.ts | 127 + src/api/shop/shopGiftCard/index.ts | 21 + src/api/shop/shopGiftCard/model.ts | 29 + src/api/shop/shopGoods/index.ts | 112 + src/api/shop/shopGoods/model/index.ts | 158 + src/api/shop/shopGoodsCategory/index.ts | 101 + src/api/shop/shopGoodsCategory/model/index.ts | 64 + src/api/shop/shopGoodsComment/index.ts | 69 + src/api/shop/shopGoodsComment/model.ts | 77 + src/api/shop/shopGoodsEvaluate/index.ts | 22 + src/api/shop/shopGoodsEvaluate/model.ts | 39 + src/api/shop/shopGoodsFavorite/index.ts | 27 + src/api/shop/shopGoodsFavorite/model.ts | 15 + src/api/shop/shopGoodsRoleCommission/index.ts | 101 + .../shopGoodsRoleCommission/model/index.ts | 35 + src/api/shop/shopGoodsSku/index.ts | 113 + src/api/shop/shopGoodsSku/model/index.ts | 50 + src/api/shop/shopGoodsSpec/index.ts | 101 + src/api/shop/shopGoodsSpec/model/index.ts | 29 + src/api/shop/shopGroupBuy/index.ts | 36 + src/api/shop/shopGroupBuy/model.ts | 61 + src/api/shop/shopInvite/index.ts | 278 + src/api/shop/shopInvite/model/index.ts | 279 + src/api/shop/shopInvoiceTitle/index.ts | 166 + src/api/shop/shopInvoiceTitle/model.ts | 155 + src/api/shop/shopLogistics/index.ts | 258 + src/api/shop/shopMemberBenefit.ts | 29 + src/api/shop/shopMemberCenter.ts | 113 + src/api/shop/shopMemberRegister.ts | 108 + src/api/shop/shopMerchant/index.ts | 101 + src/api/shop/shopMerchant/model/index.ts | 95 + src/api/shop/shopMerchantAccount/index.ts | 101 + .../shop/shopMerchantAccount/model/index.ts | 39 + src/api/shop/shopMerchantApply/index.ts | 115 + src/api/shop/shopMerchantApply/model/index.ts | 72 + src/api/shop/shopMerchantCount/index.ts | 103 + src/api/shop/shopMerchantCount/model/index.ts | 29 + src/api/shop/shopMerchantType/index.ts | 103 + src/api/shop/shopMerchantType/model/index.ts | 30 + src/api/shop/shopMessage/index.ts | 37 + src/api/shop/shopMessage/model/index.ts | 20 + src/api/shop/shopNotification/index.ts | 140 + src/api/shop/shopNotification/model/index.ts | 25 + src/api/shop/shopOrder/index.ts | 194 + src/api/shop/shopOrder/model/index.ts | 231 + src/api/shop/shopOrderGoods/index.ts | 30 + src/api/shop/shopOrderGoods/model/index.ts | 70 + src/api/shop/shopOrderRefund/index.ts | 52 + src/api/shop/shopPointsOrder/index.ts | 66 + src/api/shop/shopPointsOrder/model/index.ts | 62 + src/api/shop/shopPointsProduct/index.ts | 44 + src/api/shop/shopPointsProduct/model/index.ts | 51 + src/api/shop/shopRecharge/index.ts | 35 + src/api/shop/shopRecharge/model/index.ts | 17 + src/api/shop/shopRechargeCode/index.ts | 48 + src/api/shop/shopRechargeCode/model/index.ts | 28 + src/api/shop/shopRechargeOrder.ts | 40 + src/api/shop/shopSeckill/index.ts | 31 + src/api/shop/shopSeckill/model.ts | 48 + src/api/shop/shopSetting/index.ts | 138 + src/api/shop/shopSetting/model/index.ts | 43 + src/api/shop/shopSigninConfig/index.ts | 31 + src/api/shop/shopSigninConfig/model/index.ts | 29 + src/api/shop/shopSigninRecord/index.ts | 58 + src/api/shop/shopSigninRecord/model/index.ts | 33 + src/api/shop/shopSpec/index.ts | 101 + src/api/shop/shopSpec/model/index.ts | 38 + src/api/shop/shopSpecValue/index.ts | 101 + src/api/shop/shopSpecValue/model/index.ts | 29 + src/api/shop/shopStore/index.ts | 130 + src/api/shop/shopStore/model/index.ts | 81 + src/api/shop/shopStoreFence/index.ts | 101 + src/api/shop/shopStoreFence/model/index.ts | 43 + src/api/shop/shopStoreRider/index.ts | 101 + src/api/shop/shopStoreRider/model/index.ts | 71 + src/api/shop/shopStoreUser/index.ts | 116 + src/api/shop/shopStoreUser/model/index.ts | 36 + src/api/shop/shopStoreWarehouse/index.ts | 101 + .../shop/shopStoreWarehouse/model/index.ts | 53 + src/api/shop/shopUserAddress.ts | 41 + src/api/shop/shopUserAddress/index.ts | 112 + src/api/shop/shopUserAddress/model.ts | 17 + src/api/shop/shopUserAddress/model/index.ts | 53 + src/api/shop/shopUserCard/index.ts | 57 + src/api/shop/shopUserCard/model/index.ts | 17 + src/api/shop/shopUserCoupon/index.ts | 155 + src/api/shop/shopUserCoupon/model/index.ts | 84 + src/api/shop/shopUserReferee/index.ts | 101 + src/api/shop/shopUserReferee/model/index.ts | 33 + src/api/shop/shopWithdrawRecord.ts | 50 + src/api/system/access-key/index.ts | 59 + src/api/system/access-key/model/index.ts | 20 + src/api/system/appstore/index.ts | 11 + src/api/system/appstore/model/index.ts | 13 + src/api/system/cache/index.ts | 76 + src/api/system/cache/model/index.ts | 18 + src/api/system/chat/index.ts | 157 + src/api/system/chat/model/index.ts | 49 + src/api/system/chatConversation/index.ts | 106 + .../system/chatConversation/model/index.ts | 37 + src/api/system/chatMessage/index.ts | 120 + src/api/system/chatMessage/model/index.ts | 49 + src/api/system/company/index.ts | 161 + src/api/system/company/model/index.ts | 120 + src/api/system/companyComment/index.ts | 106 + src/api/system/companyComment/model/index.ts | 43 + src/api/system/companyContent/index.ts | 106 + src/api/system/companyContent/model/index.ts | 25 + src/api/system/companyGit/index.ts | 106 + src/api/system/companyGit/model/index.ts | 41 + src/api/system/companyParameter/index.ts | 106 + .../system/companyParameter/model/index.ts | 33 + src/api/system/companyUrl/index.ts | 106 + src/api/system/companyUrl/model/index.ts | 39 + src/api/system/dict-data/index.ts | 87 + src/api/system/dict-data/model/index.ts | 46 + src/api/system/dict/index.ts | 61 + src/api/system/dict/model/index.ts | 29 + src/api/system/dictionary-data/index.ts | 87 + src/api/system/dictionary-data/model/index.ts | 33 + src/api/system/dictionary/index.ts | 61 + src/api/system/dictionary/model/index.ts | 29 + src/api/system/environment/index.ts | 125 + src/api/system/environment/model/index.ts | 25 + src/api/system/file/index.ts | 99 + src/api/system/file/model/index.ts | 54 + src/api/system/login-record/index.ts | 32 + src/api/system/login-record/model/index.ts | 38 + src/api/system/menu/index.ts | 98 + src/api/system/menu/model/index.ts | 67 + src/api/system/modules/index.ts | 118 + src/api/system/modules/model/index.ts | 22 + src/api/system/operation-record/index.ts | 32 + .../system/operation-record/model/index.ts | 56 + src/api/system/order/index.ts | 105 + src/api/system/order/model/index.ts | 93 + src/api/system/orderGoods/index.ts | 115 + src/api/system/orderGoods/model/index.ts | 58 + src/api/system/organization/index.ts | 86 + src/api/system/organization/model/index.ts | 42 + src/api/system/parameter/index.ts | 106 + src/api/system/parameter/model/index.ts | 31 + src/api/system/payment/index.ts | 144 + src/api/system/payment/model/index.ts | 55 + src/api/system/plug/index.ts | 125 + src/api/system/plug/model/index.ts | 67 + src/api/system/role/index.ts | 119 + src/api/system/role/model/index.ts | 27 + src/api/system/setting/index.ts | 126 + src/api/system/setting/model/index.ts | 127 + src/api/system/tenant/index.ts | 178 + src/api/system/tenant/model/index.ts | 46 + src/api/system/url/index.ts | 106 + src/api/system/url/model/index.ts | 37 + src/api/system/user-collection/index.ts | 106 + src/api/system/user-collection/model/index.ts | 25 + src/api/system/user-file/index.ts | 89 + src/api/system/user-file/model/index.ts | 39 + src/api/system/user-group/index.ts | 120 + src/api/system/user-group/model/index.ts | 23 + src/api/system/user/balance-log/index.ts | 31 + .../system/user/balance-log/model/index.ts | 23 + src/api/system/user/balance.ts | 23 + src/api/system/user/index.ts | 261 + src/api/system/user/model/count.ts | 15 + src/api/system/user/model/index.ts | 35 + src/api/system/user/points/index.ts | 44 + src/api/system/user/points/model/index.ts | 13 + src/api/system/user/withdraw/index.ts | 18 + src/api/system/user/withdraw/model/index.ts | 19 + src/api/system/userRole/index.ts | 47 + src/api/system/userRole/model/index.ts | 30 + src/api/system/userVerify/index.ts | 130 + src/api/system/userVerify/model/index.ts | 58 + src/api/system/version/index.ts | 119 + src/api/system/version/model/index.ts | 26 + src/api/system/white-domain/index.ts | 146 + src/api/system/white-domain/model/index.ts | 27 + src/app.config.ts | 168 + src/app.scss | 80 + src/app.tsx | 56 + src/assets/logo.png | Bin 0 -> 158093 bytes src/assets/tabbar/README.md | 27 + src/assets/tabbar/home-active.png | Bin 0 -> 2028 bytes src/assets/tabbar/home.png | Bin 0 -> 1976 bytes src/assets/tabbar/order-active.png | Bin 0 -> 2272 bytes src/assets/tabbar/order.png | Bin 0 -> 2205 bytes src/assets/tabbar/points-active.png | Bin 0 -> 4794 bytes src/assets/tabbar/points.png | Bin 0 -> 4650 bytes src/assets/tabbar/shop-active.png | Bin 0 -> 4262 bytes src/assets/tabbar/shop.png | Bin 0 -> 4139 bytes src/assets/tabbar/user-active.png | Bin 0 -> 2839 bytes src/assets/tabbar/user.png | Bin 0 -> 2696 bytes src/components/ErrorBoundary.scss | 87 + src/components/ErrorBoundary.tsx | 75 + src/components/NavBar/index.tsx | 35 + src/components/QRLoginScanner.tsx | 135 + src/components/business/AddressCard/index.tsx | 121 + src/components/business/CouponCard/index.tsx | 113 + .../business/CouponSelect/index.tsx | 185 + src/components/business/MemberBadge/index.tsx | 27 + src/components/business/PayModal/index.tsx | 123 + src/components/business/SkuSelector/index.tsx | 342 + src/components/common/BottomButton/index.scss | 59 + src/components/common/BottomButton/index.tsx | 42 + src/components/common/EmptyState/index.tsx | 48 + src/components/common/FixedButton/index.tsx | 43 + src/components/common/LazyImage/index.tsx | 57 + src/components/common/LoadMore/index.tsx | 29 + src/components/common/Loading/index.tsx | 48 + src/components/common/OrderCard/index.tsx | 137 + src/components/common/Price/index.tsx | 44 + src/components/common/ProductCard/index.tsx | 56 + src/components/common/VirtualList/index.tsx | 69 + src/config/app.ts | 1 + src/contexts/AppContext.tsx | 15 + src/contexts/CartContext.tsx | 233 + src/contexts/UserContext.tsx | 135 + src/hooks/index.ts | 28 + src/hooks/useAddress.ts | 93 + src/hooks/useAppContext.ts | 12 + src/hooks/useCountDown.ts | 145 + src/hooks/useCountUp.ts | 130 + src/hooks/useCoupon.ts | 104 + src/hooks/usePagination.ts | 110 + src/hooks/usePayment.ts | 77 + src/hooks/useRequest.ts | 325 + src/hooks/useScrollHeight.ts | 24 + src/hooks/useTheme.ts | 42 + src/hooks/useUser.ts | 81 + src/index.html | 12 + src/pages/activity/detail/index.config.ts | 3 + src/pages/activity/detail/index.tsx | 245 + src/pages/activity/list/index.config.ts | 3 + src/pages/activity/list/index.tsx | 220 + src/pages/after-sale/apply/index.config.ts | 3 + src/pages/after-sale/apply/index.tsx | 251 + src/pages/after-sale/list/index.config.ts | 3 + src/pages/after-sale/list/index.tsx | 180 + src/pages/after-sale/progress/index.config.ts | 3 + src/pages/after-sale/progress/index.tsx | 175 + src/pages/apply.config.ts | 3 + src/pages/apply.tsx | 151 + src/pages/balance-log.tsx | 169 + src/pages/balance.config.ts | 3 + src/pages/balance.tsx | 187 + src/pages/booking.config.ts | 3 + src/pages/booking.tsx | 167 + src/pages/booking/detail/index.config.ts | 3 + src/pages/booking/detail/index.tsx | 242 + src/pages/booking/list/index.config.ts | 3 + src/pages/booking/list/index.tsx | 226 + src/pages/booking/reschedule/index.config.ts | 3 + src/pages/booking/reschedule/index.tsx | 229 + src/pages/commission.config.ts | 3 + src/pages/commission.tsx | 92 + src/pages/customer-service.config.ts | 3 + src/pages/customer-service.tsx | 406 + src/pages/dashboard.tsx | 198 + src/pages/detail.config.ts | 3 + src/pages/detail.tsx | 147 + src/pages/event/detail/index.config.ts | 3 + src/pages/event/detail/index.tsx | 195 + src/pages/event/list/index.config.ts | 3 + src/pages/event/list/index.tsx | 146 + src/pages/event/my/index.config.ts | 3 + src/pages/event/my/index.tsx | 170 + src/pages/event/register/index.config.ts | 3 + src/pages/event/register/index.tsx | 317 + src/pages/exchange.config.ts | 4 + src/pages/exchange.tsx | 226 + src/pages/favorite-list.tsx | 96 + src/pages/gift-card/balance/index.config.ts | 3 + src/pages/gift-card/balance/index.tsx | 187 + src/pages/gift-card/exchange/index.config.ts | 3 + src/pages/gift-card/exchange/index.tsx | 205 + src/pages/gift-card/purchase/index.config.ts | 3 + src/pages/gift-card/purchase/index.tsx | 143 + src/pages/group-buy-detail.config.ts | 3 + src/pages/group-buy-detail.tsx | 323 + src/pages/group-buy-list.tsx | 119 + src/pages/help-center.tsx | 146 + src/pages/help-detail.tsx | 50 + src/pages/history-list.tsx | 113 + src/pages/index/article-detail.tsx | 28 + src/pages/index/article-list.config.ts | 3 + src/pages/index/article-list.tsx | 125 + src/pages/index/coupon-center.config.ts | 3 + src/pages/index/coupon-center.tsx | 125 + src/pages/index/coupon-center/index.config.ts | 3 + src/pages/index/coupon-center/index.tsx | 164 + src/pages/index/index.config.ts | 6 + src/pages/index/index.scss | 9 + src/pages/index/index.tsx | 267 + src/pages/index/notification.tsx | 87 + src/pages/index/search.tsx | 115 + src/pages/invite-record.config.ts | 3 + src/pages/invite-record.tsx | 89 + src/pages/invoice/apply/index.tsx | 153 + src/pages/invoice/records/index.tsx | 224 + src/pages/invoice/title/index.tsx | 297 + src/pages/list.config.ts | 3 + src/pages/list.tsx | 131 + src/pages/member.config.ts | 3 + src/pages/member.tsx | 137 + src/pages/message/detail/index.config.ts | 3 + src/pages/message/detail/index.tsx | 169 + src/pages/message/list/index.config.ts | 3 + src/pages/message/list/index.tsx | 262 + src/pages/order-list.tsx | 220 + src/pages/order/after-sale-apply.tsx | 340 + src/pages/order/after-sale-detail.tsx | 257 + src/pages/order/after-sale-list.tsx | 174 + src/pages/order/detail.tsx | 519 + src/pages/order/evaluate-detail.config.ts | 3 + src/pages/order/evaluate-detail.tsx | 186 + .../order/evaluate-detail/index.config.ts | 3 + src/pages/order/evaluate-detail/index.tsx | 189 + src/pages/order/evaluate-list.config.ts | 3 + src/pages/order/evaluate-list.tsx | 238 + src/pages/order/evaluate-list/index.config.ts | 3 + src/pages/order/evaluate-list/index.tsx | 238 + src/pages/order/evaluate.config.ts | 3 + src/pages/order/evaluate.tsx | 185 + src/pages/order/evaluate/index.config.ts | 3 + src/pages/order/evaluate/index.tsx | 185 + src/pages/order/list.tsx | 187 + src/pages/order/logistics.tsx | 250 + src/pages/order/order.config.ts | 6 + src/pages/order/order.scss | 9 + src/pages/order/order.tsx | 65 + src/pages/order/refund-detail.tsx | 93 + src/pages/order/refund.tsx | 113 + src/pages/points-rules.tsx | 168 + src/pages/points/exchange.tsx | 87 + src/pages/points/exchange/index.config.ts | 4 + src/pages/points/exchange/index.tsx | 226 + src/pages/points/index.config.ts | 3 + src/pages/points/index.tsx | 116 + src/pages/points/order-list/index.tsx | 222 + src/pages/points/points-rules/index.tsx | 168 + src/pages/points/product-detail.tsx | 176 + src/pages/points/product-list/index.config.ts | 3 + src/pages/points/product-list/index.tsx | 170 + src/pages/points/signin.tsx | 149 + src/pages/progress.config.ts | 3 + src/pages/progress.tsx | 170 + src/pages/promotion.config.ts | 3 + src/pages/promotion.tsx | 110 + src/pages/purchase.config.ts | 3 + src/pages/purchase.tsx | 145 + src/pages/rebate/records/index.tsx | 259 + src/pages/rebate/withdraw/index.tsx | 117 + src/pages/records.tsx | 224 + src/pages/redeem.config.ts | 3 + src/pages/redeem.tsx | 294 + src/pages/reschedule.config.ts | 3 + src/pages/reschedule.tsx | 158 + src/pages/sales.tsx | 227 + src/pages/seckill-detail.config.ts | 3 + src/pages/seckill-detail.tsx | 279 + src/pages/seckill-list.config.ts | 3 + src/pages/seckill-list.tsx | 149 + src/pages/share/index.tsx | 119 + src/pages/shop/cart.tsx | 231 + src/pages/shop/category.tsx | 92 + src/pages/shop/checkout.tsx | 694 + .../shop/group-buy-detail/index.config.ts | 3 + src/pages/shop/group-buy-detail/index.tsx | 323 + src/pages/shop/group-buy-list/index.tsx | 119 + src/pages/shop/index.config.ts | 3 + src/pages/shop/index.tsx | 113 + src/pages/shop/product-detail.tsx | 408 + src/pages/shop/seckill-detail/index.config.ts | 3 + src/pages/shop/seckill-detail/index.tsx | 279 + src/pages/shop/seckill-list/index.config.ts | 3 + src/pages/shop/seckill-list/index.tsx | 149 + src/pages/statistics/dashboard/index.tsx | 197 + src/pages/statistics/sales/index.tsx | 226 + src/pages/statistics/users/index.tsx | 194 + src/pages/store/booking/index.config.ts | 3 + src/pages/store/booking/index.scss | 69 + src/pages/store/booking/index.tsx | 389 + src/pages/store/list/index.config.ts | 3 + src/pages/store/list/index.tsx | 340 + src/pages/store/login/index.config.ts | 5 + src/pages/store/login/index.scss | 137 + src/pages/store/login/index.tsx | 132 + src/pages/team.config.ts | 3 + src/pages/team.tsx | 127 + src/pages/title.tsx | 297 + src/pages/user/address-edit.tsx | 561 + src/pages/user/address-list.tsx | 116 + src/pages/user/balance-log/index.tsx | 169 + .../user/benefit-exchange-confirm/index.scss | 200 + .../user/benefit-exchange-confirm/index.tsx | 178 + .../user/benefit-exchange-list/index.scss | 158 + .../user/benefit-exchange-list/index.tsx | 170 + src/pages/user/benefit-packages/index.scss | 136 + src/pages/user/benefit-packages/index.tsx | 97 + src/pages/user/commission/index.config.ts | 3 + src/pages/user/commission/index.scss | 159 + src/pages/user/commission/index.tsx | 151 + src/pages/user/coupon-list.tsx | 259 + .../user/customer-service/index.config.ts | 3 + src/pages/user/customer-service/index.tsx | 406 + src/pages/user/favorite-list/index.tsx | 96 + src/pages/user/help-center/index.tsx | 146 + src/pages/user/help-detail/index.tsx | 50 + src/pages/user/history-list/index.tsx | 113 + src/pages/user/index.tsx | 212 + src/pages/user/invite-record/index.config.ts | 3 + src/pages/user/invite-record/index.tsx | 89 + .../user/invite-subordinate/index.config.ts | 4 + src/pages/user/invite-subordinate/index.tsx | 340 + src/pages/user/member-upgrade/index.config.ts | 5 + src/pages/user/member-upgrade/index.tsx | 261 + src/pages/user/member/index.config.ts | 3 + src/pages/user/member/index.tsx | 271 + src/pages/user/points-record.tsx | 260 + src/pages/user/profile.tsx | 203 + src/pages/user/promotion/index.config.ts | 3 + src/pages/user/promotion/index.tsx | 123 + src/pages/user/recharge-record/index.tsx | 196 + src/pages/user/recharge.tsx | 213 + src/pages/user/redeem/index.config.ts | 3 + src/pages/user/redeem/index.tsx | 294 + src/pages/user/register-pay/index.config.ts | 3 + src/pages/user/register-pay/index.tsx | 240 + src/pages/user/setting.tsx | 77 + src/pages/user/shop-setting/index.tsx | 217 + src/pages/user/team/index.config.ts | 3 + src/pages/user/team/index.tsx | 127 + src/pages/user/user.config.ts | 6 + src/pages/user/user.scss | 9 + src/pages/user/user.tsx | 210 + src/pages/user/wallet.tsx | 102 + src/pages/user/withdraw-list/index.scss | 139 + src/pages/user/withdraw-list/index.tsx | 169 + src/pages/user/withdraw/index.scss | 105 + src/pages/user/withdraw/index.tsx | 163 + src/pages/users.tsx | 195 + src/pages/withdraw.tsx | 116 + src/passport/agreement.config.ts | 4 + src/passport/agreement.scss | 55 + src/passport/agreement.tsx | 178 + src/passport/auth-flow.ts | 112 + src/passport/forget.config.ts | 4 + src/passport/forget.tsx | 37 + src/passport/login.config.ts | 4 + src/passport/login.scss | 377 + src/passport/login.tsx | 339 + src/passport/qr-confirm/index.config.ts | 5 + src/passport/qr-confirm/index.tsx | 239 + src/passport/qr-login/index.config.ts | 5 + src/passport/qr-login/index.tsx | 191 + src/passport/register.config.ts | 5 + src/passport/register.tsx | 295 + src/passport/setting.config.ts | 4 + src/passport/setting.tsx | 82 + src/passport/sms-login.config.ts | 4 + src/passport/sms-login.tsx | 269 + src/passport/unified-qr/index.config.ts | 4 + src/passport/unified-qr/index.tsx | 177 + src/styles/global.scss | 36 + src/types/address.ts | 8 + src/types/coupon.ts | 17 + src/types/global.d.ts | 57 + src/types/index.ts | 5 + src/types/member.ts | 27 + src/types/order.ts | 83 + src/types/product.ts | 36 + src/utils/auth.ts | 21 + src/utils/common.ts | 35 + src/utils/geofence.ts | 131 + src/utils/index.ts | 114 + src/utils/invite.ts | 66 + src/utils/request.ts | 284 + src/utils/server.ts | 23 + tailwind.config.js | 27 + tsconfig.json | 33 + 617 files changed, 77059 insertions(+) create mode 100644 .swc/plugins/v7_macos_aarch64_0.104.8/7ca3755447b46c29f7e44fd3038127a38b710567283f1da199d8c7585b928b7e create mode 100644 .workbuddy/memory/2026-05-14.md create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 config/app.ts create mode 100644 config/dev.ts create mode 100644 config/env.js create mode 100644 config/index.ts create mode 100644 config/prod.ts create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 project.config.json create mode 100644 src/api/cms/cmsAd/index.ts create mode 100644 src/api/cms/cmsAd/model/index.ts create mode 100644 src/api/cms/cmsAdRecord/index.ts create mode 100644 src/api/cms/cmsAdRecord/model/index.ts create mode 100644 src/api/cms/cmsArticle/index.ts create mode 100644 src/api/cms/cmsArticle/model/index.ts create mode 100644 src/api/cms/cmsArticleCategory/index.ts create mode 100644 src/api/cms/cmsArticleCategory/model/index.ts create mode 100644 src/api/cms/cmsArticleComment/index.ts create mode 100644 src/api/cms/cmsArticleComment/model/index.ts create mode 100644 src/api/cms/cmsArticleContent/index.ts create mode 100644 src/api/cms/cmsArticleContent/model/index.ts create mode 100644 src/api/cms/cmsArticleCount/index.ts create mode 100644 src/api/cms/cmsArticleCount/model/index.ts create mode 100644 src/api/cms/cmsArticleLike/index.ts create mode 100644 src/api/cms/cmsArticleLike/model/index.ts create mode 100644 src/api/cms/cmsComponents/index.ts create mode 100644 src/api/cms/cmsComponents/model/index.ts create mode 100644 src/api/cms/cmsDesign/index.ts create mode 100644 src/api/cms/cmsDesign/model/index.ts create mode 100644 src/api/cms/cmsDesignRecord/index.ts create mode 100644 src/api/cms/cmsDesignRecord/model/index.ts create mode 100644 src/api/cms/cmsDocs/index.ts create mode 100644 src/api/cms/cmsDocs/model/index.ts create mode 100644 src/api/cms/cmsDocsBook/index.ts create mode 100644 src/api/cms/cmsDocsBook/model/index.ts create mode 100644 src/api/cms/cmsDocsContent/index.ts create mode 100644 src/api/cms/cmsDocsContent/model/index.ts create mode 100644 src/api/cms/cmsDomain/index.ts create mode 100644 src/api/cms/cmsDomain/model/index.ts create mode 100644 src/api/cms/cmsForm/index.ts create mode 100644 src/api/cms/cmsForm/model/index.ts create mode 100644 src/api/cms/cmsFormRecord/index.ts create mode 100644 src/api/cms/cmsFormRecord/model/index.ts create mode 100644 src/api/cms/cmsLang/index.ts create mode 100644 src/api/cms/cmsLang/model/index.ts create mode 100644 src/api/cms/cmsLangLog/index.ts create mode 100644 src/api/cms/cmsLangLog/model/index.ts create mode 100644 src/api/cms/cmsLink/index.ts create mode 100644 src/api/cms/cmsLink/model/index.ts create mode 100644 src/api/cms/cmsModel/index.ts create mode 100644 src/api/cms/cmsModel/model/index.ts create mode 100644 src/api/cms/cmsMp/index.ts create mode 100644 src/api/cms/cmsMp/model/index.ts create mode 100644 src/api/cms/cmsMpAd/index.ts create mode 100644 src/api/cms/cmsMpAd/model/index.ts create mode 100644 src/api/cms/cmsMpField/index.ts create mode 100644 src/api/cms/cmsMpField/model/index.ts create mode 100644 src/api/cms/cmsMpMenu/index.ts create mode 100644 src/api/cms/cmsMpMenu/model/index.ts create mode 100644 src/api/cms/cmsMpPages/index.ts create mode 100644 src/api/cms/cmsMpPages/model/index.ts create mode 100644 src/api/cms/cmsNavigation/index.ts create mode 100644 src/api/cms/cmsNavigation/model/index.ts create mode 100644 src/api/cms/cmsOrder/index.ts create mode 100644 src/api/cms/cmsOrder/model/index.ts create mode 100644 src/api/cms/cmsSpec/index.ts create mode 100644 src/api/cms/cmsSpec/model/index.ts create mode 100644 src/api/cms/cmsSpecValue/index.ts create mode 100644 src/api/cms/cmsSpecValue/model/index.ts create mode 100644 src/api/cms/cmsWebsite/index.ts create mode 100644 src/api/cms/cmsWebsite/model/index.ts create mode 100644 src/api/cms/cmsWebsiteField/index.ts create mode 100644 src/api/cms/cmsWebsiteField/model/index.ts create mode 100644 src/api/cms/link/index.ts create mode 100644 src/api/cms/link/model/index.ts create mode 100644 src/api/cms/mpOfficialMenu/index.ts create mode 100644 src/api/cms/mpOfficialMenu/model/index.ts create mode 100644 src/api/index.ts create mode 100644 src/api/json/china-provinces.geo.json create mode 100644 src/api/json/industry-data.json create mode 100644 src/api/json/regions-data.json create mode 100644 src/api/layout/index.ts create mode 100644 src/api/layout/model/index.ts create mode 100644 src/api/passport/login/index.ts create mode 100644 src/api/passport/login/model/index.ts create mode 100644 src/api/passport/qr-login/index.ts create mode 100644 src/api/shop/shopActivity/index.ts create mode 100644 src/api/shop/shopActivity/model/index.ts create mode 100644 src/api/shop/shopAfterSale/index.ts create mode 100644 src/api/shop/shopArticle/index.ts create mode 100644 src/api/shop/shopArticle/model/index.ts create mode 100644 src/api/shop/shopBooking/index.ts create mode 100644 src/api/shop/shopBooking/model/index.ts create mode 100644 src/api/shop/shopCart/index.ts create mode 100644 src/api/shop/shopCart/model/index.ts create mode 100644 src/api/shop/shopChatConversation/index.ts create mode 100644 src/api/shop/shopChatConversation/model/index.ts create mode 100644 src/api/shop/shopChatMessage/index.ts create mode 100644 src/api/shop/shopChatMessage/model/index.ts create mode 100644 src/api/shop/shopCommissionRecord.ts create mode 100644 src/api/shop/shopCommissionRole/index.ts create mode 100644 src/api/shop/shopCommissionRole/model/index.ts create mode 100644 src/api/shop/shopCoupon/index.ts create mode 100644 src/api/shop/shopCoupon/model/index.ts create mode 100644 src/api/shop/shopCustomerService/index.ts create mode 100644 src/api/shop/shopCustomerService/model.ts create mode 100644 src/api/shop/shopDealerApply/index.ts create mode 100644 src/api/shop/shopDealerApply/model/index.ts create mode 100644 src/api/shop/shopDealerCapital/index.ts create mode 100644 src/api/shop/shopDealerCapital/model.ts create mode 100644 src/api/shop/shopDealerCapital/model/index.ts create mode 100644 src/api/shop/shopDealerOrder/index.ts create mode 100644 src/api/shop/shopDealerOrder/model/index.ts create mode 100644 src/api/shop/shopDealerReferee/index.ts create mode 100644 src/api/shop/shopDealerReferee/model/index.ts create mode 100644 src/api/shop/shopDealerSetting/index.ts create mode 100644 src/api/shop/shopDealerSetting/model/index.ts create mode 100644 src/api/shop/shopDealerUser/index.ts create mode 100644 src/api/shop/shopDealerUser/model/index.ts create mode 100644 src/api/shop/shopDealerWithdraw/index.ts create mode 100644 src/api/shop/shopDealerWithdraw/model/index.ts create mode 100644 src/api/shop/shopEvaluation/index.ts create mode 100644 src/api/shop/shopEvaluation/model/index.ts create mode 100644 src/api/shop/shopEvent/index.ts create mode 100644 src/api/shop/shopEvent/model/index.ts create mode 100644 src/api/shop/shopExpress/index.ts create mode 100644 src/api/shop/shopExpress/model/index.ts create mode 100644 src/api/shop/shopExpressTemplate/index.ts create mode 100644 src/api/shop/shopExpressTemplate/model/index.ts create mode 100644 src/api/shop/shopExpressTemplateDetail/index.ts create mode 100644 src/api/shop/shopExpressTemplateDetail/model/index.ts create mode 100644 src/api/shop/shopGift/index.ts create mode 100644 src/api/shop/shopGift/model/index.ts create mode 100644 src/api/shop/shopGiftCard/index.ts create mode 100644 src/api/shop/shopGiftCard/model.ts create mode 100644 src/api/shop/shopGoods/index.ts create mode 100644 src/api/shop/shopGoods/model/index.ts create mode 100644 src/api/shop/shopGoodsCategory/index.ts create mode 100644 src/api/shop/shopGoodsCategory/model/index.ts create mode 100644 src/api/shop/shopGoodsComment/index.ts create mode 100644 src/api/shop/shopGoodsComment/model.ts create mode 100644 src/api/shop/shopGoodsEvaluate/index.ts create mode 100644 src/api/shop/shopGoodsEvaluate/model.ts create mode 100644 src/api/shop/shopGoodsFavorite/index.ts create mode 100644 src/api/shop/shopGoodsFavorite/model.ts create mode 100644 src/api/shop/shopGoodsRoleCommission/index.ts create mode 100644 src/api/shop/shopGoodsRoleCommission/model/index.ts create mode 100644 src/api/shop/shopGoodsSku/index.ts create mode 100644 src/api/shop/shopGoodsSku/model/index.ts create mode 100644 src/api/shop/shopGoodsSpec/index.ts create mode 100644 src/api/shop/shopGoodsSpec/model/index.ts create mode 100644 src/api/shop/shopGroupBuy/index.ts create mode 100644 src/api/shop/shopGroupBuy/model.ts create mode 100644 src/api/shop/shopInvite/index.ts create mode 100644 src/api/shop/shopInvite/model/index.ts create mode 100644 src/api/shop/shopInvoiceTitle/index.ts create mode 100644 src/api/shop/shopInvoiceTitle/model.ts create mode 100644 src/api/shop/shopLogistics/index.ts create mode 100644 src/api/shop/shopMemberBenefit.ts create mode 100644 src/api/shop/shopMemberCenter.ts create mode 100644 src/api/shop/shopMemberRegister.ts create mode 100644 src/api/shop/shopMerchant/index.ts create mode 100644 src/api/shop/shopMerchant/model/index.ts create mode 100644 src/api/shop/shopMerchantAccount/index.ts create mode 100644 src/api/shop/shopMerchantAccount/model/index.ts create mode 100644 src/api/shop/shopMerchantApply/index.ts create mode 100644 src/api/shop/shopMerchantApply/model/index.ts create mode 100644 src/api/shop/shopMerchantCount/index.ts create mode 100644 src/api/shop/shopMerchantCount/model/index.ts create mode 100644 src/api/shop/shopMerchantType/index.ts create mode 100644 src/api/shop/shopMerchantType/model/index.ts create mode 100644 src/api/shop/shopMessage/index.ts create mode 100644 src/api/shop/shopMessage/model/index.ts create mode 100644 src/api/shop/shopNotification/index.ts create mode 100644 src/api/shop/shopNotification/model/index.ts create mode 100644 src/api/shop/shopOrder/index.ts create mode 100644 src/api/shop/shopOrder/model/index.ts create mode 100644 src/api/shop/shopOrderGoods/index.ts create mode 100644 src/api/shop/shopOrderGoods/model/index.ts create mode 100644 src/api/shop/shopOrderRefund/index.ts create mode 100644 src/api/shop/shopPointsOrder/index.ts create mode 100644 src/api/shop/shopPointsOrder/model/index.ts create mode 100644 src/api/shop/shopPointsProduct/index.ts create mode 100644 src/api/shop/shopPointsProduct/model/index.ts create mode 100644 src/api/shop/shopRecharge/index.ts create mode 100644 src/api/shop/shopRecharge/model/index.ts create mode 100644 src/api/shop/shopRechargeCode/index.ts create mode 100644 src/api/shop/shopRechargeCode/model/index.ts create mode 100644 src/api/shop/shopRechargeOrder.ts create mode 100644 src/api/shop/shopSeckill/index.ts create mode 100644 src/api/shop/shopSeckill/model.ts create mode 100644 src/api/shop/shopSetting/index.ts create mode 100644 src/api/shop/shopSetting/model/index.ts create mode 100644 src/api/shop/shopSigninConfig/index.ts create mode 100644 src/api/shop/shopSigninConfig/model/index.ts create mode 100644 src/api/shop/shopSigninRecord/index.ts create mode 100644 src/api/shop/shopSigninRecord/model/index.ts create mode 100644 src/api/shop/shopSpec/index.ts create mode 100644 src/api/shop/shopSpec/model/index.ts create mode 100644 src/api/shop/shopSpecValue/index.ts create mode 100644 src/api/shop/shopSpecValue/model/index.ts create mode 100644 src/api/shop/shopStore/index.ts create mode 100644 src/api/shop/shopStore/model/index.ts create mode 100644 src/api/shop/shopStoreFence/index.ts create mode 100644 src/api/shop/shopStoreFence/model/index.ts create mode 100644 src/api/shop/shopStoreRider/index.ts create mode 100644 src/api/shop/shopStoreRider/model/index.ts create mode 100644 src/api/shop/shopStoreUser/index.ts create mode 100644 src/api/shop/shopStoreUser/model/index.ts create mode 100644 src/api/shop/shopStoreWarehouse/index.ts create mode 100644 src/api/shop/shopStoreWarehouse/model/index.ts create mode 100644 src/api/shop/shopUserAddress.ts create mode 100644 src/api/shop/shopUserAddress/index.ts create mode 100644 src/api/shop/shopUserAddress/model.ts create mode 100644 src/api/shop/shopUserAddress/model/index.ts create mode 100644 src/api/shop/shopUserCard/index.ts create mode 100644 src/api/shop/shopUserCard/model/index.ts create mode 100644 src/api/shop/shopUserCoupon/index.ts create mode 100644 src/api/shop/shopUserCoupon/model/index.ts create mode 100644 src/api/shop/shopUserReferee/index.ts create mode 100644 src/api/shop/shopUserReferee/model/index.ts create mode 100644 src/api/shop/shopWithdrawRecord.ts create mode 100644 src/api/system/access-key/index.ts create mode 100644 src/api/system/access-key/model/index.ts create mode 100644 src/api/system/appstore/index.ts create mode 100644 src/api/system/appstore/model/index.ts create mode 100644 src/api/system/cache/index.ts create mode 100644 src/api/system/cache/model/index.ts create mode 100644 src/api/system/chat/index.ts create mode 100644 src/api/system/chat/model/index.ts create mode 100644 src/api/system/chatConversation/index.ts create mode 100644 src/api/system/chatConversation/model/index.ts create mode 100644 src/api/system/chatMessage/index.ts create mode 100644 src/api/system/chatMessage/model/index.ts create mode 100644 src/api/system/company/index.ts create mode 100644 src/api/system/company/model/index.ts create mode 100644 src/api/system/companyComment/index.ts create mode 100644 src/api/system/companyComment/model/index.ts create mode 100644 src/api/system/companyContent/index.ts create mode 100644 src/api/system/companyContent/model/index.ts create mode 100644 src/api/system/companyGit/index.ts create mode 100644 src/api/system/companyGit/model/index.ts create mode 100644 src/api/system/companyParameter/index.ts create mode 100644 src/api/system/companyParameter/model/index.ts create mode 100644 src/api/system/companyUrl/index.ts create mode 100644 src/api/system/companyUrl/model/index.ts create mode 100644 src/api/system/dict-data/index.ts create mode 100644 src/api/system/dict-data/model/index.ts create mode 100644 src/api/system/dict/index.ts create mode 100644 src/api/system/dict/model/index.ts create mode 100644 src/api/system/dictionary-data/index.ts create mode 100644 src/api/system/dictionary-data/model/index.ts create mode 100644 src/api/system/dictionary/index.ts create mode 100644 src/api/system/dictionary/model/index.ts create mode 100644 src/api/system/environment/index.ts create mode 100644 src/api/system/environment/model/index.ts create mode 100644 src/api/system/file/index.ts create mode 100644 src/api/system/file/model/index.ts create mode 100644 src/api/system/login-record/index.ts create mode 100644 src/api/system/login-record/model/index.ts create mode 100644 src/api/system/menu/index.ts create mode 100644 src/api/system/menu/model/index.ts create mode 100644 src/api/system/modules/index.ts create mode 100644 src/api/system/modules/model/index.ts create mode 100644 src/api/system/operation-record/index.ts create mode 100644 src/api/system/operation-record/model/index.ts create mode 100644 src/api/system/order/index.ts create mode 100644 src/api/system/order/model/index.ts create mode 100644 src/api/system/orderGoods/index.ts create mode 100644 src/api/system/orderGoods/model/index.ts create mode 100644 src/api/system/organization/index.ts create mode 100644 src/api/system/organization/model/index.ts create mode 100644 src/api/system/parameter/index.ts create mode 100644 src/api/system/parameter/model/index.ts create mode 100644 src/api/system/payment/index.ts create mode 100644 src/api/system/payment/model/index.ts create mode 100644 src/api/system/plug/index.ts create mode 100644 src/api/system/plug/model/index.ts create mode 100644 src/api/system/role/index.ts create mode 100644 src/api/system/role/model/index.ts create mode 100644 src/api/system/setting/index.ts create mode 100644 src/api/system/setting/model/index.ts create mode 100644 src/api/system/tenant/index.ts create mode 100644 src/api/system/tenant/model/index.ts create mode 100644 src/api/system/url/index.ts create mode 100644 src/api/system/url/model/index.ts create mode 100644 src/api/system/user-collection/index.ts create mode 100644 src/api/system/user-collection/model/index.ts create mode 100644 src/api/system/user-file/index.ts create mode 100644 src/api/system/user-file/model/index.ts create mode 100644 src/api/system/user-group/index.ts create mode 100644 src/api/system/user-group/model/index.ts create mode 100644 src/api/system/user/balance-log/index.ts create mode 100644 src/api/system/user/balance-log/model/index.ts create mode 100644 src/api/system/user/balance.ts create mode 100644 src/api/system/user/index.ts create mode 100644 src/api/system/user/model/count.ts create mode 100644 src/api/system/user/model/index.ts create mode 100644 src/api/system/user/points/index.ts create mode 100644 src/api/system/user/points/model/index.ts create mode 100644 src/api/system/user/withdraw/index.ts create mode 100644 src/api/system/user/withdraw/model/index.ts create mode 100644 src/api/system/userRole/index.ts create mode 100644 src/api/system/userRole/model/index.ts create mode 100644 src/api/system/userVerify/index.ts create mode 100644 src/api/system/userVerify/model/index.ts create mode 100644 src/api/system/version/index.ts create mode 100644 src/api/system/version/model/index.ts create mode 100644 src/api/system/white-domain/index.ts create mode 100644 src/api/system/white-domain/model/index.ts create mode 100644 src/app.config.ts create mode 100644 src/app.scss create mode 100644 src/app.tsx create mode 100644 src/assets/logo.png create mode 100644 src/assets/tabbar/README.md create mode 100644 src/assets/tabbar/home-active.png create mode 100644 src/assets/tabbar/home.png create mode 100644 src/assets/tabbar/order-active.png create mode 100644 src/assets/tabbar/order.png create mode 100644 src/assets/tabbar/points-active.png create mode 100644 src/assets/tabbar/points.png create mode 100644 src/assets/tabbar/shop-active.png create mode 100644 src/assets/tabbar/shop.png create mode 100644 src/assets/tabbar/user-active.png create mode 100644 src/assets/tabbar/user.png create mode 100644 src/components/ErrorBoundary.scss create mode 100644 src/components/ErrorBoundary.tsx create mode 100644 src/components/NavBar/index.tsx create mode 100644 src/components/QRLoginScanner.tsx create mode 100644 src/components/business/AddressCard/index.tsx create mode 100644 src/components/business/CouponCard/index.tsx create mode 100644 src/components/business/CouponSelect/index.tsx create mode 100644 src/components/business/MemberBadge/index.tsx create mode 100644 src/components/business/PayModal/index.tsx create mode 100644 src/components/business/SkuSelector/index.tsx create mode 100644 src/components/common/BottomButton/index.scss create mode 100644 src/components/common/BottomButton/index.tsx create mode 100644 src/components/common/EmptyState/index.tsx create mode 100644 src/components/common/FixedButton/index.tsx create mode 100644 src/components/common/LazyImage/index.tsx create mode 100644 src/components/common/LoadMore/index.tsx create mode 100644 src/components/common/Loading/index.tsx create mode 100644 src/components/common/OrderCard/index.tsx create mode 100644 src/components/common/Price/index.tsx create mode 100644 src/components/common/ProductCard/index.tsx create mode 100644 src/components/common/VirtualList/index.tsx create mode 100644 src/config/app.ts create mode 100644 src/contexts/AppContext.tsx create mode 100644 src/contexts/CartContext.tsx create mode 100644 src/contexts/UserContext.tsx create mode 100644 src/hooks/index.ts create mode 100644 src/hooks/useAddress.ts create mode 100644 src/hooks/useAppContext.ts create mode 100644 src/hooks/useCountDown.ts create mode 100644 src/hooks/useCountUp.ts create mode 100644 src/hooks/useCoupon.ts create mode 100644 src/hooks/usePagination.ts create mode 100644 src/hooks/usePayment.ts create mode 100644 src/hooks/useRequest.ts create mode 100644 src/hooks/useScrollHeight.ts create mode 100644 src/hooks/useTheme.ts create mode 100644 src/hooks/useUser.ts create mode 100644 src/index.html create mode 100644 src/pages/activity/detail/index.config.ts create mode 100644 src/pages/activity/detail/index.tsx create mode 100644 src/pages/activity/list/index.config.ts create mode 100644 src/pages/activity/list/index.tsx create mode 100644 src/pages/after-sale/apply/index.config.ts create mode 100644 src/pages/after-sale/apply/index.tsx create mode 100644 src/pages/after-sale/list/index.config.ts create mode 100644 src/pages/after-sale/list/index.tsx create mode 100644 src/pages/after-sale/progress/index.config.ts create mode 100644 src/pages/after-sale/progress/index.tsx create mode 100644 src/pages/apply.config.ts create mode 100644 src/pages/apply.tsx create mode 100644 src/pages/balance-log.tsx create mode 100644 src/pages/balance.config.ts create mode 100644 src/pages/balance.tsx create mode 100644 src/pages/booking.config.ts create mode 100644 src/pages/booking.tsx create mode 100644 src/pages/booking/detail/index.config.ts create mode 100644 src/pages/booking/detail/index.tsx create mode 100644 src/pages/booking/list/index.config.ts create mode 100644 src/pages/booking/list/index.tsx create mode 100644 src/pages/booking/reschedule/index.config.ts create mode 100644 src/pages/booking/reschedule/index.tsx create mode 100644 src/pages/commission.config.ts create mode 100644 src/pages/commission.tsx create mode 100644 src/pages/customer-service.config.ts create mode 100644 src/pages/customer-service.tsx create mode 100644 src/pages/dashboard.tsx create mode 100644 src/pages/detail.config.ts create mode 100644 src/pages/detail.tsx create mode 100644 src/pages/event/detail/index.config.ts create mode 100644 src/pages/event/detail/index.tsx create mode 100644 src/pages/event/list/index.config.ts create mode 100644 src/pages/event/list/index.tsx create mode 100644 src/pages/event/my/index.config.ts create mode 100644 src/pages/event/my/index.tsx create mode 100644 src/pages/event/register/index.config.ts create mode 100644 src/pages/event/register/index.tsx create mode 100644 src/pages/exchange.config.ts create mode 100644 src/pages/exchange.tsx create mode 100644 src/pages/favorite-list.tsx create mode 100644 src/pages/gift-card/balance/index.config.ts create mode 100644 src/pages/gift-card/balance/index.tsx create mode 100644 src/pages/gift-card/exchange/index.config.ts create mode 100644 src/pages/gift-card/exchange/index.tsx create mode 100644 src/pages/gift-card/purchase/index.config.ts create mode 100644 src/pages/gift-card/purchase/index.tsx create mode 100644 src/pages/group-buy-detail.config.ts create mode 100644 src/pages/group-buy-detail.tsx create mode 100644 src/pages/group-buy-list.tsx create mode 100644 src/pages/help-center.tsx create mode 100644 src/pages/help-detail.tsx create mode 100644 src/pages/history-list.tsx create mode 100644 src/pages/index/article-detail.tsx create mode 100644 src/pages/index/article-list.config.ts create mode 100644 src/pages/index/article-list.tsx create mode 100644 src/pages/index/coupon-center.config.ts create mode 100644 src/pages/index/coupon-center.tsx create mode 100644 src/pages/index/coupon-center/index.config.ts create mode 100644 src/pages/index/coupon-center/index.tsx create mode 100644 src/pages/index/index.config.ts create mode 100644 src/pages/index/index.scss create mode 100644 src/pages/index/index.tsx create mode 100644 src/pages/index/notification.tsx create mode 100644 src/pages/index/search.tsx create mode 100644 src/pages/invite-record.config.ts create mode 100644 src/pages/invite-record.tsx create mode 100644 src/pages/invoice/apply/index.tsx create mode 100644 src/pages/invoice/records/index.tsx create mode 100644 src/pages/invoice/title/index.tsx create mode 100644 src/pages/list.config.ts create mode 100644 src/pages/list.tsx create mode 100644 src/pages/member.config.ts create mode 100644 src/pages/member.tsx create mode 100644 src/pages/message/detail/index.config.ts create mode 100644 src/pages/message/detail/index.tsx create mode 100644 src/pages/message/list/index.config.ts create mode 100644 src/pages/message/list/index.tsx create mode 100644 src/pages/order-list.tsx create mode 100644 src/pages/order/after-sale-apply.tsx create mode 100644 src/pages/order/after-sale-detail.tsx create mode 100644 src/pages/order/after-sale-list.tsx create mode 100644 src/pages/order/detail.tsx create mode 100644 src/pages/order/evaluate-detail.config.ts create mode 100644 src/pages/order/evaluate-detail.tsx create mode 100644 src/pages/order/evaluate-detail/index.config.ts create mode 100644 src/pages/order/evaluate-detail/index.tsx create mode 100644 src/pages/order/evaluate-list.config.ts create mode 100644 src/pages/order/evaluate-list.tsx create mode 100644 src/pages/order/evaluate-list/index.config.ts create mode 100644 src/pages/order/evaluate-list/index.tsx create mode 100644 src/pages/order/evaluate.config.ts create mode 100644 src/pages/order/evaluate.tsx create mode 100644 src/pages/order/evaluate/index.config.ts create mode 100644 src/pages/order/evaluate/index.tsx create mode 100644 src/pages/order/list.tsx create mode 100644 src/pages/order/logistics.tsx create mode 100644 src/pages/order/order.config.ts create mode 100644 src/pages/order/order.scss create mode 100644 src/pages/order/order.tsx create mode 100644 src/pages/order/refund-detail.tsx create mode 100644 src/pages/order/refund.tsx create mode 100644 src/pages/points-rules.tsx create mode 100644 src/pages/points/exchange.tsx create mode 100644 src/pages/points/exchange/index.config.ts create mode 100644 src/pages/points/exchange/index.tsx create mode 100644 src/pages/points/index.config.ts create mode 100644 src/pages/points/index.tsx create mode 100644 src/pages/points/order-list/index.tsx create mode 100644 src/pages/points/points-rules/index.tsx create mode 100644 src/pages/points/product-detail.tsx create mode 100644 src/pages/points/product-list/index.config.ts create mode 100644 src/pages/points/product-list/index.tsx create mode 100644 src/pages/points/signin.tsx create mode 100644 src/pages/progress.config.ts create mode 100644 src/pages/progress.tsx create mode 100644 src/pages/promotion.config.ts create mode 100644 src/pages/promotion.tsx create mode 100644 src/pages/purchase.config.ts create mode 100644 src/pages/purchase.tsx create mode 100644 src/pages/rebate/records/index.tsx create mode 100644 src/pages/rebate/withdraw/index.tsx create mode 100644 src/pages/records.tsx create mode 100644 src/pages/redeem.config.ts create mode 100644 src/pages/redeem.tsx create mode 100644 src/pages/reschedule.config.ts create mode 100644 src/pages/reschedule.tsx create mode 100644 src/pages/sales.tsx create mode 100644 src/pages/seckill-detail.config.ts create mode 100644 src/pages/seckill-detail.tsx create mode 100644 src/pages/seckill-list.config.ts create mode 100644 src/pages/seckill-list.tsx create mode 100644 src/pages/share/index.tsx create mode 100644 src/pages/shop/cart.tsx create mode 100644 src/pages/shop/category.tsx create mode 100644 src/pages/shop/checkout.tsx create mode 100644 src/pages/shop/group-buy-detail/index.config.ts create mode 100644 src/pages/shop/group-buy-detail/index.tsx create mode 100644 src/pages/shop/group-buy-list/index.tsx create mode 100644 src/pages/shop/index.config.ts create mode 100644 src/pages/shop/index.tsx create mode 100644 src/pages/shop/product-detail.tsx create mode 100644 src/pages/shop/seckill-detail/index.config.ts create mode 100644 src/pages/shop/seckill-detail/index.tsx create mode 100644 src/pages/shop/seckill-list/index.config.ts create mode 100644 src/pages/shop/seckill-list/index.tsx create mode 100644 src/pages/statistics/dashboard/index.tsx create mode 100644 src/pages/statistics/sales/index.tsx create mode 100644 src/pages/statistics/users/index.tsx create mode 100644 src/pages/store/booking/index.config.ts create mode 100644 src/pages/store/booking/index.scss create mode 100644 src/pages/store/booking/index.tsx create mode 100644 src/pages/store/list/index.config.ts create mode 100644 src/pages/store/list/index.tsx create mode 100644 src/pages/store/login/index.config.ts create mode 100644 src/pages/store/login/index.scss create mode 100644 src/pages/store/login/index.tsx create mode 100644 src/pages/team.config.ts create mode 100644 src/pages/team.tsx create mode 100644 src/pages/title.tsx create mode 100644 src/pages/user/address-edit.tsx create mode 100644 src/pages/user/address-list.tsx create mode 100644 src/pages/user/balance-log/index.tsx create mode 100644 src/pages/user/benefit-exchange-confirm/index.scss create mode 100644 src/pages/user/benefit-exchange-confirm/index.tsx create mode 100644 src/pages/user/benefit-exchange-list/index.scss create mode 100644 src/pages/user/benefit-exchange-list/index.tsx create mode 100644 src/pages/user/benefit-packages/index.scss create mode 100644 src/pages/user/benefit-packages/index.tsx create mode 100644 src/pages/user/commission/index.config.ts create mode 100644 src/pages/user/commission/index.scss create mode 100644 src/pages/user/commission/index.tsx create mode 100644 src/pages/user/coupon-list.tsx create mode 100644 src/pages/user/customer-service/index.config.ts create mode 100644 src/pages/user/customer-service/index.tsx create mode 100644 src/pages/user/favorite-list/index.tsx create mode 100644 src/pages/user/help-center/index.tsx create mode 100644 src/pages/user/help-detail/index.tsx create mode 100644 src/pages/user/history-list/index.tsx create mode 100644 src/pages/user/index.tsx create mode 100644 src/pages/user/invite-record/index.config.ts create mode 100644 src/pages/user/invite-record/index.tsx create mode 100644 src/pages/user/invite-subordinate/index.config.ts create mode 100644 src/pages/user/invite-subordinate/index.tsx create mode 100644 src/pages/user/member-upgrade/index.config.ts create mode 100644 src/pages/user/member-upgrade/index.tsx create mode 100644 src/pages/user/member/index.config.ts create mode 100644 src/pages/user/member/index.tsx create mode 100644 src/pages/user/points-record.tsx create mode 100644 src/pages/user/profile.tsx create mode 100644 src/pages/user/promotion/index.config.ts create mode 100644 src/pages/user/promotion/index.tsx create mode 100644 src/pages/user/recharge-record/index.tsx create mode 100644 src/pages/user/recharge.tsx create mode 100644 src/pages/user/redeem/index.config.ts create mode 100644 src/pages/user/redeem/index.tsx create mode 100644 src/pages/user/register-pay/index.config.ts create mode 100644 src/pages/user/register-pay/index.tsx create mode 100644 src/pages/user/setting.tsx create mode 100644 src/pages/user/shop-setting/index.tsx create mode 100644 src/pages/user/team/index.config.ts create mode 100644 src/pages/user/team/index.tsx create mode 100644 src/pages/user/user.config.ts create mode 100644 src/pages/user/user.scss create mode 100644 src/pages/user/user.tsx create mode 100644 src/pages/user/wallet.tsx create mode 100644 src/pages/user/withdraw-list/index.scss create mode 100644 src/pages/user/withdraw-list/index.tsx create mode 100644 src/pages/user/withdraw/index.scss create mode 100644 src/pages/user/withdraw/index.tsx create mode 100644 src/pages/users.tsx create mode 100644 src/pages/withdraw.tsx create mode 100644 src/passport/agreement.config.ts create mode 100644 src/passport/agreement.scss create mode 100644 src/passport/agreement.tsx create mode 100644 src/passport/auth-flow.ts create mode 100644 src/passport/forget.config.ts create mode 100644 src/passport/forget.tsx create mode 100644 src/passport/login.config.ts create mode 100644 src/passport/login.scss create mode 100644 src/passport/login.tsx create mode 100644 src/passport/qr-confirm/index.config.ts create mode 100644 src/passport/qr-confirm/index.tsx create mode 100644 src/passport/qr-login/index.config.ts create mode 100644 src/passport/qr-login/index.tsx create mode 100644 src/passport/register.config.ts create mode 100644 src/passport/register.tsx create mode 100644 src/passport/setting.config.ts create mode 100644 src/passport/setting.tsx create mode 100644 src/passport/sms-login.config.ts create mode 100644 src/passport/sms-login.tsx create mode 100644 src/passport/unified-qr/index.config.ts create mode 100644 src/passport/unified-qr/index.tsx create mode 100644 src/styles/global.scss create mode 100644 src/types/address.ts create mode 100644 src/types/coupon.ts create mode 100644 src/types/global.d.ts create mode 100644 src/types/index.ts create mode 100644 src/types/member.ts create mode 100644 src/types/order.ts create mode 100644 src/types/product.ts create mode 100644 src/utils/auth.ts create mode 100644 src/utils/common.ts create mode 100644 src/utils/geofence.ts create mode 100644 src/utils/index.ts create mode 100644 src/utils/invite.ts create mode 100644 src/utils/request.ts create mode 100644 src/utils/server.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.json diff --git a/.swc/plugins/v7_macos_aarch64_0.104.8/7ca3755447b46c29f7e44fd3038127a38b710567283f1da199d8c7585b928b7e b/.swc/plugins/v7_macos_aarch64_0.104.8/7ca3755447b46c29f7e44fd3038127a38b710567283f1da199d8c7585b928b7e new file mode 100644 index 0000000000000000000000000000000000000000..568c684554f8ec280f5818a85d2a24972baec81b GIT binary patch literal 2561552 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

MK&;yp_E_i?~45w|$oBBg^Nr^X?7qm3Pn4)r}_a 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

J#oi38%5Ps}5(} zb2`@hku}aac)|VW;=C=g<22(CR?h{vz`hh0+LvLyk6AtKIBZ{q^}c4+Z@|U&jact< zR=o$u>|1dO*8K0nWv<_i^*(6zKY%N+_Tdw_+Wkpf>z?OuoqI-bqkFV}THNyz^;WEX z@;dHt|J%6RJyW>H_4jcf*4$?BfO|f{gLVcFx#ugKbp0DV;`%B_@R;Cw5RbdQ4xVs* zJv{09MmX(yA)a=9D?E#}AGXKy?%5SD*voKW%j|yJ8wc%uaGrfI)^%7lP9-kH+QwQO zcKrk#bzS?g6zgYk1obkkeRw3Ua!)<3vCqbJb~A3kTJ}QRXkUt(?8~s;bFQ9t++tsa zTkV^19Ba-iaR=6%@5WuO_u*dGHRpb;F>j?lfHmh|;iP*W#H03Oc-(#(>sp^$_E|h> zzk;W*=I|<>asOL5#J$DeC!HbNB-;!kYj4IAVWx1Zxgo;8Lvh z&fyC8X#8sTd_%p)J*yqba{$-Zzzz1gxY1q@H`$xuX1fr#*xTV&to3e>+p*@nC+>88 zFWlq0=F^8Y=P31ltnJ+e54&eSJYp}$WA+g^WgmqnvBs&xQ&@928PB-qJe+a;e7xYg z=8zZ8E_(*`e5^S%;3BN~UxXue97nOnZ^xxr>+Qs4Sp7HQ3ap-+akcAOS3Oq$uc$ZJ zci~2?^*(}Iv6dag?O0VFIOyZ$yFa$R#6!5ZgX>ZA4y z9jytgC_89JR zUE7tw8fQ86KGzS!gLV~8VlAuwl>4ixPq^mjeG>P%{wW@C{YyM-{|k@0XWgT?zu^$$Y=oy= z-yBcdn&&Lmw#ym&8^+09qjM+v1KVcj8N>Nl{k!9ky(ccfn)AN6$o=KG*!AUD*Xz`> zKg1>OIT)9_XAD=m=QUjAp4V}${TJNee$Bbr{fAR;bTAu z*1kFwCzte(yZ-4J>_e>ipH9!T-Gpb{(}L&ii*Q~fyHA4rZiX;V^8#z*DAqWa(WC2u z={|5JF2mY~*We1*JFu?%rFti>$3c7xZg9`-xY<2-<5t%n!0lMu^(gMfLHt{+>vG9Y z<6f*eyodX-o-==hM_hlkhWirM9IiT+-$z^fe+uh4^E~~TTpiEjAobwU{9VAB!?rko zyX?BOY@r>Y9$8Y?bu+bWlzOe}%W#9eJJz)_HJ?LqE7tf&;||wrv96D)9<8efYfQP< z-iw|D*0!IG2ki6kuzQ+u(!LOnV2#;|$J~E8o^a0OxBY+TUw}3LYZ*t^&D5N`aIt+8E?LrF?*3b-SGeakT#dD_dU5@d{ucM& zK|OBYkK5e;DDJW!!wIZy`Q~`;Gg$X+z3E+_d(%9J=^4YC=Lnu~|0tev{Y5u(su&Sf8KMvR~ntJ&#M=vnBhp0_(o2`#>$$IJ;7B zaDNQzb9WkNFWh7wh?}vt_aLm#uppnR?ffdcXV6q(0#K3OsB#;Zdyd zuf*e6+jSkDa?ee8#@4##u;w7o+s*VWxF>=0inDXO7w4{nc|R_su4M;s5!QMi#S!;E zfn)A@8kg8fTr^W|8dqttvpqbGv3jbGy!R{wu+sq5e33fEWFKEYac9bD_40^H!9O>vX! zVcd!}{~fSCkEvy2xYOPZ>w1@(Lk;eA{bZcLnom8}H7;}a)gjj}qOQ+$YRotuS<*A^ z`sLJ9?!OXGy55fUIZ%y%9iGM-|5luF{SG|u{sdld&z(4Lr|h!&*%e^T;XdjS`w?7> zHRf+|iTyOrUDxtCT!sZVZ|G!~f*HY`6#yzed z$Im)}HBKGY=T|k)f6y~xe}+fxc|2x+hsW(TST<#^g(tAqyFQ-6TJI)!#`Vo`#{FC1 zIrnUd13UkBzvW}iCqg}hHO@}B$n~9Z*!3umVy*XdT<)H8afN#>#?|h*6xX`mh8x_k z=KzgZ`{a7u?w*yn%RRrq-L5Ba0&BgCzo+iGm->*c`mp^Q>Pf6^c><4NEt|v>?s*35 zv%uQ+Q9R}T6rOSaUvS1ff5mg|c?;_Vqq+IyV~vxh9>V%vo55k6kH5rG_xuaTTwlOt zSmUgE9Q)8cYvM}xgm8`P>tlTmS?emm`Yf`%1+KTZ#QJQq>RaPRtnrI+v+KL#7P|!N zv&-t=7sqivF2fyI%f@k+>zCtR*RR5TSj%3G`|a!S0M_%sZanJ#U*d819Eel)VR*tm z0#Di};3=HXI49y6tofXaGp?_|3$E)v5Zom@pL*(fSU-!?a3R*RKgMCZ7ZpiOf3Eb%ZVV>JGW6j}N+=jKUM(F8q|MR%p{jcC& z*I&c^?tdK*xc&wncK@I8hD1-3HyDV#@Y|{%xA`RZCBv?*|~j0PY`Qc zKE)xd{#EHObbTEhaXo~iSlhKej@et{5_>CLYDciHm#BTR9j?L}e;Ka9TJP?--gV8b z2`}D1sW;nYSf7E{visvW*0SZe!}S6FUiY}al6o)JdTa22>&N0jtYy!^qxQKtg*E;g zcoOUJ>d#o8wby(u#0&PtSf9OD{c;?{TDBeM+y8?Lu-0`g4!f>xEX7*(X6m}8oO*h2 zjeBmxx~80ZZpZcRxdS)3N8_}*=N{_1Mx4fZ5O=sffID4(2=`#k^KCrfp1Tw)moGWoB)|g$m$2~XUUe|w#`?0q1*Lcu9ci|z|@5f2kpTHwnV?K$;-SaY@aD5D? zUDw=Zu(t6T>a#e6pT!IAc>@P`%ho@^1-O`=FR;$jpk=?t34q=54pbtCtWYa zW3KOwQ?BoWr(7?`GgxCT$Fp`N&bYq{FW86Uyk*&K`4bLdZKJlU2y2`g>S5PU#8LNO zfJ+@tNSbkFyw*V>!lI`?mb8|`gz z3(n1_&HX!2Z+FiwxXblrxEmKTpMCLwdk(xOQN6qWw_M70++exI$VLZ&pUCo z>)MAc?w8|BtZUq8Ox1gqSl6=2)sss+w!~BR+vG&8AxXS%~n!kJQ!Hd^(p-1ysDaZeeZ!`j~c@x1GmIJjqa+mFE^y9VnT zD7oLMDAuwkQ7>`5tB%JOtoi?#dX?)JVqM2X^`GE+tYt67I`549bKL0uD{zbZuf{qj zje5GUu5Y3_^x{tU+=aW{a}Vxu&%LmT9ZUfFRnIN$yX7hrAUJl45$xW5;Vx#s{pZdc-zU5$0U1dVwNp0rQF zQ&@9570+PJ?MFD{dNW>dUHd1mG&|0j)bp|S&sn$#YuQV1#J&?p-QSO6u0M)PU4IOh z*}uW%?n&ZG*MEnrTp!0ZSaW_2*SoH{wYY!hliBC??l|uLa@=7bfV;8gd<5=w|FJk> z*Wo_#xfE>qD_Rn$Jz8X(sjeiZ!V2$5{ z7i^8G^Yv?-Uh4T+{deI)`)(Y;TDJKV_CMCo=whsM;%nK5=&5l3!?@c08o$mxPf)LS z&u?*)d!EKEt|xJu>sq!GYy20eciS)H9{0bB`|Q{8p#26;V$Jyg<~i!R#!O+2IYE!k z7q9Jo3#aY3@hsM|>eo5k*u%!9&mk6JczaIp*U$*<1wu9kHIPTABQL0b39JF=VUzN`Wbl6{SA2D^)qpB-|U!| z;}F(-+He?azjfdU)_l5g%>6yM)b-nOh3j|YDqKkagSf#xkK$&mF^6!A`=7^g_q>cd z-192#bp7|Z$Nk!eeeU@q^#S|Oc+mat;H3QzJm#K{@wn@s;YqCh`4vvPX8}*!-{Bee ztZ^#$KiAj7bFPQ*g6kV%og7MIZie%)ws#Ah?|K9mxV{4}bp87{?D}pv;(95LV*On9 z$2#|!#;nBU?l}xsx?YQ`uzp@A;9B>bgX>*C7dN@C{n?5&=Bd=*I07dYkmFY%Q7H?3!%yB@|FduzPlp3`vf2iZBCjzd`c zxe*s)&G|fBj0^C^xXe92!4+6@*a7RDTyhNS+*=xFcU(cJ{1A7$=Xl&}pNRY1zd4U-{qElz594B%-5;mj^K16i4Ay)e#5ymP z{1^`Gm-XW~A8T8_zy+?);jru9;9{(~eTQ{!DebGgdiH~R*1BOyWNGe1r$=wt5~f>??5+YuOGw zg0g?najmFpj2ox@1uYYq)q%l5iI3e7NHHYLS5$r(i{r$lzVo>(^zB1aK`n$@w{Dz z1LfIq4#7dJ{zGvHYkN<`g|453Bd%)>F|0XMQ!l}q!%?^bYuVFrmFsP|4i{6u8n=X`jR#zR8Ygjt`tvxA)$=l*!CLn3cpj_gW2|#9s^>Et!Rq-Q zzq2|ojCwZ0IxnMomg9Q&oPnF&a}Mry&yTRqrJ`}J#{=$JiBs;;{z=9Jv9F2c+@>x<8k-wkEh(T9P50NLEehSl>7?!xN%9Uj8!nK*>G*;9DTp2p+$Mh*PlVr_2`PTSjJox4)w z6ysT}`*sPQ$9gQ?1Ls#{m;C@2;UM+TaTu%r3#{`gEbh-USsrUy{d}u%5dWuv-+?9d zMy&1Hg8o(<#QQY_0&Q619Em$|5k3z0WA&echq2as7S_25R6ie2xPA%NIS4d|EAX7_ zSK`3(?7FVUL9B6B;*i~qi?HUP`0ZxY-`XEm-5ch}*E{pk+JV^9uDY_q>67UH>Ca*l*%K_e9R*eqwKjM{sV;aU5j) z9jT|V*86=tW$%h-aISw2tA9`G3$E{ngFnpf|NU_RR?oq>5NpgMus$;{ABkf)H>N)K zuKr`Gmt#H0uEn*kpN8wOmOULe;@q+=?m3Hkt9#DFIyb7uY{4D&MOf!bRXvWo+Bh(kL&dI9v-hzwlyKoq5dk1hS z4&x_qE!Orvi5qZkZY@~jJV(71YYyYM%k@9vZXBk*3jb9&tDJ4lc4xP<*EvY8#eZqv zo^u8nOyd>sf4VQi#dWWKRyH-ib+NWZ^9y19&dNnNOlo_!z)>={J*8MZTT?G1)w2_> zB-OJUt|ry94A+qA*&WxD>Z!!db~SFr>Ny^_lUlY8ci4O3F05tu!#(zCIDz$eaV{Pr zHO>k=LaP4(JVt6e2XUIz_!r=5Qp?8iJQ?D@Yj7U>OkRl#vHEYtMXnQz=h#(h?#ec& z=B(SAqcY)~b>>r4y@dbM&n@BGI)AL{I$x}E%9(L4ICYL!eLv)^ayB`2{#AXy%{lCx zaLzdct7ZFwq~=kFjk5IFrtC=ah5Sx!}y_PNH#&oKa_~v%*>9)Or21zXpAK z(ixLoa0WNqfXzSaTc!a@tivMoW37(mO9IvI!7FfE}qLR z_xm2^wyb2DfhW((K1Y?G!!eQ{Yv2W3Lh5&C9G8=-{|#4=>i-5;k@~&(4%dBjp!M*n0xX(RhxZmC%54fiS=YIDO!6WWD z0*~59;xVkbRpSX#bAAg?k($rDI8Caa#xwSZID>O@)(=8Hj=CNz)PE8VVU1sh^;n_0 zwlV7ddg?LvoQ=z{_Gcrma{ooR*8M-jb?&(aH`yIH?*5;i!@k8ujMI)2SaZ99o<6Mk z+=2()--Cx;zZH+Veg_`66LyP5J{RE!D8vhwQhqW!ESdUR!_BE{YP|L65 ze5{^NaS_(C^H}GhR?ok26l=e&*~op;Zo*~m(f%xVeKYEnu5XU@Sg3Kf!PQvftG~|m zZK>DeJnB2*M%Q=3di+#)bxaIoALVXpgj_d7%af5v*Zp2!z=GNl69LKqzSJ#qy!u6wBcE~;+ zk6?{+A|7-9$#~p7r{GEVX#83CG*HiA?T2%4fWPhB44jLDSaVo`Ls;YAg$rH32S?oh z5H5DllQ`y{VO-{V5?9#I<0|_lT!Zzz?seSc`k!zM)_negTe0RjjXUhW;~w{aj1%tv z0{3Cf|EY8N{dG?OkGQ@H9(R3ptaD^*8}qTA^Ju*r;?gcn)h_JK(?? z|NWWfV~w*5^$^zl_rPKI9Ds}6b0ChoelRYvt8kfnj>6@x*WyaoPr_BMpM`5&KO5`$ zm*#LjuEUz=k8q>=AHdD7KZxV5KaSh6mL0-+{w8aGc4GaGyny@N{~{iA&qY|z@6;d1 z!}c{ei8Y4~JchN;dvMD2Tk(|Zi}zKmac-cV!PqXRumefaF-=6yDl6uPZ z81;!I^|b5zP@i5>&$wPeeQrrzJ5bwu1oa@+_G+FX*K4U4EUAZGKb?AHNj>Iz6ZI0z zSKvZiwxp-hJ(p9ja{WeJ>-sNno&9TEkNFDRg&Tq9b~kQuUGr?in*aUO+g*Pcce?)( z+~fMiP5h2y-3Q`$5Np||=oxnZZ}F)6U%)BXU&K@He+j2ue;LoZ|1~^k{}C^^|Ib)Y z%DEYs#CcfT@>g8o`ti)C$kuj6u;w;RPqFJC;h4REOYI=bmfLILN~~qq#`^b$ydkc( z3$XtEq54+1)(&I+dqnl^a6Qh)+v6sz`NwdJ>$~AL*Z0Dmu9xB-*R?GPtbKkp^+Bxh z%khxwRe03(!|@o_y3W8U_neE<_IWttevQB2{@+j!t(~275*J~O^E(`|U&T@T54gmh z#QHas`qQ|=eh*h+&G|!Ijl=kQ+=}<QU8>=YHIUBh(+kL$33*c=6bXvYP*t3Fm}U z|87t{?5uRwIJ=xZ&XjY?IqjTvW}NfR0M8BK|6S)f=G*1YdZ(TbtFPJF=G1dt)hC>@ z&JfR+_!0cyb)nn1tv)?hR1P}z98S0OoK30cYf3#oQ-;~e%1USM*n^%6sow1zbf%nB zq}H$J7V0ZqJX~#i|ci^IrX#j8=Og}9-|kxgFB&?D|I$F+njoA)AxIw1I{65(y7M{^_4iwoq9}AUBAc5 zxU=1<-(%Igo%&tY?MafaK#=>ie(zu)%zv_yA4A|1?(-3nDFnX6QP<~j4CnJ-;5>fU z2t6j`<0>WpZHjAcjoE-T=4R9zNsSrC&7}I(6DRdtVteX3)~5a#?j_Z~2kx^=@c>rO zzIc$-IAu6Vs$XM{lj^CUo^t&VJn8zOcnWLT!|;rIwCtRFj;213wT;JO9Ust`C*ypq zbv5Dwy9pQB7vP9}F^=Lw`hSWmT)z@mVU2k;uEv_rjabJDH2y8P!S2OP?(f6R_CvVE z9>lF!<2;JnvBvog?zBg6xBVjS#hSwyPGBwj3LbEe_Q|k&-k_eu+9z+~argWUPq=3q zPrCjQPTT*)I?kYVeSv4~e_=h&ss0_FvjgX||LxWA0@k*yjdRB(zK8R84AY!LxB#nX zV_f9=7PuH|{B3aVxWvA=#QjI(GW&R3;bm)awd?2OTGuba4X$5`bH^OCuUe=tZVPU; z>*$HQzZ2{DgXVb??sQK#?y`T0yWP`^d$G3hPTcRFd+~sMA0Bj1KTcwezwAf+U3Sl2 zc+B-uoU-@FxnmTXf7<;IGtP{A9>*E1ISko|tyycQm^*TYGyaW=wZSld#BbH^yQ!&B5XpY3tl{RiV&*Q;^H^<(gYeJajl zL5=@BF2EW``?C;eKF!p_u3v&9SpDjWx!y{>#Qmz5yZ%$^xnmbU!}@!yF|Wqe_DZbd z6{`2(dM|q`)-ejL>sPqhJsMxfCHM*?sCU}^xXV3{;U27IAIE*JKZytIBp$+iEpGcT z&~va?sq1)!=JN)ga8C+PVvRY8r?Gw(f5mg|KZN_n0@nTHNUY}(+zh-+kDg1&AKk1s=Ig+;J8eE7qpKEau)|frG7>Dq!xYYf3;M}o``*5ZE zuespA$1Ak$wbV7{6ZF)3oF{R!$9V?F-SaHgb3XOIh;_U|b4y_zqmciMyWKO1d$8vD zSKQ|wt#{Bp?@}MaA$mTOaAyuKygD zV=a3H)^l80KbJ}z!d*#jP>sm)wjkv-Xd><_3ssV2RwqcPm1w4<}0uaPq@B2PP@K0o^^d6Jny=;MgLII zI5$$y#~S}Y9K!lp9D&2GABlCmg~bD>;V9O!jkwgl5LaL=doixT8dK}4$6EGT>dp3x zxYZuVZT6pVhy51rvfsn{cb3Na2q)}+;C`%iW$*wF<6qzu);#aQQ|@^Tr*VY(FxJ1- zv@B157yrH~%YD1n8F%(LhnzFy;=Uxc-QO^tQh#s1!&-;dAGk34Z#&IBh)Z2x2Upky zxY{nlby#Cy8~_^HQ(KEtLuB>Hmr5+g*#o}7kAqS;$C|>?!)S@#)GaOi-%o5 z4v)Hi8Xm`5Zv#%*XX6R1aT;-&)I6K8_Ko^4z_WG>&e%V}b6Cr^Vf_HKy}A8aU@JA| zRrKijhx)I_#iYjX!cqHIIEK}88!jWY`~$d}RR5E>#(oahV)f|fu5pz5`6%^0Ws6h$ zPq)XM(@qstFL1`3RnA&xi?ho)FWBFgWl~n&K6x&_T!yWcIxD#uf4RJTA{z9CvH^l>3 zJzL`;QsYPPFsb|cu6WG#5RFY zaZbdAuAhV>uAhpd_F1^ZJ_nb%|HoLzS~ccnxW+wgxX$&T<3`u7$GWd;dvC_A?pcX* z$4qX;o$mP+*6)P+@5J5iAHWIMAIE+66SyC1yPm~^_V4g8);ve?sO#f++iP;iZvPlh*cag`_x}{n*w^4W_jKX~*RRJq z)}eLXiuKr~Ip2;8vG(m9ICre$9vpSgy*PK=;~`w){$X71p69TRfoRMZa3$8dUd7e+ z8@Lv0T`An)`Xp|$-^MLi`{x6kJ2vte?sWZg-0S{%+=n&h*LcwN|KMRecrnlG>@~5D zhp0b{D?C*0S}u+Vw_UYp=ldSo`f_+>H4OT!veKmW|^!tnu}`mOBR0 zPQAA8Y*AaiQy)e;8|=cc|-lhg$}7|5Df$3WDRhxK<>{vM9Ie>2?S`qo&-L(~(&U0CaiV*PDaeK*{T zHP2ZBo_0?i&bX%m&)a9?0M7+9 z{*Q48Yo3?jLagyyam4jFj@nn^68GGI%dzIR5?8q1jjP??i)-yWalL!)!cDF}fLrW` zu#S^xZbMkdL&Eqetp91A{0aHL_oeKO6Wyq<= z6x|Lx`<>HH{qE@d0e-eh-CvcuPbzgERHmG|59qe`y|TxdaQ2bfULEVv_X8YfQ06-e zol#PKoxZJO6Y2}{15$>Z1x_7*P`$_*c1E00XNj}YS>>#D);jB*I=-NBo1GbF?ls6V zCaLdNI+ITQ8&-9_wx|sA@72XVXWFUjLaQEf7C6hCmCkySp%$-=to~wtiIgSIa%Y{h z!P(>Nb@n?4oWsr$=a@6)oODh*b**BpH?nRvqs}U)t~IRh*E^e>tbJ98GoOaGS=bQ`9$oD*dXRWi&sq4yWJDQxW&bYI~+3D`NvRy%8)4bDbqvor2&cXm2^ zoC#;YbI_S|jyT7iDd(hf+Bxggbz8MP#p`D?=B#$sIUAiVPF;6Z%XK)rox0Yl>I2Rp zXVN+9)OA(WH|d;qW}FMo;0D>gkh91caYmgbPF{$jk5iD&X6-q>hVL@Q`Gu&{X}Kn#@Q?&_5CK_Zt?AL-|pKa z+c)Uc_4c&P;k zMx46doBB$f6;55_P4!w*Kc6|@9@#uwA9GGQGtPNuQBk%p;!HUwooVNcbDq?Cbj>HN zchouVOgrbCx-OIYbX_H7u~XL<(rsN&NIC7Cb?O>ITF>xS+3)K*IqI8mrk!)nKsfvT zLTA|7>+Eyt`YIYn*HclpIeVPCK8n^`zD@S~9nMatt_h;$2AxS#{WaTW>$=8;zOU1>0pa>@0IuI%}LQ&NgSlscR)@{84AhscRpouInBsb=3JdXY2Yj5$l4<<3fHjdR#J;?y+v4`bQ_e|e+BrvR|0asF z%jrDx8aL@2b51yQ{&;;quwyp!oW;(VQ|C@sUz%Kt)H%m>yWctJ9Cqp)
yd1qi} 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 z≫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⁢j5FrXa4F7ye~l}w@8T+) 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 z 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

@Q5vM8na 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 KMNUMnLSTYljYp>d literal 0 HcmV?d00001 diff --git a/src/assets/tabbar/order-active.png b/src/assets/tabbar/order-active.png new file mode 100644 index 0000000000000000000000000000000000000000..96f42774c4be0262a67a5f2181d326cef0871fec GIT binary patch literal 2272 zcma*pc{mjM8VB&-7&C_KYsoSlBD*js3}Gx;W(e6L>#=5+vdoYz#}=|gj4jE&lWoRw zL2(tMyDXUPPxt9#HHtxU5>)1prv&)Z`=*wnIF-a)`ep@~%s?#(osh zvsg>%*s;OvJZX7+i0fvR8;qXtW@1qePJrNAsGi4o1p_G27beQIxCh{Bt8^yZ9ZX7d zDx|8d&d%eV)487mM-;Mw5`Ws>?qEl;!vHG~Y;Q$1eHo>fV(&3nY|g1di5)4Hc_lR0 zQUmq2{Nd-ttA3vQl2#il3Bl3rS|jfzm4G4@rRSzB?Tl=Ea1rV(*K=VVNZXYgcS+OM zml$bmdp;!}H91{QXpEs+dJ;(E38m&ut`-wpGg1miF1la~yPAp@RLy!h+z5*ND;@lO zzM(l+v&>=uiJ0l1mqzAo8;bPq3!m5Tj1gB~e)ojZGMpnM(B|@vJT}yjYV(SYB=^1B zcbwnhHlI@xJa08%t{(5P?ZiV*$e*h=s9tw~qQGZG?PKP=gH|u~<*%<)x*r<*ej-;3RusJ0t-8J(>Q~bgv`_%C>lL()cAill zO)rmw5Evs28w`#hEVeA$-y$7?p9#ug_p}XgR?QsL5YVO*YRn2j`tI%v+PD>Iyq+y^ zwVh~Wf;0PPCWRvvm+r6Gq&sT@!gtf(E#pJDF1~ohAr!vHSxy~gHS=I#c^3US)g-=N zBiP-L;UElSFO^KMHuzavx~`xC*4&sF%vz4GztOSp(Bfw2J4!C;U|FQuC~zVshX#cKFNWOPbc8FXn}a*B4fa2_6eKL`o)*+rmx}QPsoly zZ6kfFN#NtcbPsKVr$GMnX0~bHJk}Xx974Qgfa;@@Y9LS?Z0;x}z=0s6mK2fWllFCv zKrqLAci2pBru)q|SPH~^;927j_fSf$fuJRWYV2tMHyJ|55kOcf;JAD}9_G5iNMX5kyX1FmYC(6IXuQ zNl>yctAl~HOPp8@C`g#A@6Bf&u#d?1fat_pgxtBh)N_&}>jDN#jmKo5!~(~WD7XKj z_BRL#QgC1@=Ppl~<{cWJKCOj;f_**mGEsb0a^9j&dtc#8WLK95#G6Zh_!iL@PZ~QB z`S^I+u@Ojf+xW!4w-0NZ-5s|MN>YoVh{8e>_MxPMD<}Ex#vD4qCv5 z2w#jIQNU`c*oiq=?PlE*VFiwM>+>g~)aYL`VU@4%xyn&yjRxYN$mN}KmIzm+VZRKf zu?!OVjf|cT(0t|Emd+#))|R=u=k56+g`s|;dEBM6RU@5?26QrbWSbp(AnV9p;D$sg zCk;rQkoO!Z^`5F0*<23v!%&ghK~b`P=AW0e4l=Ec8Q5t7#;4Vt77=HF4iM!8@C>@} zy>+Lipo|pPWlIfC0SGM;G!_6f91Wrd| z3=0-2d3jKjHaMAh zj^(0%1B>ON1r#Xa7#hrlBwKX-E9iFB&&z@Ow4t6#NV0Ch|HrpGU@32`du?|T*V%^u zYVL4x?1A4+z`pz`cdYx}+bP^L6Lh>=h&jh6tV9Wv@L2>dWSTy~ukuh7@SK>w3T2hs z3oAiC+B5-@Lzq=p8@5nSc_Qg*^LzNOe!mw_?B%xbPGz zH;XM>pc@;w&5*`rXb+Kjb!x&zR!IMaK=F2Et6!a&Uye*3J}-)-JP~k(-k*sRL}wKzM`fW$dWLXD@`$#M2{gh;i>}*jF32X z>j~j@?A_-6MgTU+Qrhj8xCuH(uTDv#fbT@^P> z@o%*_fOGQ4g2qe*W~92lYxbUo-=spSY5)kaB@k36#$}|%ThDBmK9x!8%ZrIMgd0li z=Y(8VQP1oK+hl2J>PKhoe1ms=So(}}^c$-t|MSIva@QLq(hVLyy+Z=A6Qwg|aJ8D! zgbRcJ3#9&1mDZ!J^LTQ0wi~&IKVRVg1QaNEEb3uZJD~aS`~q|_hMJY?_apuWg0LnA literal 0 HcmV?d00001 diff --git a/src/assets/tabbar/order.png b/src/assets/tabbar/order.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7a06798a6d770e8bebcf357f93ecea942d1a89 GIT binary patch literal 2205 zcmV;O2x9k%P)6<-wqR6wZ3`69nxUtiyfI$pn1Xzf$2;k8#eBG-L2=-n}tlBUGAdLQ1Lw7q!00sZ1gwXy{Tat`BwYQJI zr3-!LBJCzVF8m{Qa_~*M$%&e*rDUKzRcr=;wC6ZQ0tuSpu&!>qm(qT_4V~E`K#>aq ze_or+0ww@tj($ca#jjdGC9<0Snz|!wvJp=aano9xGvGe^uC15=Amu4%%r5SfAPS7g z?8CBW8hz-Txna$QWsE?u7GreNWEMCKKc>im}BS@!87{Llcb4ZtjQxNMv$#~grE zh6dm701RH>RCo?RDnonfw_ve>E#&lH^5pWEdtBE5D9HQY9q_G~=`(Y(v0U!$aW@Viu)932oAqu1 z&}iHm=@iDa2xr?fb$&xxw*V-nt=rHwMx;4ZilO<^GXTw#w{V~aa0~VIRvmzPx$Q!; z1JFg8>N)8E)XQxbnnwko#)BwZI=A+n3c_AvJp-`y#O#q@;jZQIYHk{9^62(|2j}V z9`q>cTUv-#{e}d90xF^0zFpp><3W)m1V{SHW_Qbw0H_KSU(Lg^3BjWH4;{6EzDuCA zssCj-093?Oktifn{O57>k?^?J8aVw|dL@G409c9helvysJjZJ%#s36CpVyY0W7hg! za{F)q=vz9z4MfZnF5Ss%2y>&A6%GeL$QSnp!m3$QL#LT@rHY0GKqHkIz_MUf?l6`X zZQ1YW`j7yS6hXjrZ2`fs#V1e00zhyE5LCUrjE}8lXaGnq5J-5Z-=5ikQO~;vIhCMh zSQ#FGSUEwke0T&H5DFZH&y08q&*>v}9lD(cfLO%<0x%#HJPMzIAs#wKI~@R1RCPy? z4#19Njd-X7&}mhz+;#x0GTEsf2cXl!S-I^1SY@(PJq|#pg|l+o0kFzsr+OTKP77z{ zwgX_5$xih+0G$=i+Fb|0I-{NGa{xLkn62cVNe z)pFATsFm4H^j-ph_xJbs@A2{4mKlV16lMMXur^1{0Z{QtM0`gN@8Fq1ct_FgWmUBc zoYLPM069o9)J(Ym0l+s4z9|4<^fwFsB8KM$Kn0lY=h%w*QcKer;8K~G)S0FLyuQ9N z1Mp^!Nz?zrt7y0gZWe!20Ek);kbv1BxPc#HCk@3S9q20VUmJj|3mgT(>sfd=&n&`g zX#jt7*&KX1URVH-`d2z< z{-P(R23yCZX3tdaw{+k3Spbltknj0Zf!v(&|9xdZqn~Sp>VxMn0J?w!0OZU2$2Gp| zf86R@wla_`zH$#FTRM{a4g(M@B&Q+~?GS`yrJBrKnf&Q&0zf8-oCs_ftjkaHf zCr1pFV=gAbA01&L?63HE~+x>6?4t=L>$UzVa|3`^P7GKBY=30ktFJ=G)B2(7_ z(HqWh2oHZSE6~m;A4TA#x f00v1!K~w_(PZY*ItMU|Z00000NkvXXu0mjfXx|Af literal 0 HcmV?d00001 diff --git a/src/assets/tabbar/points-active.png b/src/assets/tabbar/points-active.png new file mode 100644 index 0000000000000000000000000000000000000000..bccaf3ebdee97bf26c6f221ef83e793f6373fb53 GIT binary patch literal 4794 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 Uh|O7~RR91007*qoM6N<$g7c~4$^ZZW literal 0 HcmV?d00001 diff --git a/src/assets/tabbar/points.png b/src/assets/tabbar/points.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0e6e3c0c3843d0704b51532f9f3f710b02149a GIT binary patch literal 4650 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 literal 0 HcmV?d00001 diff --git a/src/assets/tabbar/shop-active.png b/src/assets/tabbar/shop-active.png new file mode 100644 index 0000000000000000000000000000000000000000..6f76ad21729f6ed0a6ef20600bf1dc40aabec4a9 GIT binary patch literal 4262 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 IM6N<$f=gKQnE(I) literal 0 HcmV?d00001 diff --git a/src/assets/tabbar/shop.png b/src/assets/tabbar/shop.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8bb343784350b96c3fc4d80177fbc8f7968924 GIT binary patch literal 4139 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 void +} + +class ErrorBoundary extends Component { + constructor(props: ErrorBoundaryProps) { + super(props) + this.state = { hasError: false } + } + + static getDerivedStateFromError(error: Error): ErrorBoundaryState { + return { hasError: true, error } + } + + componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { + this.setState({ error, errorInfo }) + this.props.onError?.(error, errorInfo) + console.error('ErrorBoundary caught an error:', error, errorInfo) + } + + private handleReset = () => { + this.setState({ hasError: false, error: undefined, errorInfo: undefined }) + } + + private handleReload = () => { + Taro.reLaunch({ url: '/pages/index/index' }) + } + + render() { + if (this.state.hasError) { + if (this.props.fallback) return this.props.fallback + + return ( + + + ! + 页面出现了问题 + 请稍后重试,或返回首页继续使用。 + {process.env.NODE_ENV === 'development' && ( + + 错误详情 + {this.state.error?.message} + + )} + + + + + + + ) + } + + return this.props.children + } +} + +export default ErrorBoundary diff --git a/src/components/NavBar/index.tsx b/src/components/NavBar/index.tsx new file mode 100644 index 0000000..2ba723f --- /dev/null +++ b/src/components/NavBar/index.tsx @@ -0,0 +1,35 @@ +import { View, Text } from '@tarojs/components'; +import { useNavigate } from '@tarojs/taro'; + +interface NavBarProps { + title: string; + onBack?: () => void; + rightText?: string; + onRightClick?: () => void; +} + +export default function NavBar({ title, onBack, rightText, onRightClick }: NavBarProps) { + const navigate = useNavigate(); + + const handleBack = () => { + if (onBack) { + onBack(); + } else { + navigate(-1); + } + }; + + return ( + + + + {title} + + {rightText && ( + + {rightText} + + )} + + ); +} diff --git a/src/components/QRLoginScanner.tsx b/src/components/QRLoginScanner.tsx new file mode 100644 index 0000000..aad6bd7 --- /dev/null +++ b/src/components/QRLoginScanner.tsx @@ -0,0 +1,135 @@ +import React, { useState } from 'react' +import { View, Text } from '@tarojs/components' +import { Button, Loading } from '@nutui/nutui-react-taro' +import { Failure, Scan, Success } from '@nutui/icons-react-taro' +import Taro from '@tarojs/taro' +import { confirmWechatQRLogin, parseQRContent } from '@/api/passport/qr-login' + +export interface QRLoginScannerProps { + onSuccess?: (result: any) => void + onError?: (error: string) => void + className?: string + buttonText?: string + showStatus?: boolean +} + +type ScanState = 'idle' | 'scanning' | 'confirming' | 'success' | 'error' + +const QRLoginScanner: React.FC = ({ + onSuccess, + onError, + className = '', + buttonText = '开始扫码登录', + showStatus = true, +}) => { + const [state, setState] = useState('idle') + const [error, setError] = useState('') + const [result, setResult] = useState(null) + + const reset = () => { + setState('idle') + setError('') + setResult(null) + } + + const startScan = async () => { + try { + setState('scanning') + setError('') + + const scanRes = await Taro.scanCode({ onlyFromCamera: false, scanType: ['qrCode'] }) + const rawContent = scanRes.result || '' + const token = parseQRContent(rawContent) + const userId = Number(Taro.getStorageSync('UserId')) + + if (!token) { + throw new Error('未识别到有效的登录二维码') + } + + if (!userId) { + throw new Error('当前用户未登录') + } + + setState('confirming') + const confirmRes = await confirmWechatQRLogin(token, userId) + setResult(confirmRes) + setState('success') + onSuccess?.(confirmRes) + } catch (err: any) { + const message = err?.errMsg?.includes('cancel') + ? '已取消扫码' + : err?.message || '扫码登录失败' + setError(message) + setState('error') + onError?.(message) + } + } + + const renderStatus = () => { + switch (state) { + case 'scanning': + return ( + + + 请扫描登录二维码... + + ) + case 'confirming': + return ( + + + 正在确认登录... + + ) + case 'success': + return ( + + + 登录确认成功 + + ) + case 'error': + return ( + + + {error || '扫码登录失败'} + + ) + default: + return null + } + } + + const loading = state === 'scanning' || state === 'confirming' + + return ( + + + + {showStatus && {renderStatus()}} + + {state === 'success' && result && ( + + 扫码登录已确认,请返回网页端查看登录结果。 + + )} + + {state === 'idle' && ( + + 扫描网页端展示的登录二维码,即可完成登录确认。 + + )} + + ) +} + +export default QRLoginScanner diff --git a/src/components/business/AddressCard/index.tsx b/src/components/business/AddressCard/index.tsx new file mode 100644 index 0000000..9eea2a2 --- /dev/null +++ b/src/components/business/AddressCard/index.tsx @@ -0,0 +1,121 @@ +import React from 'react' +import { View, Text } from '@tarojs/components' +import type { ShopUserAddress } from '@/api/shop/shopUserAddress/model' + +interface AddressCardProps { + address: ShopUserAddress + /** 是否选中状态(用于选择地址场景,如结算页) */ + selected?: boolean + /** 是否为选择模式(显示radio圆圈) */ + selectMode?: boolean + onClick?: () => void + showActions?: boolean + onEdit?: () => void + onDelete?: () => void + onDefault?: () => void +} + +const AddressCard: React.FC = ({ + address, + selected = false, + selectMode = false, + onClick, + showActions = false, + onEdit, + onDelete, + onDefault, +}) => { + const fullAddress = [address.province, address.city, address.region, address.address].filter(Boolean).join(' ') + + return ( + + + {/* 选择模式下的radio圈 */} + {selectMode && ( + + + {selected && ( + + + + )} + + + )} + + + {/* 姓名 + 手机号 + 默认标签 */} + + {address.name} + {address.phone} + {address.isDefault && ( + + 默认 + + )} + + + {/* 完整地址 */} + + {fullAddress || address.fullAddress || address.address || '暂无地址'} + + + + + {/* 操作栏 */} + {showActions && ( + + {/* 默认地址切换 */} + { e.stopPropagation(); onDefault?.() }} + > + + {address.isDefault && ( + + + + )} + + 默认地址 + + + {/* 编辑/删除 */} + + {onEdit && ( + { e.stopPropagation(); onEdit?.() }} + > + 编辑 + + )} + | + {onDelete && ( + { e.stopPropagation(); onDelete?.() }} + > + 删除 + + )} + + + )} + + ) +} + +export default AddressCard diff --git a/src/components/business/CouponCard/index.tsx b/src/components/business/CouponCard/index.tsx new file mode 100644 index 0000000..fcc37f7 --- /dev/null +++ b/src/components/business/CouponCard/index.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import { View, Text } from '@tarojs/components' +import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model' +import { getCouponTypeText, formatCouponValue, isExpiringSoon } from '@/hooks/useCoupon' + +interface CouponCardProps { + coupon: ShopUserCoupon + disabled?: boolean + onClick?: () => void + showDelete?: boolean + onDelete?: () => void +} + +const CouponCard: React.FC = ({ + coupon, + disabled = false, + onClick, + showDelete = false, + onDelete, +}) => { + const isUsed = coupon.status === 1 + const isExpired = coupon.status === 2 || coupon.isExpire === 1 + const expiringSoon = isExpiringSoon(coupon) + + const getValidTime = () => { + if (coupon.startTime && coupon.endTime) { + return `${coupon.startTime.slice(0, 10)} - ${coupon.endTime.slice(0, 10)}` + } + return '永久有效' + } + + const getRangeText = () => { + switch (coupon.applyRange) { + case 10: return '全场通用' + case 20: return '指定商品' + case 30: return '指定分类' + default: return '全场通用' + } + } + + return ( + + + {/* 左侧金额区域 */} + + {formatCouponValue(coupon)} + {(() => { + if (coupon.type === 50) { + // 场地使用券 + const parts: string[] = [] + if (coupon.useDuration && coupon.useDuration > 0) parts.push(`${coupon.useDuration}分钟`) + return parts.length > 0 ? ( + {parts.join(' | ')} + ) : null + } + if (coupon.type === 40 || !coupon.minPrice || Number(coupon.minPrice) <= 0) return null + return 满{coupon.minPrice}可用 + })()} + + + {/* 右侧信息区域 */} + + + + + {coupon.name || getCouponTypeText(coupon.type)} + {expiringSoon && !isUsed && !isExpired && ( + 即将过期 + )} + + {getRangeText()} + {getValidTime()} + {coupon.description && ( + {coupon.description} + )} + + + {/* 状态标签 */} + + {isUsed && ( + 已使用 + )} + {isExpired && ( + 已过期 + )} + {!isUsed && !isExpired && ( + + )} + + + + {/* 删除按钮 */} + {showDelete && (isUsed || isExpired) && ( + + { e.stopPropagation(); onDelete?.() }}> + 删除 + + + )} + + + + ) +} + +export default CouponCard diff --git a/src/components/business/CouponSelect/index.tsx b/src/components/business/CouponSelect/index.tsx new file mode 100644 index 0000000..b63db2b --- /dev/null +++ b/src/components/business/CouponSelect/index.tsx @@ -0,0 +1,185 @@ +import React, { useEffect, useMemo } from 'react' +import { View, Text, ScrollView } from '@tarojs/components' +import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model' + +interface CouponSelectProps { + visible: boolean + coupons: ShopUserCoupon[] + minAmount?: number + selectedCouponId?: string + onClose: () => void + onSelect: (coupon: ShopUserCoupon | null) => void +} + +const CouponSelect: React.FC = ({ + visible, + coupons, + minAmount = 0, + selectedCouponId, + onClose, + onSelect, +}) => { + const [showOverlay, setShowOverlay] = React.useState(false) + const [slideUp, setSlideUp] = React.useState(false) + + // 控制动画 + React.useEffect(() => { + if (visible) { + setShowOverlay(true) + setTimeout(() => setSlideUp(true), 10) + } else { + setSlideUp(false) + setTimeout(() => setShowOverlay(false), 300) + } + }, [visible]) + + const handleClose = () => { + setSlideUp(false) + setTimeout(() => { + setShowOverlay(false) + onClose() + }, 300) + } + + const handleSelect = (coupon: ShopUserCoupon | null) => { + handleClose() + onSelect(coupon) + } + + const availableCoupons = useMemo(() => { + return coupons.filter(c => { + if (c.status !== 0 && c.status !== undefined) return false + if (c.endTime && new Date(c.endTime) < new Date()) return false + return (Number(c.minPrice) || 0) <= minAmount + }) + }, [coupons, minAmount]) + + if (!showOverlay) return null + + return ( + + {/* 遮罩层 */} + + + {/* 弹窗内容 */} + + + {/* 关闭按钮 */} + + + × + + + + + 选择优惠券 + handleSelect(null)} + > + 不使用优惠券 + + + + {availableCoupons.length === 0 ? ( + + 暂无可用优惠券 + + ) : ( + + {availableCoupons.map((coupon) => { + const isSelected = selectedCouponId === coupon.id + return ( + handleSelect(coupon)} + > + + {coupon.type === 20 ? ( + + + {coupon.discount || 0}折 + + + {coupon.minPrice && Number(coupon.minPrice) > 0 ? `满${coupon.minPrice}可用` : '无门槛'} + + + ) : coupon.type === 50 ? ( + + + {coupon.useCount && coupon.useCount > 0 ? `${coupon.useCount}次` : '不限次'} + + + {coupon.useDuration && coupon.useDuration > 0 ? `${coupon.useDuration}分钟` : '场地使用'} + + + ) : ( + + ¥ + + {coupon.reducePrice || 0} + + + {coupon.type === 40 ? '无门槛' : + (coupon.minPrice && Number(coupon.minPrice) > 0 ? `满${coupon.minPrice}可用` : '无门槛')} + + + )} + + + + + {coupon.name || coupon.description || '优惠券'} + + + {coupon.startTime?.slice(0, 10)} ~ {coupon.endTime?.slice(0, 10)} + + + + {isSelected && ( + + {'✓'} + + )} + + ) + })} + + )} + + + + ) +} + +export default CouponSelect diff --git a/src/components/business/MemberBadge/index.tsx b/src/components/business/MemberBadge/index.tsx new file mode 100644 index 0000000..a0e67a3 --- /dev/null +++ b/src/components/business/MemberBadge/index.tsx @@ -0,0 +1,27 @@ +import React from 'react' +import { View, Text } from '@tarojs/components' + +interface MemberBadgeProps { + levelName?: string + size?: 'small' | 'normal' +} + +const MemberBadge: React.FC = ({ levelName, size = 'normal' }) => { + if (!levelName) return null + + const sizeClass = size === 'small' ? 'text-xs px-1 py-0' : 'text-sm px-2 py-1' + + return ( + + {levelName} + + ) +} + +export default MemberBadge diff --git a/src/components/business/PayModal/index.tsx b/src/components/business/PayModal/index.tsx new file mode 100644 index 0000000..bfcc629 --- /dev/null +++ b/src/components/business/PayModal/index.tsx @@ -0,0 +1,123 @@ +import React, { useState, useEffect } from 'react' +import { View, Text } from '@tarojs/components' +import Price from '@/components/common/Price' + +interface PayModalProps { + visible: boolean + amount: string + onClose: () => void + onConfirm: (payType: number) => void +} + +const PAY_TYPES = [ + { id: 1, name: '微信支付', desc: '推荐使用', icon: 'pay-wechat' }, + { id: 0, name: '余额支付', desc: '使用账户余额', icon: 'pay-balance' }, +] + +const PayModal: React.FC = ({ visible, amount, onClose, onConfirm }) => { + const [selected, setSelected] = useState(1) + const [showOverlay, setShowOverlay] = useState(false) + const [slideUp, setSlideUp] = useState(false) + + // 控制动画 + useEffect(() => { + if (visible) { + setShowOverlay(true) + setTimeout(() => setSlideUp(true), 10) + } else { + setSlideUp(false) + setTimeout(() => setShowOverlay(false), 300) + } + }, [visible]) + + const handleClose = () => { + setSlideUp(false) + setTimeout(() => { + setShowOverlay(false) + onClose() + }, 300) + } + + const handleConfirm = () => { + handleClose() + onConfirm(selected) + } + + if (!showOverlay) return null + + return ( + + {/* 遮罩层 */} + + + {/* 弹窗内容 */} + + + {/* 关闭按钮 */} + + + × + + + + + 选择支付方式 + + + + + + + {PAY_TYPES.map((item) => ( + setSelected(item.id)} + > + + + + {item.id === 1 ? '微' : '余'} + + + + {item.name} + {item.desc} + + + + {selected === item.id && ( + + )} + + + ))} + + + + 确认支付 + + + + + ) +} + +export default PayModal diff --git a/src/components/business/SkuSelector/index.tsx b/src/components/business/SkuSelector/index.tsx new file mode 100644 index 0000000..adbd7d8 --- /dev/null +++ b/src/components/business/SkuSelector/index.tsx @@ -0,0 +1,342 @@ +import React, { useState, useEffect, useMemo } from 'react' +import { View, Text, Image, ScrollView } from '@tarojs/components' +import Taro from '@tarojs/taro' +import type { ShopGoods, ShopGoodsSku } from '@/api/shop/shopGoods/model' +import type { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model' +import Price from '@/components/common/Price' + +interface SkuSelectorProps { + visible: boolean + product: ShopGoods | null + mode?: 'cart' | 'buy' + onClose: () => void + onConfirm: (sku: ShopGoodsSku, quantity: number) => void +} + +// 将平铺的规格值列表转换为按规格ID分组的格式 +interface SpecGroup { + specId: number + specName: string + values: Array<{ specValueId: number; specValue: string }> +} + +// 解析可能为JSON字符串的规格值 +const parseSpecValue = (value: string | undefined): string => { + if (!value) return '' + const trimmed = value.trim() + // 处理带引号的JSON字符串,如 "红色" -> 红色 + if (trimmed.startsWith('"') && trimmed.endsWith('"') && trimmed.length >= 2) { + try { + return JSON.parse(trimmed) + } catch { + return trimmed.slice(1, -1) + } + } + return trimmed +} + +const SkuSelector: React.FC = ({ + visible, + product, + mode = 'cart', + onClose, + onConfirm, +}) => { + const [selectedSpecs, setSelectedSpecs] = useState>({}) + const [selectedSku, setSelectedSku] = useState(null) + const [quantity, setQuantity] = useState(1) + const [showOverlay, setShowOverlay] = useState(false) + const [slideUp, setSlideUp] = useState(false) + + // 控制动画 + useEffect(() => { + if (visible) { + setShowOverlay(true) + // 延迟一帧触发滑入动画 + setTimeout(() => setSlideUp(true), 10) + } else { + setSlideUp(false) + setTimeout(() => setShowOverlay(false), 300) + } + }, [visible]) + + // 将平铺的goodsSpecs转换为按规格分组的格式 + const specGroups = useMemo(() => { + if (!product?.goodsSpecs?.length) return [] + + const groupMap = new Map() + + product.goodsSpecs.forEach((spec: ShopGoodsSpec, idx: number) => { + if (!groupMap.has(spec.specId!)) { + groupMap.set(spec.specId!, { + specId: spec.specId!, + specName: spec.specName || `规格${groupMap.size + 1}`, + values: [] + }) + } + groupMap.get(spec.specId!)!.values.push({ + specValueId: spec.id || idx, // 优先使用规格值ID,否则用索引 + specValue: parseSpecValue(spec.specValue) + }) + }) + + return Array.from(groupMap.values()) + }, [product?.goodsSpecs]) + + // 当弹窗重新打开时,重置状态 + useEffect(() => { + if (visible) { + setSelectedSpecs({}) + setSelectedSku(null) + setQuantity(1) + } + }, [visible]) + + // 根据已选规格查找匹配的 SKU + useEffect(() => { + if (!product?.goodsSkus?.length) { + // 单规格商品,使用商品本身的价格 + setSelectedSku(null) + return + } + + const specValues = Object.values(selectedSpecs) + const specCount = specGroups.length + + if (specValues.length < specCount) { + setSelectedSku(null) + return + } + + // 根据选中的 specValueId 找到对应的中文值,拼接后排序匹配 + const selectedValues: string[] = [] + specGroups.forEach(group => { + const valueId = selectedSpecs[group.specId] + if (valueId !== undefined) { + const value = group.values.find(v => v.specValueId === valueId) + if (value) selectedValues.push(value.specValue) + } + }) + const selectedStr = selectedValues.sort().join('|') + + const matched = product.goodsSkus.find(sku => { + const skuValue = sku.sku || '' + const skuParts = skuValue.split('|').map(s => parseSpecValue(s.trim())) + const skuStr = skuParts.sort().join('|') + return skuStr === selectedStr + }) + + setSelectedSku(matched || null) + }, [selectedSpecs, product, specGroups]) + + const handleSpecClick = (specId: number, valueId: number) => { + setSelectedSpecs(prev => { + const next = { ...prev } + if (next[specId] === valueId) { + delete next[specId] + } else { + next[specId] = valueId + } + return next + }) + setQuantity(1) + } + + const handleClose = () => { + setSlideUp(false) + setTimeout(() => { + setShowOverlay(false) + onClose() + }, 300) + } + + const handleConfirm = () => { + try { + // 单规格商品(无SKU列表 或 SKU列表为空数组) + if ((!product?.goodsSkus || product.goodsSkus.length === 0) && product) { + const fakeSku: ShopGoodsSku = { + id: 0, + goodsId: product.goodsId!, + price: product.salePrice || product.price, + salePrice: product.salePrice || product.price, + stock: product.stock, + image: product.image, + } + handleClose() + onConfirm(fakeSku, quantity) + return + } + + // 多规格商品 - 必须已选择 SKU + if (selectedSku) { + handleClose() + onConfirm(selectedSku, quantity) + return + } + + // 有规格但未选择完整 + if (specGroups.length > 0) { + Taro.showToast({ title: '请选择完整的规格', icon: 'none' }) + return + } + + // 其他情况 + Taro.showToast({ title: '无法添加商品', icon: 'none' }) + } catch (err) { + Taro.showToast({ title: '操作失败', icon: 'none' }) + } + } + + const currentPrice = selectedSku?.salePrice || selectedSku?.price || product?.salePrice || product?.price || '0' + const currentStock = selectedSku?.stock ?? product?.stock ?? 0 + const currentImage = selectedSku?.image || product?.image || (product?.files?.split(',')[0]) || '' + + // 单规格商品可以确认,或者多规格商品已选择了 SKU + const canConfirm = (!product?.goodsSkus || product.goodsSkus.length === 0) || selectedSku !== null + + // 获取未选择完整的规格提示 + const getUnselectedSpec = () => { + if (specGroups.length === 0) return null + const unselected = specGroups.find( + spec => !selectedSpecs[spec.specId] + ) + return unselected?.specName + } + + // 获取选中的规格文字描述 + const getSelectedText = () => { + const selected: string[] = [] + specGroups.forEach(group => { + const valueId = selectedSpecs[group.specId] + if (valueId !== undefined) { + const value = group.values.find(v => v.specValueId === valueId) + if (value) selected.push(value.specValue) + } + }) + return selected.length > 0 ? selected.join(', ') : '默认' + } + + // 如果不需要显示,直接返回null + if (!showOverlay) return null + + return ( + + {/* 遮罩层 */} + + + {/* 弹窗内容 */} + + + {/* 关闭按钮 */} + + + × + + + + {/* 商品信息 */} + + + + + 库存: {currentStock} + + 已选: {getSelectedText()} + + + + + {/* 规格选择 */} + + {specGroups.map((group) => ( + + + {group.specName} + + + {group.values.map((value) => { + const isActive = selectedSpecs[group.specId] === value.specValueId + return ( + handleSpecClick(group.specId, value.specValueId)} + > + {value.specValue} + + ) + })} + + + ))} + + {/* 无规格时显示提示 */} + {specGroups.length === 0 && product?.goodsSkus?.length === 0 && ( + + 单规格商品 + + )} + + + {/* 数量 */} + + 数量 + + quantity > 1 && setQuantity(prev => prev - 1)} + > + - + + {quantity} + = currentStock ? 'border-gray-200 text-gray-300' : 'border-gray-300 text-gray-500' + }`} + onClick={() => quantity < currentStock && setQuantity(prev => prev + 1)} + > + = currentStock ? 'text-gray-300' : 'text-gray-500'}>+ + + + + + {/* 确认按钮 */} + + + + {getUnselectedSpec() ? `请选择${getUnselectedSpec()}` : (mode === 'cart' ? '加入购物车' : '立即购买')} + + + + + + + ) +} + +export default SkuSelector diff --git a/src/components/common/BottomButton/index.scss b/src/components/common/BottomButton/index.scss new file mode 100644 index 0000000..2f93925 --- /dev/null +++ b/src/components/common/BottomButton/index.scss @@ -0,0 +1,59 @@ +/* 底部悬浮按钮样式 */ + +.bottom-button-container { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 999; + background-color: #ffffff; + padding: 12PX 16PX; + padding-bottom: 24PX; + border-top: 1PX solid #f0f0f0; +} + +.bottom-btn-subtitle { + text-align: center; + margin-bottom: 8px; +} + +.subtitle-text { + font-size: 14px; + color: #666666; +} + +.subtitle-price { + color: #ff6600; + font-weight: 500; +} + +.bottom-btn { + width: 100%; + height: 88rpx; + background-color: #0e932e; + color: #ffffff; + font-size: 32rpx; + font-weight: 500; + border-radius: 44rpx; + border: none; + margin: 0; + padding: 0; + display: flex; + align-items: center; + justify-content: center; + line-height: 88rpx; +} + +.bottom-btn::after { + border: none; +} + +.bottom-btn[disabled] { + background-color: #cccccc; + color: #ffffff; +} + +.bottom-btn[loading] { + background-color: #0e932e; + opacity: 0.8; +} diff --git a/src/components/common/BottomButton/index.tsx b/src/components/common/BottomButton/index.tsx new file mode 100644 index 0000000..c52d1af --- /dev/null +++ b/src/components/common/BottomButton/index.tsx @@ -0,0 +1,42 @@ +import React from 'react' +import { View, Button, Text } from '@tarojs/components' +import styles from './index.scss' + +interface BottomButtonProps { + text?: string + onClick?: () => void + disabled?: boolean + loading?: boolean + color?: string + subtitle?: string +} + +const BottomButton: React.FC = ({ + text = '确认', + onClick, + disabled = false, + loading = false, + color = '#0e932e', + subtitle +}) => { + return ( + + {subtitle && ( + + {subtitle} + + )} + + + ) +} + +export default BottomButton diff --git a/src/components/common/EmptyState/index.tsx b/src/components/common/EmptyState/index.tsx new file mode 100644 index 0000000..4da086e --- /dev/null +++ b/src/components/common/EmptyState/index.tsx @@ -0,0 +1,48 @@ +import React from 'react' +import { View, Text } from '@tarojs/components' +import { Button } from '@nutui/nutui-react-taro' + +interface EmptyStateProps { + image?: string + text?: string + description?: string + actionText?: string + onAction?: () => void +} + +const DEFAULT_IMAGE = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iI2Y1ZjVmNSIvPjx0ZXh0IHg9IjUwJSIgeT0iNTAlIiBkb21pbmFudC1iYXNlbGluZT0ibWlkZGxlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE0IiBmaWxsPSIjY2NjIj7or77nqIvliY3liIY8L3RleHQ+PC9zdmc+' + +const EmptyState: React.FC = ({ + image = DEFAULT_IMAGE, + text = '暂无数据', + description, + actionText, + onAction, +}) => { + return ( + + + + + {text} + {description && ( + {description} + )} + {actionText && onAction && ( + + )} + + ) +} + +export default EmptyState diff --git a/src/components/common/FixedButton/index.tsx b/src/components/common/FixedButton/index.tsx new file mode 100644 index 0000000..f0686bb --- /dev/null +++ b/src/components/common/FixedButton/index.tsx @@ -0,0 +1,43 @@ +import React from 'react' +import { View } from '@tarojs/components' +import { Button } from '@nutui/nutui-react-taro' + +interface FixedButtonProps { + text?: string + onClick?: () => void + icon?: React.ReactNode + disabled?: boolean + background?: string +} + +/** + * 底部固定按钮组件 + * 用于地址列表"新增地址"、地址编辑"保存"等底部固定操作 + */ +const FixedButton: React.FC = ({ text, onClick, icon, disabled, background }) => { + return ( + <> + {/* 底部安全区域占位 */} + + + + + + ) +} + +export default FixedButton diff --git a/src/components/common/LazyImage/index.tsx b/src/components/common/LazyImage/index.tsx new file mode 100644 index 0000000..39c093c --- /dev/null +++ b/src/components/common/LazyImage/index.tsx @@ -0,0 +1,57 @@ +import { View, Image, Text } from '@tarojs/components'; +import { useState, useEffect } from 'react'; +import { useIntersectionObserver } from '@tarojs/taro'; + +interface LazyImageProps { + src: string; + placeholder?: string; + className?: string; + style?: React.CSSProperties; + mode?: 'scaleToFill' | 'aspectFit' | 'aspectFill' | 'widthFix' | 'heightFix' | 'top' | 'bottom' | 'center' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right'; +} + +export default function LazyImage({ src, placeholder, className, style, mode = 'aspectFill' }: LazyImageProps) { + const [loaded, setLoaded] = useState(false); + const [inView, setInView] = useState(false); + const { intersectionObserver } = useIntersectionObserver(); + + useEffect(() => { + if (!intersectionObserver) return; + + intersectionObserver.relativeToViewport(); + intersectionObserver.observe({ + type: 'relativeToViewport', + success: (res) => { + if (res.intersectionRatio > 0) { + setInView(true); + } + } + }); + + return () => { + intersectionObserver.disconnect(); + }; + }, [intersectionObserver]); + + return ( + + {!loaded && ( + + {placeholder ? ( + + ) : ( + 加载中... + )} + + )} + {(inView || loaded) && ( + setLoaded(true)} + /> + )} + + ); +} diff --git a/src/components/common/LoadMore/index.tsx b/src/components/common/LoadMore/index.tsx new file mode 100644 index 0000000..8c3e11e --- /dev/null +++ b/src/components/common/LoadMore/index.tsx @@ -0,0 +1,29 @@ +import React from 'react' +import { View, Text } from '@tarojs/components' + +interface LoadMoreProps { + loading?: boolean + finished?: boolean +} + +const LoadMore: React.FC = ({ loading = false, finished = false }) => { + if (finished) { + return ( + + - 没有更多了 - + + ) + } + + if (loading) { + return ( + + 加载中... + + ) + } + + return null +} + +export default LoadMore diff --git a/src/components/common/Loading/index.tsx b/src/components/common/Loading/index.tsx new file mode 100644 index 0000000..15d2396 --- /dev/null +++ b/src/components/common/Loading/index.tsx @@ -0,0 +1,48 @@ +import React from 'react' +import { View, Text } from '@tarojs/components' + +interface LoadingProps { + /** 提示文字,默认"加载中..." */ + text?: string + /** 是否全屏居中显示 */ + fullscreen?: boolean + /** 自定义样式类名 */ + className?: string +} + +/** + * 统一加载状态组件 + * - 小程序兼容(无 CSS transition / animation 依赖) + * - 支持内嵌和全屏两种模式 + */ +const Loading: React.FC = ({ + text = '加载中...', + fullscreen = false, + className = '', +}) => { + const content = ( + + {/* 简单的旋转加载指示器 */} + + {text} + + ) + + // 全屏模式需要外层容器 + if (fullscreen) { + return <>{content} + } + + return content +} + +export default Loading diff --git a/src/components/common/OrderCard/index.tsx b/src/components/common/OrderCard/index.tsx new file mode 100644 index 0000000..0b8c057 --- /dev/null +++ b/src/components/common/OrderCard/index.tsx @@ -0,0 +1,137 @@ +import React from 'react' +import { View, Text, Image } from '@tarojs/components' +import Taro from '@tarojs/taro' +import type { ShopOrder } from '@/api/shop/shopOrder/model' +import Price from '../Price' + +interface OrderCardProps { + order: ShopOrder + onClick?: () => void +} + +/** 综合 payStatus + deliveryStatus + orderStatus 计算列表卡片状态文案 */ +const getCardStatus = (order: ShopOrder): { text: string; color: string } => { + const { payStatus, deliveryStatus, orderStatus } = order + + if (orderStatus === 2) return { text: '已取消', color: '#999' } + if (orderStatus === 3) return { text: '取消中', color: '#ff7d00' } + if (orderStatus === 6) return { text: '已退款', color: '#999' } + if (orderStatus === 4 || orderStatus === 7) return { text: '退款申请中', color: '#ee0a24' } + if (orderStatus === 5) return { text: '退款被拒绝', color: '#ee0a24' } + + if (!payStatus) return { text: '待付款', color: '#ee0a24' } + if (deliveryStatus === 10) return { text: '待发货', color: '#4b9cf5' } + if (deliveryStatus === 20 || deliveryStatus === 30) return { text: '待收货', color: '#4b9cf5' } + if (orderStatus === 1) return { text: '已完成', color: '#0e932e' } + + return { text: '已付款', color: '#0e932e' } +} + +const OrderCard: React.FC = ({ order, onClick }) => { + const handleClick = () => { + if (onClick) { + onClick() + return + } + Taro.navigateTo({ url: `/pages/order/detail?id=${order.orderId}` }) + } + + const { text: statusText, color: statusColor } = getCardStatus(order) + + // 获取首个商品图片作为封面,或显示默认占位 + const coverImage = order.orderGoods?.[0]?.image || '' + const hasGoods = (order.orderGoods?.length || 0) > 0 + + return ( + + {/* 头部:订单号 + 状态 */} + + + 订单号: {order.orderNo} + + + {statusText} + + + + {/* 商品信息区域 */} + {hasGoods ? ( + + {order.orderGoods?.map((item, idx) => ( + + {/* 商品缩略图 */} + + {item.image ? ( + + ) : ( + + 暂无图片 + + )} + + + {/* 商品信息 */} + + + + {item.goodsName || '未知商品'} + + {item.spec ? ( + + 规格: {item.spec} + + ) : null} + + + + + x{item.totalNum || 1} + + + + + ))} + + ) : ( + /* 无商品信息时的 fallback */ + + + {coverImage ? ( + + ) : ( + 暂无图片 + )} + + + + {order.title || '订单商品'} + + + 共{order.totalNum || 0}件 + + + + )} + + {/* 底部:日期 + 金额汇总 */} + + + {order.createTime?.slice(0, 10)} + + + + 共{order.totalNum || order.orderGoods?.reduce((sum, g) => sum + (g.totalNum || 1), 0) || 0}件 + + 实付 + + + + + ) +} + +export default OrderCard diff --git a/src/components/common/Price/index.tsx b/src/components/common/Price/index.tsx new file mode 100644 index 0000000..e84f2eb --- /dev/null +++ b/src/components/common/Price/index.tsx @@ -0,0 +1,44 @@ +import React from 'react' +import { View, Text } from '@tarojs/components' + +interface PriceProps { + price: string | number + original?: string | number + size?: 'small' | 'normal' | 'large' + color?: string + symbol?: string +} + +const Price: React.FC = ({ + price, + original, + size = 'normal', + color = '#ee0a24', + symbol = '¥', +}) => { + const fmt = (p: string | number) => { + const num = typeof p === 'string' ? parseFloat(p) : p + return isNaN(num) ? '0.00' : num.toFixed(2) + } + + const sizeMap = { + small: { symbol: 'text-xs', integer: 'text-sm font-medium', decimal: 'text-xs' }, + normal: { symbol: 'text-sm', integer: 'text-lg font-bold', decimal: 'text-sm' }, + large: { symbol: 'text-lg', integer: 'text-2xl font-bold', decimal: 'text-lg' }, + } + + const cls = sizeMap[size] + + return ( + + {symbol} + {fmt(price).split('.')[0]} + .{fmt(price).split('.')[1]} + {original && ( + ¥{fmt(original)} + )} + + ) +} + +export default Price diff --git a/src/components/common/ProductCard/index.tsx b/src/components/common/ProductCard/index.tsx new file mode 100644 index 0000000..1b79ac4 --- /dev/null +++ b/src/components/common/ProductCard/index.tsx @@ -0,0 +1,56 @@ +import React from 'react' +import { View, Text, Image } from '@tarojs/components' +import Taro from '@tarojs/taro' +import Price from '../Price' +import type { ShopGoods } from '@/api/shop/shopGoods/model' + +interface ProductCardProps { + product: ShopGoods + onClick?: () => void +} + +const ProductCard: React.FC = ({ product, onClick }) => { + const handleClick = () => { + if (onClick) { + onClick() + return + } + Taro.navigateTo({ url: `/pages/shop/product-detail?id=${product.goodsId}` }) + } + + return ( + + + + + + + {product.name || product.goodsName} + + + + + {product.salePrice && product.salePrice !== product.price && ( + + ¥{product.salePrice} + + )} + + {product.sales !== undefined && product.sales > 0 && ( + + 已售{product.sales} + + )} + + + + ) +} + +export default ProductCard diff --git a/src/components/common/VirtualList/index.tsx b/src/components/common/VirtualList/index.tsx new file mode 100644 index 0000000..792be17 --- /dev/null +++ b/src/components/common/VirtualList/index.tsx @@ -0,0 +1,69 @@ +import { View, ScrollView } from '@tarojs/components'; +import { useState, useEffect, useRef, useCallback } from 'react'; + +interface VirtualListProps { + data: T[]; + itemHeight: number; + containerHeight: number; + renderItem: (item: T, index: number) => JSX.Element; + keyExtractor: (item: T, index: number) => string | number; + onEndReached?: () => void; + onEndReachedThreshold?: number; +} + +export default function VirtualList({ + data, + itemHeight, + containerHeight, + renderItem, + keyExtractor, + onEndReached, + onEndReachedThreshold = 0 +}: VirtualListProps) { + const [startIndex, setStartIndex] = useState(0); + const [endIndex, setEndIndex] = useState(Math.ceil(containerHeight / itemHeight) + 5); + const scrollViewRef = useRef(null); + + const visibleItemCount = Math.ceil(containerHeight / itemHeight) + 10; + const offsetY = startIndex * itemHeight; + + const handleScroll = useCallback((e: any) => { + const scrollTop = e.detail.scrollTop; + const newStartIndex = Math.floor(scrollTop / itemHeight); + const newEndIndex = newStartIndex + visibleItemCount; + + setStartIndex(Math.max(0, newStartIndex - 5)); + setEndIndex(Math.min(data.length, newEndIndex + 5)); + + // 触底加载 + if (onEndReached && onEndReachedThreshold > 0) { + const { scrollHeight, clientHeight } = e.detail; + if (scrollHeight - scrollTop - clientHeight < onEndReachedThreshold) { + onEndReached(); + } + } + }, [itemHeight, visibleItemCount, data.length, onEndReached, onEndReachedThreshold]); + + const visibleData = data.slice(startIndex, endIndex); + + return ( + + + + {visibleData.map((item, index) => ( + + {renderItem(item, startIndex + index)} + + ))} + + + + ); +} diff --git a/src/config/app.ts b/src/config/app.ts new file mode 100644 index 0000000..6b18c33 --- /dev/null +++ b/src/config/app.ts @@ -0,0 +1 @@ +export * from '../../config/app' diff --git a/src/contexts/AppContext.tsx b/src/contexts/AppContext.tsx new file mode 100644 index 0000000..3528475 --- /dev/null +++ b/src/contexts/AppContext.tsx @@ -0,0 +1,15 @@ +import { createContext, useContext } from 'react' + +export interface AppContextType { + theme: 'light' | 'dark' + toggleTheme: () => void +} + +const AppContext = createContext({ + theme: 'light', + toggleTheme: () => {} +}) + +export const useAppContext = () => useContext(AppContext) + +export default AppContext diff --git a/src/contexts/CartContext.tsx b/src/contexts/CartContext.tsx new file mode 100644 index 0000000..78639eb --- /dev/null +++ b/src/contexts/CartContext.tsx @@ -0,0 +1,233 @@ +import React, { createContext, useContext, useState, useCallback, type ReactNode } from 'react' +import Taro from '@tarojs/taro' +import { listShopCart, addToCart, updateCartNum, removeShopCart, removeBatchShopCart, updateCartAllChecked } from '@/api/shop/shopCart' +import type { ShopGoods, ShopGoodsSku } from '@/api/shop/shopGoods/model' + +export interface CartItem { + id?: number + goodsId: number + skuId?: number + quantity: number + product?: ShopGoods + sku?: ShopGoodsSku + checked?: boolean + // 后端返回的字段 + goodsName?: string + goodsImage?: string + skuPrice?: string + skuSpec?: string + stock?: number +} + +interface CartContextType { + items: CartItem[] + totalCount: number + totalPrice: string + selectedItems: CartItem[] + selectedCount: number + selectedPrice: string + loading: boolean + refresh: () => Promise + addItem: (product: ShopGoods, sku?: ShopGoodsSku, quantity?: number) => Promise + removeItem: (goodsId: number, skuId?: number) => Promise + updateQuantity: (goodsId: number, skuId: number | undefined, quantity: number) => Promise + toggleSelect: (goodsId: number, skuId: number | undefined) => Promise + selectAll: (checked: boolean) => Promise + clearCart: () => Promise + getItemQuantity: (goodsId: number, skuId?: number) => number + // 删除选中的商品 + removeSelected: () => Promise +} + +const CartContext = createContext(undefined) + +export const CartProvider: React.FC<{ children: ReactNode }> = ({ children }) => { + const [items, setItems] = useState([]) + const [loading, setLoading] = useState(false) + + // 刷新购物车数据 + const refresh = useCallback(async () => { + setLoading(true) + try { + const data = await listShopCart() + // 防御性检查:确保返回的是数组 + const safeData = Array.isArray(data) ? data : [] + // 转换为前端格式,默认都选中 + const mappedItems: CartItem[] = safeData.map(item => ({ + id: item.id, + goodsId: item.goodsId!, + skuId: item.skuId, + quantity: item.num || 1, + goodsName: item.goodsName, + goodsImage: item.goodsImage, + skuPrice: item.skuPrice, + skuSpec: item.skuSpec, + stock: item.stock, + checked: true, + })) + setItems(mappedItems) + } catch (err) { + console.error('刷新购物车失败', err) + setItems([]) + } finally { + setLoading(false) + } + }, []) + + // 添加商品到购物车 + const addItem = useCallback(async (product: ShopGoods, sku?: ShopGoodsSku, quantity = 1) => { + try { + const params = { + goodsId: product.goodsId!, + num: quantity, + } as Record + // 只有多规格商品才传 skuId,且不能为 0 + if (sku?.id && sku.id > 0) { + params.skuId = sku.id + } + await addToCart(params) + Taro.showToast({ title: '已加入购物车', icon: 'success' }) + // 刷新购物车 + await refresh() + } catch (err: any) { + console.error('[CartContext] 添加失败:', err) + Taro.showToast({ title: err.message || '添加失败', icon: 'none' }) + throw err + } + }, [refresh]) + + // 删除商品 + const removeItem = useCallback(async (goodsId: number, skuId?: number) => { + const item = items.find(i => i.goodsId === goodsId && i.skuId === skuId) + if (!item?.id) return + + try { + await removeShopCart(item.id) + // 本地更新 + setItems(prev => prev.filter(i => !(i.goodsId === goodsId && i.skuId === skuId))) + } catch (err: any) { + Taro.showToast({ title: err.message || '删除失败', icon: 'none' }) + } + }, [items]) + + // 更新数量 + const updateQuantity = useCallback(async (goodsId: number, skuId: number | undefined, quantity: number) => { + if (quantity <= 0) { + await removeItem(goodsId, skuId) + return + } + + const item = items.find(i => i.goodsId === goodsId && i.skuId === skuId) + if (!item?.id) return + + try { + await updateCartNum({ id: item.id, num: quantity }) + // 本地更新 + setItems(prev => prev.map(i => + (i.goodsId === goodsId && i.skuId === skuId) ? { ...i, quantity } : i + )) + } catch (err: any) { + Taro.showToast({ title: err.message || '更新失败', icon: 'none' }) + } + }, [items, removeItem]) + + // 切换选中状态 + const toggleSelect = useCallback(async (goodsId: number, skuId: number | undefined) => { + const item = items.find(i => i.goodsId === goodsId && i.skuId === skuId) + if (!item || !item.id) return + + const newChecked = !item.checked + // 本地立即更新 + setItems(prev => prev.map(i => + (i.goodsId === goodsId && i.skuId === skuId) ? { ...i, checked: newChecked } : i + )) + + // 同步到后端 + try { + await updateCartChecked(item.id, newChecked) + } catch (err) { + // API失败时回滚本地状态 + setItems(prev => prev.map(i => + (i.goodsId === goodsId && i.skuId === skuId) ? { ...i, checked: !newChecked } : i + )) + console.error('更新选中状态失败', err) + } + }, [items]) + + // 全选/取消全选 + const selectAll = useCallback(async (checked: boolean) => { + // 本地立即更新 + setItems(prev => prev.map(i => ({ ...i, checked }))) + // 尝试调用API + try { + await updateCartAllChecked(checked) + } catch (err) { + // API失败时静默处理,本地状态已更新 + } + }, []) + + // 清空购物车 + const clearCart = useCallback(async () => { + try { + await removeBatchShopCart(items.map(i => i.id!).filter(Boolean)) + setItems([]) + } catch (err: any) { + Taro.showToast({ title: err.message || '清空失败', icon: 'none' }) + } + }, [items]) + + // 删除选中的商品 + const removeSelected = useCallback(async () => { + const selected = items.filter(i => i.checked && i.id) + if (selected.length === 0) return + + try { + await removeBatchShopCart(selected.map(i => i.id!)) + setItems(prev => prev.filter(i => !i.checked)) + Taro.showToast({ title: `已删除${selected.length}件商品`, icon: 'success' }) + } catch (err: any) { + Taro.showToast({ title: err.message || '删除失败', icon: 'none' }) + } + }, [items]) + + const getItemQuantity = useCallback((goodsId: number, skuId?: number): number => { + return items.find(i => i.goodsId === goodsId && i.skuId === skuId)?.quantity || 0 + }, [items]) + + const calcPrice = (list: CartItem[]) => + list.reduce((sum, i) => sum + Number(i.skuPrice || i.sku?.price || i.product?.salePrice || i.product?.price || 0) * i.quantity, 0).toFixed(2) + + const selectedItems = items.filter(i => i.checked) + const selectedCount = selectedItems.reduce((s, i) => s + i.quantity, 0) + + return ( + s + i.quantity, 0), + totalPrice: calcPrice(items), + selectedItems, + selectedCount, + selectedPrice: calcPrice(selectedItems), + loading, + refresh, + addItem, + removeItem, + updateQuantity, + toggleSelect, + selectAll, + clearCart, + getItemQuantity, + removeSelected, + }} + > + {children} + + ) +} + +export const useCartContext = (): CartContextType => { + const context = useContext(CartContext) + if (!context) throw new Error('useCartContext must be used within CartProvider') + return context +} diff --git a/src/contexts/UserContext.tsx b/src/contexts/UserContext.tsx new file mode 100644 index 0000000..a4d9864 --- /dev/null +++ b/src/contexts/UserContext.tsx @@ -0,0 +1,135 @@ +import React, { createContext, useContext, useState, useEffect, type ReactNode } from 'react' +import Taro from '@tarojs/taro' +import type { User } from '@/api/system/user/model' +import { getUserInfo, loginByOpenId } from '@/api/layout' +import { saveStorageByLoginUser, clearStorageByLoginUser } from '@/utils/server' +import { TenantId } from '@/config/app' + +interface UserContextType { + user: User | null + isLoggedIn: boolean + loading: boolean + loginUser: (token: string, userInfo: User) => void + logoutUser: () => void + refreshUser: () => Promise + syncFromStorage: () => boolean +} + +const UserContext = createContext(undefined) + +export const UserProvider: React.FC<{ children: ReactNode }> = ({ children }) => { + const [user, setUser] = useState(null) + const [loading, setLoading] = useState(true) + + useEffect(() => { + const init = async () => { + const token = Taro.getStorageSync('access_token') + const userData = Taro.getStorageSync('User') + + // 情况1: 有本地token和用户数据,直接使用 + if (token && userData) { + const parsed = typeof userData === 'string' ? JSON.parse(userData) : userData + setUser(parsed as User) + setLoading(false) + return + } + + // 情况2: 有token但没有用户数据,尝试从接口获取 + if (token) { + try { + const userInfo = await getUserInfo() + setUser(userInfo) + setLoading(false) + return + } catch { + // token无效,清除并尝试静默登录 + clearStorageByLoginUser() + } + } + + // 情况3: 没有本地token,尝试静默登录(老用户自动登录) + try { + const loginResult = await new Promise<{ access_token?: string; user?: User }>((resolve, reject) => { + Taro.login({ + success: (res) => { + if (res.code) { + loginByOpenId({ code: res.code, tenantId: TenantId }) + .then(resolve) + .catch(reject) + } else { + reject(new Error('no code')) + } + }, + fail: reject, + }) + }) + // 静默登录成功(老用户),自动完成登录 + if (loginResult?.access_token && loginResult?.user) { + saveStorageByLoginUser(loginResult.access_token, loginResult.user) + setUser(loginResult.user) + } + } catch { + // 静默登录失败(非老用户或网络问题),保持未登录状态 + } + + setLoading(false) + } + init() + }, []) + + const loginUser = (token: string, userInfo: User) => { + saveStorageByLoginUser(token, userInfo) + setUser(userInfo) + } + + const logoutUser = () => { + clearStorageByLoginUser() + setUser(null) + } + + /** 从 storage 快速同步用户状态(无需网络请求),供页面 useDidShow 调用 */ + const syncFromStorage = (): boolean => { + const token = Taro.getStorageSync('access_token') + const userData = Taro.getStorageSync('User') + if (token && userData) { + const parsed = typeof userData === 'string' ? JSON.parse(userData) : userData + setUser(parsed as User) + return true + } + if (!token) { + setUser(null) + } + return false + } + + const refreshUser = async (): Promise => { + if (!Taro.getStorageSync('access_token')) return null + try { + const userInfo = await getUserInfo() + const token = Taro.getStorageSync('access_token') + if (token) { + saveStorageByLoginUser(token, userInfo) + } + setUser(userInfo) + return userInfo + } catch { + return null + } + } + + return ( + + {children} + + ) +} + +export const useUserContext = (): UserContextType => { + const context = useContext(UserContext) + if (!context) { + throw new Error('useUserContext must be used within UserProvider') + } + return context +} diff --git a/src/hooks/index.ts b/src/hooks/index.ts new file mode 100644 index 0000000..4f2ea4e --- /dev/null +++ b/src/hooks/index.ts @@ -0,0 +1,28 @@ +// Context Hooks +export { useAppContext } from './useAppContext' +export { useUser } from './useUser' +export { useCartContext } from '../contexts/CartContext' + +// Theme +export { useTheme } from './useTheme' + +// Utility Hooks +export { useCountDown } from './useCountDown' +export type { CountDownResult } from './useCountDown' + +export { useCountUp } from './useCountUp' +export type { CountUpResult, CountUpOptions } from './useCountUp' + +export { useRequest } from './useRequest' +export type { + RequestState, + UseRequestOptions, + UseRequestReturn, +} from './useRequest' + +// Feature Hooks +export { useAddress } from './useAddress' +export { useCoupon } from './useCoupon' +export { usePagination } from './usePagination' +export { usePayment } from './usePayment' +export { useScrollHeight } from './useScrollHeight' diff --git a/src/hooks/useAddress.ts b/src/hooks/useAddress.ts new file mode 100644 index 0000000..cdac3fc --- /dev/null +++ b/src/hooks/useAddress.ts @@ -0,0 +1,93 @@ +import { useState, useCallback } from 'react' +import { + listShopUserAddress, + getShopUserAddress, + addShopUserAddress, + updateShopUserAddress, + removeShopUserAddress, + setDefaultAddress, +} from '@/api/shop/shopUserAddress' +import type { ShopUserAddress } from '@/api/shop/shopUserAddress/model' + +interface UseAddressReturn { + addresses: ShopUserAddress[] + loading: boolean + defaultAddress: ShopUserAddress | null + loadAddresses: () => Promise + getAddress: (id: number) => Promise + addAddress: (data: Partial) => Promise + updateAddress: (data: ShopUserAddress) => Promise + deleteAddress: (id: number) => Promise + setDefault: (id: number) => Promise +} + +export function useAddress(): UseAddressReturn { + const [addresses, setAddresses] = useState([]) + const [loading, setLoading] = useState(false) + + const loadAddresses = useCallback(async () => { + setLoading(true) + try { + const list = await listShopUserAddress() + setAddresses(Array.isArray(list) ? list : []) + } catch (error) { + console.error('Load addresses error:', error) + setAddresses([]) + } finally { + setLoading(false) + } + }, []) + + /** 根据 ID 获取单个地址 */ + const getAddress = useCallback(async (id: number): Promise => { + try { + return await getShopUserAddress(id) + } catch { + return null + } + }, []) + + const addAddress = useCallback(async (data: Partial): Promise => { + try { + await addShopUserAddress(data as any) + await loadAddresses() + return true + } catch { + return false + } + }, [loadAddresses]) + + const updateAddress = useCallback(async (data: ShopUserAddress): Promise => { + try { + await updateShopUserAddress(data) + await loadAddresses() + return true + } catch { + return false + } + }, [loadAddresses]) + + const deleteAddress = useCallback(async (id: number): Promise => { + try { + await removeShopUserAddress(id) + setAddresses(prev => prev.filter(a => a.id !== id)) + return true + } catch { + return false + } + }, []) + + const setDefault = useCallback(async (id: number): Promise => { + try { + await setDefaultAddress(id) + await loadAddresses() + return true + } catch { + return false + } + }, [loadAddresses]) + + const defaultAddress = addresses.find(a => a.isDefault) || addresses[0] || null + + return { addresses, loading, defaultAddress, loadAddresses, getAddress, addAddress, updateAddress, deleteAddress, setDefault } +} diff --git a/src/hooks/useAppContext.ts b/src/hooks/useAppContext.ts new file mode 100644 index 0000000..279c7fb --- /dev/null +++ b/src/hooks/useAppContext.ts @@ -0,0 +1,12 @@ +import { useContext } from 'react' +import AppContext from '@/contexts/AppContext' + +export const useAppContext = () => { + const context = useContext(AppContext) + + if (!context) { + throw new Error('useAppContext 必须在 AppContext.Provider 内使用') + } + + return context +} diff --git a/src/hooks/useCountDown.ts b/src/hooks/useCountDown.ts new file mode 100644 index 0000000..3924c1c --- /dev/null +++ b/src/hooks/useCountDown.ts @@ -0,0 +1,145 @@ +import { useState, useEffect, useCallback, useRef } from 'react' + +export interface CountDownResult { + /** 剩余秒数 */ + seconds: number + /** 剩余分钟 */ + minutes: number + /** 剩余小时 */ + hours: number + /** 剩余天数 */ + days: number + /** 总剩余秒数 */ + totalSeconds: number + /** 是否在运行 */ + isRunning: boolean + /** 是否已结束 */ + isExpired: boolean + /** 格式化后的字符串 */ + formatted: string + /** 暂停 */ + pause: () => void + /** 继续 */ + resume: () => void + /** 重置 */ + reset: (newTargetDate?: number) => void +} + +/** + * 倒计时 Hook + * @param targetDate 目标时间戳(毫秒),0 表示立即结束 + * @param options 配置选项 + */ +export function useCountDown( + targetDate: number, + options: { + /** 触发间隔(毫秒),默认 1000 */ + interval?: number + /** 结束时的回调 */ + onComplete?: () => void + /** 是否自动开始,默认 true */ + autoStart?: boolean + /** 格式化函数,默认返回 HH:MM:SS 或 DD天HH:MM:SS */ + format?: (result: Pick) => string + } = {} +): CountDownResult { + const { interval = 1000, onComplete, autoStart = true, format } = options + + const targetRef = useRef(targetDate) + const onCompleteRef = useRef(onComplete) + const intervalRef = useRef | null>(null) + + const [state, setState] = useState(() => calculateTimeLeft(targetDate)) + const [isRunning, setIsRunning] = useState(autoStart) + + // 更新回调引用 + useEffect(() => { + onCompleteRef.current = onComplete + }, [onComplete]) + + // 更新目标时间 + useEffect(() => { + targetRef.current = targetDate + setState(calculateTimeLeft(targetDate)) + }, [targetDate]) + + // 计算剩余时间 + function calculateTimeLeft(target: number) { + const now = Date.now() + const diff = Math.max(0, Math.floor((target - now) / 1000)) + return { + totalSeconds: diff, + days: Math.floor(diff / 86400), + hours: Math.floor((diff % 86400) / 3600), + minutes: Math.floor((diff % 3600) / 60), + seconds: diff % 60, + } + } + + // 默认格式化 + const defaultFormat = useCallback((r: Pick) => { + const pad = (n: number) => String(n).padStart(2, '0') + if (r.days > 0) { + return `${r.days}天${pad(r.hours)}:${pad(r.minutes)}:${pad(r.seconds)}` + } + return `${pad(r.hours)}:${pad(r.minutes)}:${pad(r.seconds)}` + }, []) + + // 启动定时器 + const startInterval = useCallback(() => { + if (intervalRef.current) clearInterval(intervalRef.current) + intervalRef.current = setInterval(() => { + const left = calculateTimeLeft(targetRef.current) + setState(left) + if (left.totalSeconds <= 0) { + if (intervalRef.current) clearInterval(intervalRef.current) + setIsRunning(false) + onCompleteRef.current?.() + } + }, interval) + }, [interval]) + + // 控制定时器 + useEffect(() => { + if (isRunning) { + // 立即执行一次 + const left = calculateTimeLeft(targetRef.current) + setState(left) + if (left.totalSeconds <= 0) { + setIsRunning(false) + onCompleteRef.current?.() + } else { + startInterval() + } + } else { + if (intervalRef.current) { + clearInterval(intervalRef.current) + intervalRef.current = null + } + } + return () => { + if (intervalRef.current) clearInterval(intervalRef.current) + } + }, [isRunning, startInterval]) + + const pause = useCallback(() => setIsRunning(false), []) + const resume = useCallback(() => { + if (state.totalSeconds > 0) setIsRunning(true) + }, [state.totalSeconds]) + const reset = useCallback((newTarget?: number) => { + const target = newTarget ?? targetDate + targetRef.current = target + setState(calculateTimeLeft(target)) + setIsRunning(true) + }, [targetDate]) + + return { + ...state, + isRunning, + isExpired: state.totalSeconds <= 0, + formatted: (format ?? defaultFormat)(state), + pause, + resume, + reset, + } +} diff --git a/src/hooks/useCountUp.ts b/src/hooks/useCountUp.ts new file mode 100644 index 0000000..35401ba --- /dev/null +++ b/src/hooks/useCountUp.ts @@ -0,0 +1,130 @@ +import { useState, useEffect, useCallback, useRef } from 'react' + +export interface CountUpResult { + /** 当前秒数 */ + seconds: number + /** 当前分钟 */ + minutes: number + /** 当前小时 */ + hours: number + /** 总秒数 */ + totalSeconds: number + /** 是否在运行 */ + isRunning: boolean + /** 格式化后的字符串 */ + formatted: string + /** 暂停 */ + pause: () => void + /** 继续 */ + resume: () => void + /** 重置 */ + reset: (newStartFrom?: number) => void +} + +export interface CountUpOptions { + /** 起始值(秒),默认 0 */ + startFrom?: number + /** 触发间隔(毫秒),默认 1000 */ + interval?: number + /** 最大值,超出后停止 */ + maxValue?: number + /** 格式化函数 */ + format?: (result: Pick) => string +} + +/** + * 正向计时 Hook + * @param options 配置选项 + */ +export function useCountUp(options: CountUpOptions = {}): CountUpResult { + const { startFrom = 0, interval = 1000, maxValue, format } = options + + const startRef = useRef(startFrom) + const maxRef = useRef(maxValue) + const intervalRef = useRef | null>(null) + + const [totalSeconds, setTotalSeconds] = useState(startFrom) + const [isRunning, setIsRunning] = useState(false) + + // 计算时分秒 + const calcTime = useCallback((total: number) => ({ + totalSeconds: total, + hours: Math.floor(total / 3600), + minutes: Math.floor((total % 3600) / 60), + seconds: total % 60, + }), []) + + const [time, setTime] = useState(() => calcTime(startFrom)) + + // 默认格式化 + const defaultFormat = useCallback((r: Pick) => { + const pad = (n: number) => String(n).padStart(2, '0') + return `${pad(r.hours)}:${pad(r.minutes)}:${pad(r.seconds)}` + }, []) + + const startInterval = useCallback(() => { + if (intervalRef.current) clearInterval(intervalRef.current) + intervalRef.current = setInterval(() => { + setTotalSeconds(prev => { + const next = prev + Math.floor(interval / 1000) + const max = maxRef.current + if (max !== undefined && next >= max) { + if (intervalRef.current) clearInterval(intervalRef.current) + setIsRunning(false) + return max + } + return next + }) + }, interval) + }, [interval]) + + // 更新 refs + useEffect(() => { + startRef.current = startFrom + setTotalSeconds(startFrom) + setTime(calcTime(startFrom)) + }, [startFrom, calcTime]) + + useEffect(() => { + maxRef.current = maxValue + }, [maxValue]) + + // 同步 totalSeconds 到 time + useEffect(() => { + setTime(calcTime(totalSeconds)) + }, [totalSeconds, calcTime]) + + // 控制定时器 + useEffect(() => { + if (isRunning) { + startInterval() + } else { + if (intervalRef.current) { + clearInterval(intervalRef.current) + intervalRef.current = null + } + } + return () => { + if (intervalRef.current) clearInterval(intervalRef.current) + } + }, [isRunning, startInterval]) + + const pause = useCallback(() => setIsRunning(false), []) + const resume = useCallback(() => setIsRunning(true), []) + const reset = useCallback((newStart?: number) => { + const start = newStart ?? startFrom + startRef.current = start + setTotalSeconds(start) + setTime(calcTime(start)) + setIsRunning(true) + }, [startFrom, calcTime]) + + return { + ...time, + isRunning, + formatted: (format ?? defaultFormat)(time), + pause, + resume, + reset, + } +} diff --git a/src/hooks/useCoupon.ts b/src/hooks/useCoupon.ts new file mode 100644 index 0000000..f927293 --- /dev/null +++ b/src/hooks/useCoupon.ts @@ -0,0 +1,104 @@ +import { useState, useCallback } from 'react' +import { + listShopUserCoupon, + pageShopUserCoupon, + removeShopUserCoupon, + getMyAvailableCoupons, + getMyUsedCoupons, + getMyExpiredCoupons, +} from '@/api/shop/shopUserCoupon' +import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model' + +export type CouponTab = 'available' | 'used' | 'expired' + +interface UseCouponReturn { + coupons: ShopUserCoupon[] + loading: boolean + tab: CouponTab + setTab: (tab: CouponTab) => void + loadCoupons: () => Promise + deleteCoupon: (id: string) => Promise +} + +export function useCoupon(): UseCouponReturn { + const [coupons, setCoupons] = useState([]) + const [loading, setLoading] = useState(false) + const [tab, setTab] = useState('available') + + const loadCoupons = useCallback(async () => { + setLoading(true) + try { + let list: ShopUserCoupon[] = [] + switch (tab) { + case 'available': + list = await getMyAvailableCoupons() + break + case 'used': + list = await getMyUsedCoupons() + break + case 'expired': + list = await getMyExpiredCoupons() + break + } + setCoupons(list || []) + } catch (error) { + console.error('Load coupons error:', error) + } finally { + setLoading(false) + } + }, [tab]) + + const deleteCoupon = useCallback(async (id: string): Promise => { + try { + await removeShopUserCoupon(Number(id)) + setCoupons(prev => prev.filter(c => c.id !== id)) + return true + } catch { + return false + } + }, []) + + return { coupons, loading, tab, setTab, loadCoupons, deleteCoupon } +} + +// 获取优惠券类型文本 +export function getCouponTypeText(type?: number): string { + switch (type) { + case 10: return '满减券' + case 20: return '折扣券' + case 30: return '免费券' + case 40: return '无门槛券' + case 50: return '场地使用券' + default: return '优惠券' + } +} + +// 获取优惠券状态文本 +export function getCouponStatusText(coupon: ShopUserCoupon): string { + if (coupon.status === 1) return '已使用' + if (coupon.status === 2 || coupon.isExpire === 1) return '已过期' + return '未使用' +} + +// 格式化优惠券金额 +export function formatCouponValue(coupon: ShopUserCoupon): string { + switch (coupon.type) { + case 20: + // 折扣券 + return `${coupon.discount || 0}折` + case 40: + // 无门槛券 + return `¥${coupon.reducePrice || '0'}` + case 50: + // 场地使用券 + return coupon.useCount && coupon.useCount > 0 ? `${coupon.useCount}次` : '不限次' + default: + // 满减券/免费券 + return `¥${coupon.reducePrice || '0'}` + } +} + +// 检查优惠券是否即将过期(3天内) +export function isExpiringSoon(coupon: ShopUserCoupon): boolean { + return coupon.isExpiringSoon === true || (coupon.daysRemaining !== undefined && coupon.daysRemaining <= 3) +} diff --git a/src/hooks/usePagination.ts b/src/hooks/usePagination.ts new file mode 100644 index 0000000..d004e1d --- /dev/null +++ b/src/hooks/usePagination.ts @@ -0,0 +1,110 @@ +import { useState, useCallback } from 'react' +import type { PageParam, PageResult } from '@/api/index' + +interface UsePaginationOptions { + api: (params: PageParam) => Promise> + defaultParams?: Partial + pageSize?: number + immediate?: boolean +} + +interface UsePaginationReturn { + list: T[] + loading: boolean + refreshing: boolean + loadingMore: boolean + finished: boolean + total: number + params: PageParam + run: (extraParams?: Record) => Promise + refresh: () => Promise + loadMore: () => Promise + reset: () => void + setParams: (params: Partial) => void +} + +export function usePagination(options: UsePaginationOptions): UsePaginationReturn { + const { api, defaultParams = {}, pageSize = 10, immediate = false } = options + + const [list, setList] = useState([]) + const [loading, setLoading] = useState(false) + const [refreshing, setRefreshing] = useState(false) + const [loadingMore, setLoadingMore] = useState(false) + const [finished, setFinished] = useState(false) + const [total, setTotal] = useState(0) + const [params, setParamsState] = useState({ + page: 1, + limit: pageSize, + ...defaultParams, + }) + + const setParams = (newParams: Partial) => { + setParamsState(prev => ({ ...prev, ...newParams })) + } + + const fetchData = useCallback(async (page: number, extraParams?: Record) => { + const result = await api({ ...params, ...extraParams, page, limit: pageSize }) + setList(result?.list || []) + setTotal(result?.count || 0) + setFinished((result?.list || []).length < pageSize) + return result + }, [api, params, pageSize]) + + const run = useCallback(async (extraParams?: Record) => { + setLoading(true) + try { + await fetchData(1, extraParams) + setParamsState(prev => ({ ...prev, page: 1 })) + } catch (error) { + console.error('Pagination run error:', error) + } finally { + setLoading(false) + } + }, [fetchData]) + + const refresh = useCallback(async () => { + if (refreshing) return + setRefreshing(true) + setFinished(false) + try { + await fetchData(1) + setParamsState(prev => ({ ...prev, page: 1 })) + } catch (error) { + console.error('Refresh error:', error) + } finally { + setRefreshing(false) + } + }, [fetchData, refreshing]) + + const loadMore = useCallback(async () => { + if (loadingMore || finished) return + setLoadingMore(true) + try { + const nextPage = (params.page || 1) + 1 + const result = await api({ ...params, page: nextPage, limit: pageSize }) + const newList = result?.list || [] + setList(prev => [...prev, ...newList]) + setTotal(result?.count || 0) + setFinished(newList.length < pageSize) + setParamsState(prev => ({ ...prev, page: nextPage })) + } catch (error) { + console.error('LoadMore error:', error) + } finally { + setLoadingMore(false) + } + }, [api, params, pageSize, loadingMore, finished]) + + const reset = useCallback(() => { + setList([]) + setFinished(false) + setTotal(0) + setParamsState(prev => ({ ...prev, page: 1 })) + }, []) + + // 立即执行 + if (immediate && list.length === 0 && !loading && !refreshing) { + run() + } + + return { list, loading, refreshing, loadingMore, finished, total, params, run, refresh, loadMore, reset, setParams } +} diff --git a/src/hooks/usePayment.ts b/src/hooks/usePayment.ts new file mode 100644 index 0000000..6c90aab --- /dev/null +++ b/src/hooks/usePayment.ts @@ -0,0 +1,77 @@ +import { useState, useCallback } from 'react' +import Taro from '@tarojs/taro' + +interface UsePaymentOptions { + onSuccess?: (orderNo: string) => void + onFail?: (error: any) => void +} + +interface UsePaymentReturn { + loading: boolean + error: string | null + requestPayment: (payParams: { + timeStamp: string + nonceStr: string + package: string + signType: string + paySign: string + orderNo?: string + }) => Promise + createAndPay: (createOrderFn: () => Promise) => Promise +} + +export function usePayment(options: UsePaymentOptions = {}): UsePaymentReturn { + const { onSuccess, onFail } = options + const [loading, setLoading] = useState(false) + const [error, setError] = useState(null) + + const requestPayment = useCallback(async (payParams: { + timeStamp: string + nonceStr: string + package: string + signType: string + paySign: string + orderNo?: string + }): Promise => { + setLoading(true) + setError(null) + try { + await Taro.requestPayment({ + timeStamp: payParams.timeStamp, + nonceStr: payParams.nonceStr, + package: payParams.package, + signType: payParams.signType as any, + paySign: payParams.paySign, + }) + payParams.orderNo && onSuccess?.(payParams.orderNo) + return true + } catch (err: any) { + if (err.errMsg?.includes('cancel')) { + setError('支付已取消') + } else { + setError(err.errMsg || '支付失败') + onFail?.(err) + } + return false + } finally { + setLoading(false) + } + }, [onSuccess, onFail]) + + const createAndPay = useCallback(async (createOrderFn: () => Promise): Promise => { + setLoading(true) + setError(null) + try { + const result = await createOrderFn() + return await requestPayment(result) + } catch (err: any) { + setError(err.message || '创建订单失败') + onFail?.(err) + return false + } finally { + setLoading(false) + } + }, [requestPayment, onFail]) + + return { loading, error, requestPayment, createAndPay } +} diff --git a/src/hooks/useRequest.ts b/src/hooks/useRequest.ts new file mode 100644 index 0000000..d3866b3 --- /dev/null +++ b/src/hooks/useRequest.ts @@ -0,0 +1,325 @@ +import { useState, useEffect, useCallback, useRef } from 'react' + +/** 简易 AbortSignal 替代(兼容小程序环境) */ +class SimpleAbortSignal { + private _aborted = false + get aborted() { return this._aborted } + abort() { this._aborted = true } +} +class SimpleAbortController { + signal = new SimpleAbortSignal() + abort() { this.signal.abort() } +} + +export interface RequestState { + /** 请求结果数据 */ + data: T | null + /** 是否加载中 */ + loading: boolean + /** 错误信息 */ + error: Error | null + /** 是否首次加载完成(不管成功或失败) */ + initialized: boolean +} + +export interface UseRequestOptions { + /** 手动触发模式下需要调用 run 执行 */ + manual?: boolean + /** 初始数据 */ + defaultData?: T + /** 请求函数 */ + service?: (...args: P) => Promise + /** 成功回调 */ + onSuccess?: (data: T, params: P) => void + /** 失败回调 */ + onError?: (error: Error, params: P) => void + /** 轮询间隔(毫秒),设置后自动轮询 */ + pollingInterval?: number + /** 轮询在页面隐藏时暂停,默认 true */ + pollingWhenHidden?: boolean + /** 防抖延迟(毫秒) */ + debounceInterval?: number + /** 依赖变化时自动重新请求 */ + refreshDeps?: unknown[] + /** 请求节流间隔(毫秒) */ + throttleInterval?: number + /** 缓存 key,相同 key 的请求结果会被缓存 */ + cacheKey?: string + /** 缓存有效期(毫秒) */ + cacheTime?: number + /** 重新请求尝试次数 */ + retryCount?: number + /** 重试延迟(毫秒),默认 1000 */ + retryInterval?: number +} + +export interface UseRequestReturn { + /** 当前状态 */ + state: RequestState + /** 请求结果数据(state.data 的快捷访问) */ + data: T | null + /** 是否加载中(state.loading 的快捷访问) */ + loading: boolean + /** 错误信息(state.error 的快捷访问) */ + error: Error | null + /** 是否首次加载完成(state.initialized 的快捷访问) */ + initialized: boolean + /** 触发请求(manual 模式下) */ + run: (...params: P) => Promise + /** 带 loading 的运行 */ + runLoading: (...params: P) => Promise + /** 取消请求 */ + cancel: () => void + /** 刷新(使用上次参数) */ + refresh: () => void + /** 修改 data(不发起请求) */ + mutate: (data: T | ((prev: T | null) => T)) => void + /** 当前参数 */ + params: P +} + +// 简单缓存 +const cache = new Map() + +function getCache(key: string): T | null { + const item = cache.get(key) + if (!item) return null + if (Date.now() > item.expireAt) { + cache.delete(key) + return null + } + return item.data as T +} + +function setCache(key: string, data: T, cacheTime: number) { + cache.set(key, { data, expireAt: Date.now() + cacheTime }) +} + +/** + * 请求封装 Hook + * @param service 请求函数 + * @param options 配置选项 + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function useRequest( + service: (...args: P) => Promise, + options: UseRequestOptions = {} +): UseRequestReturn + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function useRequest( + service: undefined, + options: UseRequestOptions = {} +): UseRequestReturn + +export function useRequest( + service: ((...args: P) => Promise) | undefined, + options: UseRequestOptions = {} +): UseRequestReturn { + const { + manual = false, + defaultData, + onSuccess, + onError, + pollingInterval, + pollingWhenHidden = true, + debounceInterval, + refreshDeps = [], + throttleInterval, + cacheKey, + cacheTime = 5 * 60 * 1000, + retryCount = 0, + retryInterval = 1000, + } = options + + const [state, setState] = useState>({ + data: defaultData ?? null, + loading: false, + error: null, + initialized: !!defaultData, + }) + + const [params, setParams] = useState

([] as unknown as P) + + const serviceRef = useRef(service) + const onSuccessRef = useRef(onSuccess) + const onErrorRef = useRef(onError) + const pollingTimerRef = useRef | null>(null) + const abortControllerRef = useRef(null) + const isMountedRef = useRef(true) + const debounceTimerRef = useRef | null>(null) + const throttleLastRunRef = useRef(0) + + // 更新 refs + useEffect(() => { + serviceRef.current = service + }, [service]) + useEffect(() => { onSuccessRef.current = onSuccess }, [onSuccess]) + useEffect(() => { onErrorRef.current = onError }, [onError]) + + // 清理 + useEffect(() => { + isMountedRef.current = true + return () => { + isMountedRef.current = false + if (pollingTimerRef.current) clearInterval(pollingTimerRef.current) + if (debounceTimerRef.current) clearTimeout(debounceTimerRef.current) + abortControllerRef.current?.abort() + } + }, []) + + // 页面可见性处理(使用 Taro 生命周期,兼容小程序环境) + useEffect(() => { + if (!pollingInterval || !pollingWhenHidden) return + // 在小程序中,Taro.useDidShow / useDidHide 仅可在页面组件中使用 + // useRequest 作为通用 hook 无法直接使用这些,因此跳过 + // 如需轮询暂停/恢复能力,可在页面组件中手动调用 cancel / refresh + }, [pollingInterval, pollingWhenHidden]) + + // 依赖刷新 - 使用 useRef 避免闭包过期 + const refreshDepsRef = useRef(refreshDeps) + refreshDepsRef.current = refreshDeps + + useEffect(() => { + if (!manual && refreshDepsRef.current.length > 0) { + refresh() + } + }, [...refreshDeps]) // eslint-disable-line + + const run = useCallback(async (...p: P): Promise => { + // 防抖 + if (debounceInterval) { + if (debounceTimerRef.current) clearTimeout(debounceTimerRef.current) + return new Promise((resolve) => { + debounceTimerRef.current = setTimeout(async () => { + const result = await doRequest(...p) + resolve(result) + }, debounceInterval) + }) + } + + // 节流 + if (throttleInterval) { + const now = Date.now() + if (now - throttleLastRunRef.current < throttleInterval) { + return + } + throttleLastRunRef.current = now + } + + return doRequest(...p) + }, [debounceInterval, throttleInterval]) // eslint-disable-line + + const doRequest = useCallback(async (...p: P): Promise => { + if (!serviceRef.current) return + + setParams(p) + abortControllerRef.current?.abort() + abortControllerRef.current = new SimpleAbortController() + + // 检查缓存 + if (cacheKey) { + const cached = getCache(cacheKey) + if (cached !== null) { + setState({ data: cached, loading: false, error: null, initialized: true }) + return cached + } + } + + setState(prev => ({ ...prev, loading: true, error: null })) + + try { + let result!: T + let attempt = 0 + const maxAttempts = retryCount + 1 + + while (attempt < maxAttempts) { + try { + result = await serviceRef.current(...p) + break + } catch (err: unknown) { + attempt++ + const isAbortError = err instanceof Error && err.message.includes('abort') + if (attempt >= maxAttempts || isAbortError) { + throw err + } + await new Promise(r => setTimeout(r, retryInterval * attempt)) + } + } + + if (!isMountedRef.current) return + + // 缓存 + if (cacheKey) { + setCache(cacheKey, result, cacheTime) + } + + setState({ data: result, loading: false, error: null, initialized: true }) + onSuccessRef.current?.(result, p) + + // 轮询 + if (pollingInterval && !pollingTimerRef.current) { + pollingTimerRef.current = setInterval(() => { + doRequest(...p) + }, pollingInterval) + } + + return result + } catch (err: unknown) { + if (!isMountedRef.current) return + const error = err instanceof Error ? err : new Error(String(err)) + setState({ data: null, loading: false, error, initialized: true }) + onErrorRef.current?.(error, p) + return undefined + } + }, [cacheKey, cacheTime, pollingInterval, pollingWhenHidden, retryCount, retryInterval]) // eslint-disable-line + + const runLoading = useCallback(async (...p: P) => { + if (!serviceRef.current) return + setParams(p) + return doRequest(...p) + }, [doRequest]) + + const cancel = useCallback(() => { + if (pollingTimerRef.current) { + clearInterval(pollingTimerRef.current) + pollingTimerRef.current = null + } + abortControllerRef.current?.abort() + setState(prev => ({ ...prev, loading: false })) + }, []) + + const refresh = useCallback(() => { + if (params.length > 0) { + run(...params) + } + }, [params, run]) + + const mutate = useCallback((data: T | ((prev: T | null) => T)) => { + setState(prev => ({ + ...prev, + data: typeof data === 'function' ? (data as (prev: T | null) => T)(prev.data) : data, + })) + }, []) + + // 自动执行 + useEffect(() => { + if (!manual && service) { + run(...([] as unknown as P)) + } + }, []) // eslint-disable-line + + return { + state, + data: state.data, + loading: state.loading, + error: state.error, + initialized: state.initialized, + run, + runLoading, + cancel, + refresh, + mutate, + params, + } +} diff --git a/src/hooks/useScrollHeight.ts b/src/hooks/useScrollHeight.ts new file mode 100644 index 0000000..1dd2274 --- /dev/null +++ b/src/hooks/useScrollHeight.ts @@ -0,0 +1,24 @@ +import { useState, useEffect } from 'react' +import Taro from '@tarojs/taro' + +/** + * 获取可滚动区域高度,替代 calc(100vh - Npx) + * 小程序不支持 vh/vw 单位,此 hook 动态计算可用高度 + * @param minus 需要减去的高度(rpx 或 px),默认 0 + */ +export function useScrollHeight(minus: number = 0) { + const [height, setHeight] = useState('100vh') + + useEffect(() => { + try { + const systemInfo = Taro.getSystemInfoSync() + // windowHeight 已经减去了导航栏等系统 UI + const available = systemInfo.windowHeight - minus + setHeight(`${available}px`) + } catch { + setHeight('100vh') + } + }, [minus]) + + return height +} diff --git a/src/hooks/useTheme.ts b/src/hooks/useTheme.ts new file mode 100644 index 0000000..d128779 --- /dev/null +++ b/src/hooks/useTheme.ts @@ -0,0 +1,42 @@ +import { useContext } from 'react' +import AppContext from '@/contexts/AppContext' + +export interface ThemeConfig { + /** 当前主题 */ + theme: 'light' | 'dark' + /** 是否为深色模式 */ + isDark: boolean + /** 是否为浅色模式 */ + isLight: boolean + /** 切换主题 */ + toggleTheme: () => void + /** 设置为浅色主题 */ + setLight: () => void + /** 设置为深色主题 */ + setDark: () => void +} + +/** + * 主题 Hook + * 从 AppContext 获取主题状态和切换函数 + */ +export const useTheme = (): ThemeConfig => { + const { theme, toggleTheme } = useContext(AppContext) + + const setLight = () => { + if (theme !== 'light') toggleTheme() + } + + const setDark = () => { + if (theme !== 'dark') toggleTheme() + } + + return { + theme, + isDark: theme === 'dark', + isLight: theme === 'light', + toggleTheme, + setLight, + setDark, + } +} diff --git a/src/hooks/useUser.ts b/src/hooks/useUser.ts new file mode 100644 index 0000000..c91c2ea --- /dev/null +++ b/src/hooks/useUser.ts @@ -0,0 +1,81 @@ +import { useUserContext } from '@/contexts/UserContext' +import { useEffect, useState } from 'react' +import Taro from '@tarojs/taro' +import type { User } from '@/api/system/user/model' +import { loginByOpenId } from '@/api/layout' +import { TenantId } from '@/config/app' + +/** + * useUser - 兼容性 Hook + * 优先使用 UserContext,在未包裹 UserProvider 时降级为本地状态 + */ +export const useUser = () => { + try { + const ctx = useUserContext() + return ctx + } catch { + // 未在 UserProvider 中,使用降级逻辑 + return useUserFallback() + } +} + +/** 降级方案:不依赖 Context 的本地用户状态 */ +const useUserFallback = () => { + const [user, setUser] = useState(null) + const [loading, setLoading] = useState(true) + + const loadFromStorage = () => { + const token = Taro.getStorageSync('access_token') + const userData = Taro.getStorageSync('User') + if (token && userData) { + const parsed = typeof userData === 'string' ? JSON.parse(userData) : userData + setUser(parsed as User) + return true + } + return !!token + } + + const loginUser = (token: string, userInfo: User) => { + Taro.setStorageSync('access_token', token) + Taro.setStorageSync('User', userInfo) + setUser(userInfo) + } + + const logoutUser = () => { + Taro.removeStorageSync('access_token') + Taro.removeStorageSync('User') + setUser(null) + } + + const refreshUser = async () => { + // 降级方案不自动刷新 + return user + } + + const syncFromStorage = (): boolean => { + return loadFromStorage() + } + + useEffect(() => { + const init = async () => { + const hasLocal = loadFromStorage() + if (!hasLocal) { + try { + const data = await new Promise((resolve, reject) => { + Taro.login({ + success: (res) => loginByOpenId({ code: res.code, tenantId: TenantId }).then(resolve).catch(reject), + fail: reject, + }) + }) + if (data?.access_token && data?.user) { + loginUser(data.access_token, data.user) + } + } catch { /* ignore */ } + } + setLoading(false) + } + init() + }, []) + + return { user, isLoggedIn: !!user, loading, loginUser, logoutUser, refreshUser, syncFromStorage } +} diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..c1d7b6c --- /dev/null +++ b/src/index.html @@ -0,0 +1,12 @@ + + + + + + Paopao Taro + <% if (typeof script !== 'undefined' && script) { %><% } %> + + +

+ + diff --git a/src/pages/activity/detail/index.config.ts b/src/pages/activity/detail/index.config.ts new file mode 100644 index 0000000..2fd54bd --- /dev/null +++ b/src/pages/activity/detail/index.config.ts @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: '活动详情', +} diff --git a/src/pages/activity/detail/index.tsx b/src/pages/activity/detail/index.tsx new file mode 100644 index 0000000..9b0c765 --- /dev/null +++ b/src/pages/activity/detail/index.tsx @@ -0,0 +1,245 @@ +import React, { useState, useEffect } from 'react' +import { View, Text, ScrollView, Image } from '@tarojs/components' +import Taro from '@tarojs/taro' +import { getShopActivity, signUpActivity, cancelSignUpActivity, getSignUpStatus } from '@/api/shop/shopActivity' +import type { ShopActivity, ActivityStatus } from '@/api/shop/shopActivity/model' + +definePageConfig({ + navigationBarTitleText: '活动详情', +}) + +const ActivityDetailPage: React.FC = () => { + const { id } = Taro.getCurrentInstance().router?.params || {} + const [activity, setActivity] = useState(null) + const [loading, setLoading] = useState(true) + const [signedUp, setSignedUp] = useState(false) + const [submitting, setSubmitting] = useState(false) + + useEffect(() => { + if (id) { + fetchDetail(Number(id)) + fetchSignUpStatus(Number(id)) + } + }, [id]) + + const fetchDetail = async (activityId: number) => { + try { + const data = await getShopActivity(activityId) + setActivity(data) + } catch (err: any) { + Taro.showToast({ title: err.message || '加载失败', icon: 'none' }) + } finally { + setLoading(false) + } + } + + const fetchSignUpStatus = async (activityId: number) => { + try { + const res = await getSignUpStatus(activityId) + setSignedUp(res.signedUp) + } catch { + // 未登录或接口不可用时忽略 + } + } + + // 报名活动 + const handleSignUp = () => { + if (!activity) return + Taro.showModal({ + title: '确认报名', + content: '确定报名参加该活动吗?', + confirmColor: '#0e932e', + success: async (res) => { + if (res.confirm) { + setSubmitting(true) + try { + await signUpActivity({ activityId: activity.id, userId: 0 }) + setSignedUp(true) + setActivity(prev => prev ? { ...prev, participants: prev.participants + 1 } : prev) + Taro.showToast({ title: '报名成功', icon: 'success' }) + } catch (err: any) { + Taro.showToast({ title: err.message || '报名失败', icon: 'none' }) + } finally { + setSubmitting(false) + } + } + } + }) + } + + // 取消报名 + const handleCancelSignUp = () => { + if (!activity) return + Taro.showModal({ + title: '取消报名', + content: '确定取消报名吗?', + confirmColor: '#ef4444', + success: async (res) => { + if (res.confirm) { + setSubmitting(true) + try { + await cancelSignUpActivity(activity.id) + setSignedUp(false) + setActivity(prev => prev ? { ...prev, participants: Math.max(0, prev.participants - 1) } : prev) + Taro.showToast({ title: '已取消报名', icon: 'success' }) + } catch (err: any) { + Taro.showToast({ title: err.message || '取消失败', icon: 'none' }) + } finally { + setSubmitting(false) + } + } + } + }) + } + + // 分享活动 + const handleShare = () => { + Taro.showToast({ title: '分享功能开发中', icon: 'none' }) + } + + // 获取状态标签 + const getStatusLabel = (status: ActivityStatus) => { + const map: Record = { + upcoming: { label: '未开始', color: 'text-blue-500' }, + ongoing: { label: '进行中', color: 'text-green-500' }, + ended: { label: '已结束', color: 'text-gray-400' }, + cancelled: { label: '已取消', color: 'text-gray-400' }, + } + return map[status] || { label: '未知', color: 'text-gray-400' } + } + + // 格式化时间 + const formatTime = (timeStr: string) => { + const date = new Date(timeStr) + return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}` + } + + if (loading) { + return ( + + 加载中... + + ) + } + + if (!activity) { + return ( + + 活动不存在 + + ) + } + + const statusInfo = getStatusLabel(activity.status) + + return ( + + + {/* 活动头图 */} + {activity.image ? ( + + ) : ( + + 🎉 + + )} + + {/* 活动信息 */} + + + {activity.name} + + {statusInfo.label} + + + + + + 📅 + {formatTime(activity.startTime)} + + + 👥 + {activity.participants}人参与 + + {activity.maxParticipants && ( + + 🔢 + 限{activity.maxParticipants}人 + + )} + + + + {activity.typeName || activity.type} + {activity.description.split('\n')[0]} + + + + {/* 活动详情 */} + + 活动详情 + + {activity.description} + + + + {/* 活动规则 */} + {activity.rules && ( + + 活动规则 + + {activity.rules} + + + )} + + + + + {/* 底部操作栏 */} + + + 分享 + + + {activity.status === 'ongoing' && !signedUp && ( + + {submitting ? '处理中...' : '立即报名'} + + )} + + {activity.status === 'ongoing' && signedUp && ( + + {submitting ? '处理中...' : '取消报名'} + + )} + + {activity.status === 'upcoming' && ( + + 即将开始 + + )} + + {(activity.status === 'ended' || activity.status === 'cancelled') && ( + + 已结束 + + )} + + + ) +} + +export default ActivityDetailPage diff --git a/src/pages/activity/list/index.config.ts b/src/pages/activity/list/index.config.ts new file mode 100644 index 0000000..6b10e16 --- /dev/null +++ b/src/pages/activity/list/index.config.ts @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: '活动列表', +} diff --git a/src/pages/activity/list/index.tsx b/src/pages/activity/list/index.tsx new file mode 100644 index 0000000..c6e4efe --- /dev/null +++ b/src/pages/activity/list/index.tsx @@ -0,0 +1,220 @@ +import React, { useState, useEffect } from 'react' +import { View, Text, ScrollView } from '@tarojs/components' +import Taro from '@tarojs/taro' +import { pageShopActivity, signUpActivity } from '@/api/shop/shopActivity' +import type { ShopActivity, ActivityStatus, ActivityType } from '@/api/shop/shopActivity' +import EmptyState from '@/components/common/EmptyState' +import LoadMore from '@/components/common/LoadMore' + +definePageConfig({ + navigationBarTitleText: '活动列表', +}) + +const ActivityListPage: React.FC = () => { + const [activeTab, setActiveTab] = useState(0) + const [activities, setActivities] = useState([]) + const [loading, setLoading] = useState(false) + const [finished, setFinished] = useState(false) + const [page, setPage] = useState(1) + + useEffect(() => { + setActivities([]) + setPage(1) + setFinished(false) + loadList(1) + }, [activeTab]) + + const loadList = async (p: number) => { + if (loading) return + setLoading(true) + + try { + // 根据 tab 筛选状态 + let status: ActivityStatus | undefined + if (activeTab === 1) status = 'ongoing' + else if (activeTab === 2) status = 'upcoming' + else if (activeTab === 3) status = 'ended' + + const res = await pageShopActivity({ + page: p, + limit: 10, + status, + }) + + if (res?.list) { + if (p === 1) { + setActivities(res.list) + } else { + setActivities(prev => [...prev, ...res.list]) + } + setFinished(res.list.length < 10) + setPage(p) + } + } catch (err) { + console.error('加载活动列表失败', err) + Taro.showToast({ title: '加载失败', icon: 'none' }) + } finally { + setLoading(false) + } + } + + // 加载更多 + const handleLoadMore = () => { + if (!finished && !loading) { + loadList(page + 1) + } + } + + // 报名活动 + const handleSignUp = async (id: number) => { + Taro.showModal({ + title: '确认报名', + content: '确定报名参加该活动吗?', + confirmColor: '#0e932e', + success: async (res) => { + if (res.confirm) { + try { + await signUpActivity({ activityId: id, userId: 0 }) + Taro.showToast({ title: '报名成功', icon: 'success' }) + } catch (err) { + console.error('报名失败', err) + Taro.showToast({ title: '报名失败', icon: 'none' }) + } + } + } + }) + } + + // 获取状态标签 + const getStatusLabel = (status: ActivityStatus) => { + const map: Record = { + 'upcoming': { label: '未开始', color: 'text-blue-500' }, + 'ongoing': { label: '进行中', color: 'text-green-500' }, + 'ended': { label: '已结束', color: 'text-gray-400' }, + 'cancelled': { label: '已取消', color: 'text-gray-400' }, + } + return map[status] || { label: '未知', color: 'text-gray-400' } + } + + // 获取活动类型名称 + const getTypeLabel = (type: ActivityType) => { + const map: Record = { + 'discount': '限时折扣', + 'full_reduction': '满减活动', + 'seckill': '秒杀活动', + 'group_buy': '团购活动', + 'flash_sale': '闪购活动', + } + return map[type] || '其他' + } + + // 格式化时间 + const formatTime = (timeStr: string) => { + const date = new Date(timeStr) + const month = (date.getMonth() + 1).toString().padStart(2, '0') + const day = date.getDate().toString().padStart(2, '0') + const hour = date.getHours().toString().padStart(2, '0') + const minute = date.getMinutes().toString().padStart(2, '0') + return `${month}-${day} ${hour}:${minute}` + } + + return ( + + {/* Tab 栏 */} + + {['全部', '进行中', '未开始', '已结束'].map((tab, index) => ( + setActiveTab(index)} + > + {tab} + {activeTab === index && ( + + )} + + ))} + + + {/* 活动列表 */} + + + {activities.length === 0 && !loading ? ( + + ) : ( + activities.map(activity => ( + (() => { + const statusInfo = getStatusLabel(activity.status) + return ( + Taro.navigateTo({ url: `/pages/activity/detail/index?id=${activity.id}` })}> + {/* 活动图片 */} + + 🎉 + + + {/* 活动信息 */} + + + {activity.name} + + {statusInfo.label} + + + {activity.description} + + + + 📅 + {formatTime(activity.startTime)} + + + 👥 + {activity.participants}人参与 + + + + + {/* 活动类型标签 */} + + + {getTypeLabel(activity.type)} + + + {activity.status === 'ongoing' && ( + handleSignUp(activity.id)} + > + 立即报名 + + )} + {activity.status === 'upcoming' && ( + Taro.navigateTo({ url: `/pages/activity/detail/index?id=${activity.id}` })} + > + 查看详情 + + )} + + + ) + })() + )) + )} + + + + + + ) +} + +export default ActivityListPage diff --git a/src/pages/after-sale/apply/index.config.ts b/src/pages/after-sale/apply/index.config.ts new file mode 100644 index 0000000..716b532 --- /dev/null +++ b/src/pages/after-sale/apply/index.config.ts @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: '申请售后', +} diff --git a/src/pages/after-sale/apply/index.tsx b/src/pages/after-sale/apply/index.tsx new file mode 100644 index 0000000..593e9f4 --- /dev/null +++ b/src/pages/after-sale/apply/index.tsx @@ -0,0 +1,251 @@ +import React, { useState } from 'react' +import { View, Text, Textarea, ScrollView, Radio, RadioGroup, Checkbox, Input } from '@tarojs/components' +import Taro from '@tarojs/taro' +import { applyAfterSale } from '@/api/shop/shopAfterSale' +import type { AfterSaleType } from '@/api/shop/shopAfterSale' + +definePageConfig({ + navigationBarTitleText: '申请售后', +}) + +const AfterSaleApplyPage: React.FC = () => { + const params = Taro.getCurrentInstance().router?.params || {} + const orderId = params.orderId || '' + const [orderGoods, setOrderGoods] = useState>([]) + const [saleType, setSaleType] = useState(1) // 1:退款, 2:退货退款, 3:换货 + const [submitting, setSubmitting] = useState(false) + const [reason, setReason] = useState('') + const [amount, setAmount] = useState('') + const [description, setDescription] = useState('') + const [images, setImages] = useState([]) + + // 退款原因选项 + const refundReasons = ['商品质量问题', '商品与描述不符', '商品破损/缺陷', '物流问题', '其他'] + const returnReasons = ['商品质量问题', '商品与描述不符', '商品破损/缺陷', '尺码/颜色不合适', '不喜欢/不想要', '其他'] + const exchangeReasons = ['商品质量问题', '商品与描述不符', '商品破损/缺陷', '尺码/颜色不合适', '其他'] + + // 获取当前原因列表 + const getCurrentReasons = () => { + if (saleType === 1) return refundReasons + if (saleType === 2) return returnReasons + return exchangeReasons + } + + // 处理商品选择 + const handleGoodsCheck = (id: number) => { + setOrderGoods(prev => + prev.map(g => g.id === id ? { ...g, checked: !g.checked } : g) + ) + } + + // 选择图片 + const handleChooseImage = () => { + if (images.length >= 6) { + Taro.showToast({ title: '最多上传6张图片', icon: 'none' }) + return + } + Taro.chooseImage({ + count: 6 - images.length, + success: (res) => { + setImages(prev => [...prev, ...res.tempFilePaths]) + } + }) + } + + // 删除图片 + const handleDeleteImage = (index: number) => { + setImages(prev => prev.filter((_, i) => i !== index)) + } + + // 提交申请 + const handleSubmit = () => { + const checkedGoods = orderGoods.filter(g => g.checked) + if (!reason) { + Taro.showToast({ title: '请选择原因', icon: 'none' }) + return + } + if (saleType === 1 && !amount) { + Taro.showToast({ title: '请输入退款金额', icon: 'none' }) + return + } + + const typeMap: Record = { + 1: 'refund', + 2: 'return', + 3: 'exchange', + } + + Taro.showModal({ + title: '确认提交', + content: '确定提交售后申请吗?', + confirmColor: '#0e932e', + success: async (res) => { + if (res.confirm) { + setSubmitting(true) + Taro.showLoading({ title: '提交中...' }) + try { + await applyAfterSale({ + orderId, + type: typeMap[saleType], + reason, + description, + amount: saleType === 1 ? Number(amount) : undefined, + evidenceImages: images, + goodsItems: checkedGoods.map(g => ({ goodsId: String(g.id), quantity: g.num })), + }) + Taro.hideLoading() + Taro.showToast({ title: '提交成功', icon: 'success' }) + setTimeout(() => Taro.navigateBack(), 1500) + } catch (err: any) { + Taro.hideLoading() + Taro.showToast({ title: err.message || '提交失败', icon: 'none' }) + } finally { + setSubmitting(false) + } + } + } + }) + } + + return ( + + + {/* 订单商品 */} + + 选择商品 + {orderGoods.map(goods => ( + handleGoodsCheck(goods.id)} + > + + + 🛍️ + + + {goods.name} + ¥{goods.price} × {goods.num} + + + ))} + + + {/* 售后类型 */} + + 售后类型 + setSaleType(parseInt(e.detail.value))}> + + + + 仅退款 + + + + 退货退款 + + + + 换货 + + + + + + {/* 退款金额 */} + {saleType === 1 && ( + + 退款金额 + + ¥ + setAmount(e.detail.value)} + placeholder='请输入退款金额' + className='flex-1' + /> + + 最多可退 ¥134.00 + + )} + + {/* 售后原因 */} + + 售后原因 + + {getCurrentReasons().map((r, index) => ( + setReason(r)} + > + + {r} + + + ))} + + + + {/* 问题描述 */} + + 问题描述 +

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пn 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⁡FGxaIy2<&gC3pYu}b*%}1`V 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 literal 0 HcmV?d00001 diff --git a/.workbuddy/memory/2026-05-14.md b/.workbuddy/memory/2026-05-14.md new file mode 100644 index 0000000..ac22588 --- /dev/null +++ b/.workbuddy/memory/2026-05-14.md @@ -0,0 +1,38 @@ +# 2026-05-14 工作记录 + +## 项目清理 +- 删除根目录临时文件:DEV_SUMMARY.md, API_INTEGRATION.md, fix_quotes.py, rewrite_files.py, test-data.sql, test-report.md, yarn.lock +- 删除docs目录下的paopao相关开发测试文件(保留需求文档) +- 项目现已清理完成,只保留必要的源代码和配置文件 + +## 功能分析 +- 对照功能清单(2023-10-01)进行了全面的功能需求 vs 代码实现对比分析 +- 结论:15个功能模块中12个完整实现,1个部分实现(首页弹窗),2个需补充(积分模块假数据、文章详情空壳) +- 覆盖率约92%,额外超预期实现了拼团/秒杀/门店预约/礼品卡/发票/分销推广等模块 +- 发现8项技术债需修复 + +## 商品数据导入SQL(修正版) +- 从客户提供的Excel(12个品牌:膳魔师/虎牌/象印/万仟堂/永丰源/八马/华祥苑/TAIC太可/爱华仕/北鼎/乐扣乐扣/康宁)中提取了**1444个商品数据** +- **v1 SQL 执行报错原因分析**: + 1. 字段名用错:`goods_name`应为`name`,`goods_code`应为`code`,`market_price`应为`originPrice`,缺少`categoryId`字段 + 2. Step3的UPDATE语句全部被注释掉但仍被解析执行 + 3. 第一个sheet是目录汇总页被误当作商品数据导入 + 4. 价格列提取逻辑有误导致大量0值 +- **v2/v3 修正版已生成**:`docs/goods_import_tenant_10606_v2.sql` + - 使用正确的 shop_goods 表字段:name/code/content/price/originPrice/categoryId/isShow/deleted/tenant_id + - categoryId 通过子查询直接在 INSERT 时关联,无需后续 UPDATE + - 跳过 Excel 目录页和无效行(报价索取/LOGO等) + - 价格从多列数值智能提取(最小值为 price,最大值为 originPrice) + - 分类中文名称已修正为正确文字 + - 共8个 INSERT 批次,1478行,418KB +- 品牌到分类的映射:虎牌/象印/万仟堂/膳魔师/TAIC太可/乐扣乐扣→茶具厨具(CJJJ,931件);永丰源/八马/华祥苑→商务文创(SWWC,265件);北鼎/康宁→家用电器(JDDQ,179件);爱华仕→箱包皮具(XLPB,69件) +- **重要**:执行前必须确保18个分类SQL(category_insert_tenant_10606.sql)已先执行成功 + +## 商品数据导入完成(直连数据库) +- 通过 pymysql 直连远程 MySQL(47.119.165.234:13308/db_paopao)导入 +- **最终结果:1446 件商品全部导入成功,0 错误** +- 数据库真实字段名:`goods_id`(PK), `name`, `code`, `price`, `sale_price`(原价), `content`, `files`(NOT NULL), `is_show`, `status`, `category_id`, `tenant_id` +- 注意:前端TS模型中的 `originPrice` 对应数据库的 `sale_price`,`categoryId` 对应 `category_id` +- 分类分布:茶具厨具(CJJJ,931件) / 商务文创(SWWC,265件) / 家用电器(JDDQ,181件) / 箱包皮具(XLPB,69件) +- 价格分布:1433件有价格数据,13件价格为0(Excel中无价格信息) +- category_id 映射:CJJJ=10326, JDDQ=10327, JJCP=10328, SWWC=10329, XLPB=10330 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e2635d5 --- /dev/null +++ b/README.md @@ -0,0 +1,263 @@ +# Paopao Taro - 项目框架 + +基于 Taro 4.0.8 + React 18.3.1 + TypeScript 5.7.2 的跨端开发框架 + +## 📦 技术栈 + +### 核心框架 +- **Taro**: `4.0.8` - 跨端开发框架 +- **React**: `18.3.1` - UI 框架 +- **TypeScript**: `5.7.2` - 类型系统 + +### UI 组件库 +- **NutUI React Taro**: `2.7.4` - 京东风格的 Taro React 组件库 +- **NutUI Icons**: `^1.0.0` - 图标库 + +### 样式方案 +- **Sass**: `^1.81.0` - CSS 预处理器 +- **TailwindCSS**: `3.4.17` - 原子化 CSS 框架 + +### 状态管理 +- **React Hooks** - 内置 Hooks +- **Context API** - 跨组件状态共享 + +### 工具库 +- **Day.js**: `^1.11.13` - 日期处理 +- **Crypto-js**: `^4.2.0` - 加密解密 +- **React Router DOM**: `^6.28.0` - 路由管理 + +## 🚀 快速开始 + +### 安装依赖 + +```bash +# 使用 npm +npm install + +# 使用 yarn +yarn install + +# 使用 pnpm +pnpm install +``` + +### 开发模式 + +```bash +# 微信小程序 +npm run dev:weapp + +# H5 +npm run dev:h5 + +# 支付宝小程序 +npm run dev:alipay + +# 百度小程序 +npm run dev:swan + +# 字节跳动小程序 +npm run dev:tt + +# QQ 小程序 +npm run dev:qq +``` + +### 生产构建 + +```bash +# 微信小程序 +npm run build:weapp + +# H5 +npm run build:h5 + +# 其他平台类似 +npm run build:[platform] +``` + +## 📁 项目结构 + +``` +shop-taro/ +├── config/ # Taro 配置文件 +│ ├── index.ts # 主配置 +│ ├── dev.ts # 开发配置 +│ └── prod.ts # 生产配置 +├── src/ # 源代码 +│ ├── app.config.ts # 应用配置(页面路由、tabBar等) +│ ├── app.tsx # 应用入口 +│ ├── app.scss # 全局样式 +│ ├── pages/ # 页面目录 +│ │ ├── index/ # 首页 +│ │ │ ├── index.tsx +│ │ │ ├── index.scss +│ │ │ └── index.config.ts +│ │ └── home/ # 个人中心页 +│ │ ├── home.tsx +│ │ ├── home.scss +│ │ └── home.config.ts +│ ├── components/ # 自定义组件 +│ ├── contexts/ # Context API +│ │ └── AppContext.tsx # 应用上下文 +│ ├── hooks/ # 自定义 Hooks +│ │ └── useAppContext.ts +│ ├── utils/ # 工具函数 +│ │ └── index.ts # 常用工具(日期、加密、防抖节流等) +│ ├── types/ # TypeScript 类型定义 +│ │ └── global.d.ts # 全局类型声明 +│ ├── styles/ # 样式文件 +│ └── assets/ # 静态资源 +│ └── tabbar/ # tabBar 图标 +├── package.json # 项目依赖 +├── tsconfig.json # TypeScript 配置 +├── tailwind.config.js # TailwindCSS 配置 +├── postcss.config.js # PostCSS 配置 +├── project.config.json # 小程序项目配置 +└── README.md # 项目说明 +``` + +## ✨ 特性 + +### 1. 主题切换 +- 支持浅色/深色模式切换 +- 使用 Context API 管理主题状态 +- 暗黑模式适配 + +### 2. NutUI 组件库 +- 已集成 @nutui/nutui-react-taro@2.7.4 +- 支持按需引入 +- 中文国际化配置 + +### 3. TailwindCSS 集成 +- 支持原子化 CSS 编写 +- 暗黑模式支持(dark mode) +- 自定义主题色配置 + +### 4. 工具函数封装 +- **日期处理**: 基于 Day.js 的格式化 +- **加密解密**: MD5、AES 加密 +- **性能优化**: 防抖、节流函数 +- **数据操作**: 深拷贝等工具 + +### 5. TypeScript 支持 +- 完整的类型定义 +- 路径别名配置 `@/*` +- 严格模式开启 + +## 🎨 代码示例 + +### 使用 NutUI 组件 + +```tsx +import { Button, Cell, CellGroup } from '@nutui/nutui-react-taro' + +export default function MyPage() { + return ( + + + + + ) +} +``` + +### 使用 TailwindCSS + +```tsx + + + 暗黑模式适配文本 + + +``` + +### 使用 Context 管理状态 + +```tsx +import { useAppContext } from '@/hooks/useAppContext' + +export default function MyPage() { + const { theme, toggleTheme } = useAppContext() + + return ( + + ) +} +``` + +### 使用工具函数 + +```tsx +import { formatDate, md5, debounce } from '@/utils' + +// 日期格式化 +const dateStr = formatDate(new Date()) + +// MD5 加密 +const encrypted = md5('hello world') + +// 防抖 +const handleSearch = debounce((keyword) => { + console.log(keyword) +}, 500) +``` + +## 📝 开发规范 + +### 文件命名 +- 页面目录: `kebab-case` (如 `user-profile/`) +- 组件文件: `PascalCase` (如 `UserProfile.tsx`) +- 工具文件: `camelCase` (如 `formatDate.ts`) + +### 代码风格 +- 使用 ESLint + @typescript-eslint 进行代码检查 +- 使用 2 空格缩进 +- 分号结尾 +- 单引号优先 + +### 提交规范 +``` +feat: 新功能 +fix: 修复 bug +docs: 文档更新 +style: 代码格式调整 +refactor: 重构 +test: 测试相关 +chore: 构建/工具配置 +``` + +## 🔧 常见问题 + +### 1. TailwindCSS 样式不生效? +检查 `postcss.config.js` 配置,确保已安装 `postcss-nested`。 + +### 2. NutUI 组件样式丢失? +确保在 `app.scss` 中引入了 NutUI 样式: +```scss +@import '@nutui/nutui-react-taro/dist/styles/vitamin.css'; +``` + +### 3. TypeScript 路径别名报错? +检查 `tsconfig.json` 的 `paths` 配置,并确保 IDE 正确识别。 + +## 📚 相关文档 + +- [Taro 官方文档](https://taro-docs.jd.com/) +- [React 官方文档](https://react.dev/) +- [NutUI React 文档](https://nutui.jd.com/react-taro/) +- [TailwindCSS 文档](https://tailwindcss.com/docs) +- [TypeScript 文档](https://www.typescriptlang.org/docs/) + +## 📄 License + +MIT + +--- + +**构建时间**: 2026-05-10 +**作者**: Senior Developer diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..f0c7103 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,11 @@ +module.exports = { + "presets": [ + ["taro", { + "framework": "react", + "ts": true + }] + ], + "plugins": [ + "@babel/plugin-transform-runtime" + ] +} diff --git a/config/app.ts b/config/app.ts new file mode 100644 index 0000000..f0653f3 --- /dev/null +++ b/config/app.ts @@ -0,0 +1,7 @@ +import { API_BASE_URL, SERVER_API_URL } from './env' + +export const TenantId = '10610' +export const TenantName = '鑫龙家电' +export const BaseUrl = API_BASE_URL +export const ServerBaseUrl = SERVER_API_URL +export const Version = 'v1.0.0' diff --git a/config/dev.ts b/config/dev.ts new file mode 100644 index 0000000..06fc7a2 --- /dev/null +++ b/config/dev.ts @@ -0,0 +1,17 @@ +export default { + env: { + NODE_ENV: '"development"' + }, + defineConstants: { + __DEV__: JSON.stringify(true) + }, + mini: {}, + h5: { + devServer: { + host: 'localhost', + port: 10086, + hot: true, + open: false + } + } +} diff --git a/config/env.js b/config/env.js new file mode 100644 index 0000000..a51cd45 --- /dev/null +++ b/config/env.js @@ -0,0 +1,28 @@ +const CURRENT_ENV = process.env.NODE_ENV === 'production' ? 'production' : 'development' + +export const ENV_CONFIG = { + development: { + API_BASE_URL: 'https://shop-api.websoft.top/api', + SERVER_API_URL: 'https://server.websoft.top/api', + APP_NAME: '鑫龙家电', + DEBUG: 'true', + }, + test: { + API_BASE_URL: 'https://shop-api.websoft.top/api', + SERVER_API_URL: 'https://server.websoft.top/api', + APP_NAME: '鑫龙家电', + DEBUG: 'true', + }, + production: { + API_BASE_URL: 'https://shop-api.websoft.top/api', + SERVER_API_URL: 'https://server.websoft.top/api', + APP_NAME: '鑫龙家电', + DEBUG: 'false', + }, +} + +export function getEnvConfig() { + return ENV_CONFIG[CURRENT_ENV] || ENV_CONFIG.development +} + +export const { API_BASE_URL, SERVER_API_URL, APP_NAME, DEBUG } = getEnvConfig() diff --git a/config/index.ts b/config/index.ts new file mode 100644 index 0000000..feb34aa --- /dev/null +++ b/config/index.ts @@ -0,0 +1,120 @@ +import { defineConfig, type UserConfigExport } from '@tarojs/cli' +import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin' +import { UnifiedWebpackPluginV5 } from 'weapp-tailwindcss/webpack' +import devConfig from './dev' +import prodConfig from './prod' +import path from 'path' +import { getEnvConfig } from './env.js' + +// https://taro-docs.jd.com/docs/next/config +export default defineConfig<'webpack5'>(async (merge, { mode }) => { + const baseConfig: UserConfigExport<'webpack5'> = { + // 项目配置 + projectName: 'shop-taro', + date: '2026-5-10', + designWidth: 750, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2 + }, + sourceRoot: 'src', + outputRoot: 'dist', + plugins: [ + '@tarojs/plugin-platform-weapp', + '@tarojs/plugin-platform-h5' + ], + + // 编译配置 + defineConstants: { + API_BASE_URL: JSON.stringify(getEnvConfig().API_BASE_URL), + SERVER_API_URL: JSON.stringify(getEnvConfig().SERVER_API_URL), + APP_NAME: JSON.stringify(getEnvConfig().APP_NAME), + DEBUG: JSON.stringify(getEnvConfig().DEBUG), + }, + copy: { + patterns: [], + options: {} + }, + framework: 'react', + compiler: { + type: 'webpack5', + prebundle: { + enable: false + } + }, + // 开启持久化缓存 - 有效提升二次编译速度 + cache: { + enable: false, + type: 'filesystem', + cacheDirectory: path.resolve(__dirname, '../.webpack-cache'), + buildDependencies: { + config: [__filename] + } + }, + + // 小程序配置 + mini: { + postcss: { + pxtransform: { + enable: true, + config: {} + }, + url: { + enable: true, + config: { + limit: 1024 + } + }, + cssModules: { + enable: false, + config: { + namingPattern: 'module', + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + }, + webpackChain(chain) { + chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin) + // weapp-tailwindcss: 自动处理 TailwindCSS 与 WXSS 的兼容性 + chain.merge({ + plugin: { + 'weapp-tailwindcss': { + plugin: UnifiedWebpackPluginV5, + args: [{ + appType: 'taro', + rem2rpx: true, + }] + } + } + }) + } + }, + + // H5 配置 + h5: { + publicPath: '/', + staticDirectory: 'static', + postcss: { + autoprefixer: { + enable: true + }, + cssModules: { + enable: false, + config: { + namingPattern: 'module', + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + }, + webpackChain(chain) { + chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin) + } + }, + } + + if (mode === 'development') { + return merge({}, baseConfig, devConfig) + } + return merge({}, baseConfig, prodConfig) +}) diff --git a/config/prod.ts b/config/prod.ts new file mode 100644 index 0000000..1de3f8f --- /dev/null +++ b/config/prod.ts @@ -0,0 +1,12 @@ +export default { + env: { + NODE_ENV: '"production"' + }, + defineConstants: { + __DEV__: JSON.stringify(false) + }, + mini: { + compressTemplate: true + }, + h5: {} +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6a76087 --- /dev/null +++ b/package.json @@ -0,0 +1,90 @@ +{ + "name": "shop-taro", + "version": "1.0.0", + "private": true, + "description": "Taro + React + TypeScript 项目框架", + "browserslist": [ + "last 3 versions", + "Android >= 4.1", + "ios >= 8" + ], + "scripts": { + "build:weapp": "taro build --type weapp", + "build:swan": "taro build --type swan", + "build:alipay": "taro build --type alipay", + "build:tt": "taro build --type tt", + "build:h5": "taro build --type h5", + "build:rn": "taro build --type rn", + "build:qq": "taro build --type qq", + "build:jd": "taro build --type jd", + "build:quickapp": "taro build --type quickapp", + "dev:weapp": "npm run build:weapp -- --watch", + "dev:swan": "npm run build:swan -- --watch", + "dev:alipay": "npm run build:alipay -- --watch", + "dev:tt": "npm run build:tt -- --watch", + "dev:h5": "npm run build:h5 -- --watch", + "dev:rn": "npm run build:rn -- --watch", + "dev:qq": "npm run build:qq -- --watch", + "dev:jd": "npm run build:jd -- --watch", + "dev:quickapp": "npm run build:quickapp -- --watch", + "lint": "eslint src --fix --ext .ts,.tsx", + "type-check": "tsc --noEmit" + }, + "dependencies": { + "@nutui/icons-react-taro": "^2.0.1", + "@nutui/nutui-biz": "1.0.0-beta.2", + "@nutui/nutui-react": "^3.0.16", + "@nutui/nutui-react-taro": "2.7.4", + "@tarojs/components": "4.1.11", + "@tarojs/plugin-framework-react": "4.1.11", + "@tarojs/plugin-platform-h5": "4.0.8", + "@tarojs/plugin-platform-weapp": "4.1.11", + "@tarojs/react": "4.1.11", + "@tarojs/runtime": "4.1.11", + "@tarojs/shared": "4.1.11", + "@tarojs/taro": "4.1.11", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.13", + "echarts-taro3-react": "^1.0.13", + "js-base64": "^3.7.7", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-markdown": "^10.1.0", + "react-router-dom": "^7.1.1", + "weapp-qrcode": "^1.0.0" + }, + "devDependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/preset-react": "^7.26.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", + "@tarojs/cli": "4.1.11", + "@tarojs/taro-loader": "4.1.11", + "@tarojs/webpack5-runner": "4.1.11", + "@types/node": "^18.19.68", + "@types/react": "^18.3.12", + "@types/webpack-env": "^1.18.5", + "@typescript-eslint/eslint-plugin": "^8.15.0", + "@typescript-eslint/parser": "^8.15.0", + "autoprefixer": "^10.4.20", + "babel-preset-taro": "4.0.8", + "eslint": "^8.56.0", + "eslint-config-taro": "4.0.8", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^4.6.2", + "mysql2": "^3.22.3", + "postcss": "^8.4.49", + "react-refresh": "^0.14.0", + "stylelint": "^14.16.1", + "tailwindcss": "3.4.17", + "ts-node": "^10.9.2", + "tsconfig-paths-webpack-plugin": "^4.2.0", + "typescript": "5.7.2", + "weapp-tailwindcss": "^4.12.0", + "webpack": "5.78.0" + }, + "engines": { + "node": ">=18" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..8dfc8da --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,18401 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@nutui/icons-react-taro': + specifier: ^2.0.1 + version: 2.0.1 + '@nutui/nutui-biz': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(mobx@6.15.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@nutui/nutui-react': + specifier: ^3.0.16 + version: 3.0.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@nutui/nutui-react-taro': + specifier: 2.7.4 + version: 2.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tarojs/components': + specifier: 4.1.11 + version: 4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/plugin-framework-react': + specifier: 4.1.11 + version: 4.1.11(@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)(react@18.3.1)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/plugin-platform-h5': + specifier: 4.0.8 + version: 4.0.8(ba4b9791add9953ad11afd4559cbd5fc) + '@tarojs/plugin-platform-weapp': + specifier: 4.1.11 + version: 4.1.11(@tarojs/service@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11) + '@tarojs/react': + specifier: 4.1.11 + version: 4.1.11(react@18.3.1) + '@tarojs/runtime': + specifier: 4.1.11 + version: 4.1.11 + '@tarojs/shared': + specifier: 4.1.11 + version: 4.1.11 + '@tarojs/taro': + specifier: 4.1.11 + version: 4.1.11(@tarojs/components@4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + dayjs: + specifier: ^1.11.13 + version: 1.11.20 + echarts-taro3-react: + specifier: ^1.0.13 + version: 1.0.13 + js-base64: + specifier: ^3.7.7 + version: 3.7.8 + react: + specifier: 18.3.1 + version: 18.3.1 + react-dom: + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) + react-markdown: + specifier: ^10.1.0 + version: 10.1.0(@types/react@18.3.28)(react@18.3.1) + react-router-dom: + specifier: ^7.1.1 + version: 7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + weapp-qrcode: + specifier: ^1.0.0 + version: 1.0.0 + devDependencies: + '@babel/core': + specifier: ^7.26.0 + version: 7.29.0 + '@babel/plugin-proposal-class-properties': + specifier: ^7.18.6 + version: 7.18.6(@babel/core@7.29.0) + '@babel/preset-react': + specifier: ^7.26.0 + version: 7.28.5(@babel/core@7.29.0) + '@pmmmwh/react-refresh-webpack-plugin': + specifier: ^0.5.15 + version: 0.5.17(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/cli': + specifier: 4.1.11 + version: 4.1.11(@swc/helpers@0.5.21)(@types/node@18.19.130) + '@tarojs/taro-loader': + specifier: 4.1.11 + version: 4.1.11(@swc/helpers@0.5.21)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/webpack5-runner': + specifier: 4.1.11 + version: 4.1.11(@babel/core@7.29.0)(@swc/core@1.3.96(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@tarojs/runtime@4.1.11)(less@3.13.1)(postcss@8.5.14)(sass@1.99.0)(stylus@0.64.0)(typescript@5.7.2)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@types/node': + specifier: ^18.19.68 + version: 18.19.130 + '@types/react': + specifier: ^18.3.12 + version: 18.3.28 + '@types/webpack-env': + specifier: ^1.18.5 + version: 1.18.8 + '@typescript-eslint/eslint-plugin': + specifier: ^8.15.0 + version: 8.59.2(@typescript-eslint/parser@8.59.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/parser': + specifier: ^8.15.0 + version: 8.59.2(eslint@8.57.1)(typescript@5.7.2) + autoprefixer: + specifier: ^10.4.20 + version: 10.5.0(postcss@8.5.14) + babel-preset-taro: + specifier: 4.0.8 + version: 4.0.8(@babel/core@7.29.0)(@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0))(@babel/preset-react@7.28.5(@babel/core@7.29.0))(@swc/helpers@0.5.21)(react-refresh@0.14.2) + eslint: + specifier: ^8.56.0 + version: 8.57.1 + eslint-config-taro: + specifier: 4.0.8 + version: 4.0.8(@babel/core@7.29.0)(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1)(typescript@5.7.2) + eslint-plugin-import: + specifier: ^2.31.0 + version: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1) + eslint-plugin-react: + specifier: ^7.37.2 + version: 7.37.5(eslint@8.57.1) + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.1) + mysql2: + specifier: ^3.22.3 + version: 3.22.3(@types/node@18.19.130) + postcss: + specifier: ^8.4.49 + version: 8.5.14 + react-refresh: + specifier: ^0.14.0 + version: 0.14.2 + stylelint: + specifier: ^14.16.1 + version: 14.16.1 + tailwindcss: + specifier: 3.4.17 + version: 3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2)) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2) + tsconfig-paths-webpack-plugin: + specifier: ^4.2.0 + version: 4.2.0 + typescript: + specifier: 5.7.2 + version: 5.7.2 + weapp-tailwindcss: + specifier: ^4.12.0 + version: 4.12.0(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2))) + webpack: + specifier: 5.78.0 + version: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + +packages: + + '@adobe/css-tools@4.3.3': + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + + '@ast-core/escape@1.0.1': + resolution: {integrity: sha512-/kVjBkDzYrSW1S+gTBCuOfhnNkge9qZFJgLT+MOZdmPN4Vts36S60uU5br3ozoxpJ1eRGe6pGy7/EfcOpFFHlA==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.28.6': + resolution: {integrity: sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.3': + resolution: {integrity: sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.18.6': + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + 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.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + 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.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + 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.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + 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.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} + 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-safari-rest-destructuring-rhs-array@7.29.3': + resolution: {integrity: sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==} + 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.28.6': + resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.29.0': + resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.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-decorators@7.28.6': + resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.28.6': + resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + 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.29.0': + resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} + 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.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.28.6': + resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} + 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.29.0': + resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==} + 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-explicit-resource-management@7.28.6': + resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.28.6': + resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} + 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.28.6': + resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} + 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.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} + 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.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.4': + resolution: {integrity: sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==} + 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.29.0': + resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} + 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.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} + 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.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} + 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-react-display-name@7.28.0': + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.0': + resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.28.6': + resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} + 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-runtime@7.29.0': + resolution: {integrity: sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==} + 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.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} + 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.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + 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.28.6': + resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} + 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.28.6': + resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.5': + resolution: {integrity: sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==} + 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/preset-react@7.28.5': + resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime-corejs3@7.29.2': + resolution: {integrity: sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@bem-react/classname@1.8.0': + resolution: {integrity: sha512-uazGRFKTMNbGR8KLvEh5qT+aP0yuym+sB+YFFaAyCkFodtjI0SskV6BfkiZ9+E3FloIFYPkwqJ1owxp48WCS9g==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@csstools/cascade-layer-name-parser@2.0.5': + resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/postcss-alpha-function@1.0.1': + resolution: {integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-cascade-layers@5.0.2': + resolution: {integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-function-display-p3-linear@1.0.1': + resolution: {integrity: sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-function@4.0.12': + resolution: {integrity: sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-function@3.0.12': + resolution: {integrity: sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2': + resolution: {integrity: sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-content-alt-text@2.0.8': + resolution: {integrity: sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-contrast-color-function@2.0.12': + resolution: {integrity: sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-exponential-functions@2.0.9': + resolution: {integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-font-format-keywords@4.0.0': + resolution: {integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gamut-mapping@2.0.11': + resolution: {integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gradients-interpolation-method@5.0.12': + resolution: {integrity: sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-hwb-function@4.0.12': + resolution: {integrity: sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-ic-unit@4.0.4': + resolution: {integrity: sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-initial@2.0.1': + resolution: {integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-is-pseudo-class@5.0.3': + resolution: {integrity: sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-light-dark-function@2.0.11': + resolution: {integrity: sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-float-and-clear@3.0.0': + resolution: {integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overflow@2.0.0': + resolution: {integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0': + resolution: {integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-resize@3.0.0': + resolution: {integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-viewport-units@3.0.4': + resolution: {integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-minmax@2.0.9': + resolution: {integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5': + resolution: {integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-nested-calc@4.0.0': + resolution: {integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-normalize-display-values@4.0.1': + resolution: {integrity: sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-oklab-function@4.0.12': + resolution: {integrity: sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-position-area-property@1.0.0': + resolution: {integrity: sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-progressive-custom-properties@4.2.1': + resolution: {integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-property-rule-prelude-list@1.0.0': + resolution: {integrity: sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-random-function@2.0.1': + resolution: {integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-relative-color-syntax@3.0.12': + resolution: {integrity: sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-scope-pseudo-class@4.0.1': + resolution: {integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-sign-functions@1.1.4': + resolution: {integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-stepped-value-functions@4.0.9': + resolution: {integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-syntax-descriptor-syntax-production@1.0.1': + resolution: {integrity: sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-system-ui-font-family@1.0.0': + resolution: {integrity: sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-text-decoration-shorthand@4.0.3': + resolution: {integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-trigonometric-functions@4.0.9': + resolution: {integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-unset-value@4.0.0': + resolution: {integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/selector-resolve-nested@3.1.0': + resolution: {integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/selector-specificity@2.2.0': + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/utilities@2.0.0': + resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + 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.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.41.0': + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@26.6.2': + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@napi-rs/triples@1.2.0': + resolution: {integrity: sha512-HAPjR3bnCsdXBsATpDIP5WCrw0JcACwhhrwIAQhiR46n+jm+a2F8kBsfseAuWtSyQ+H3Yebt2k43B5dy+04yMA==} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@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'} + + '@nutui/icons-react-taro@1.0.5': + resolution: {integrity: sha512-p7dCW29wASH/qQ1OaUGGKA6PRV33wDPb80+qrHnWtT40syIb0W+e92mpplbULWM01s+GYVGyUU3i8b7Iy7qfvw==} + + '@nutui/icons-react-taro@2.0.1': + resolution: {integrity: sha512-/DYmt8Rfp0NGx37/67Nd+k85zB2sJMLjlJiLpLbKxXk75SY0inwka51HhgawFTUk53zeta0CH/sDscTZdN005w==} + + '@nutui/icons-react@3.0.2-beta.5': + resolution: {integrity: sha512-V822q4Q2Refx/PvyBA+W8lZWXhwl+ZpNbqtorckqS7FZaKi5yKY94bd8iwO/U+Q60pUdHPzjScrGMpmZPGTeFQ==} + + '@nutui/jdesign-icons-react-taro@1.0.6-beta.2': + resolution: {integrity: sha512-2Scz5c9o14gA7Mw5JdiEkc/KEbNlNWMcJMuqVyFVipYeeYN/118N/fvHVpocmJviN0Gc4P+u3ZB3dIQSA2j4Fw==} + + '@nutui/lottie-miniprogram@1.0.2': + resolution: {integrity: sha512-6xV+uW8VK1hT8QfjqfNlURTiQijb/dEEl/AeOudMwOB55Fr2+TdxoOAks5d8vnYBTYDZyOUlcsGNgoAkXKz8Qg==} + + '@nutui/nutui-biz@1.0.0-beta.2': + resolution: {integrity: sha512-rU+a6LRafxaoT6eGCR5mgKF0Bm9A4G2gimgw1gGj8U8Ln2W6Nyvs9sQKtZZftuvzQXmtZOO7uHoHZ4sg6rLbhw==} + engines: {node: ^14.18.0 || >=15.0.0} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@nutui/nutui-react-taro@1.5.13': + resolution: {integrity: sha512-vENBS4WLenb3HxUruTfHlkBKOTLWKFwuaKVczs2TUfU0D8yFHvS2FISX8f3iNlHUslG+TIlyKVIH/yBlMjzzWA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@nutui/nutui-react-taro@2.7.4': + resolution: {integrity: sha512-r47l2rkY5HbObyTHxt2ZCTMKolM+v9CxX7QwSQGyuVRCi5G5cwPbSEz3NucvWGyZ69NaD3XA4Oc2LumLhaHmGg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@nutui/nutui-react@1.5.13': + resolution: {integrity: sha512-3UPhPTMMHQdv0aEVQ+gcv2A3MLvldyKTEeizlAS5YgRxplrvVy2oFOfItzUmxwc+zKZd6noUYp1cSr/cq9w8Tw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@nutui/nutui-react@3.0.19': + resolution: {integrity: sha512-BPa/TWXrioxXntrsRmtu5Gm8WtyBGeo1hC9DJj9KpqlHsEoNIkFm+HiQr9cUmUnmYBqW1DTvyOIvEAEaJVQ1mQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@nutui/touch-emulator@1.0.0': + resolution: {integrity: sha512-k2hvI/9LlRA7Ph1Chni27pTuvPmKPt+/I10sWWd2sWzqiCOYRerD79eIwCMRGUF/q6WVDEKVnv00t9CEUL4sPA==} + + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pmmmwh/react-refresh-webpack-plugin@0.5.17': + resolution: {integrity: sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x || 5.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + + '@react-spring/animated@9.6.1': + resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/core@9.6.1': + resolution: {integrity: sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/rafz@9.6.1': + resolution: {integrity: sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==} + + '@react-spring/shared@9.6.1': + resolution: {integrity: sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/types@9.6.1': + resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==} + + '@react-spring/web@9.6.1': + resolution: {integrity: sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@rnx-kit/babel-preset-metro-react-native@1.1.8': + resolution: {integrity: sha512-8DotuBK1ZgV0H/tmCmtW/3ofA7JR/8aPqSu9lKnuqwBfq4bxz+w1sMyfFl89m4teWlkhgyczWBGD6NCLqTgi9A==} + peerDependencies: + '@babel/core': ^7.20.0 + '@babel/plugin-transform-typescript': ^7.20.0 + '@babel/runtime': ^7.20.0 + '@react-native/babel-preset': '*' + metro-react-native-babel-preset: '*' + peerDependenciesMeta: + '@babel/plugin-transform-typescript': + optional: true + '@react-native/babel-preset': + optional: true + metro-react-native-babel-preset: + optional: true + + '@rnx-kit/console@1.1.0': + resolution: {integrity: sha512-N+zFhTSXroiK4eL26vs61Pmtl7wzTPAKLd4JKw9/fk5cNAHUscCXF/uclzuYN61Ye5AwygIvcwbm9wv4Jfa92A==} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + + '@sindresorhus/is@0.14.0': + resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} + engines: {node: '>=6'} + + '@sindresorhus/is@0.7.0': + resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} + engines: {node: '>=4'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@stencil/core@2.22.3': + resolution: {integrity: sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==} + engines: {node: '>=12.10.0', npm: '>=6.0.0'} + hasBin: true + + '@swc/core-darwin-arm64@1.3.96': + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.3.96': + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.3.96': + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.3.96': + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.3.96': + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.3.96': + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.3.96': + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.3.96': + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.3.96': + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.3.96': + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.3.96': + resolution: {integrity: sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.21': + resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} + + '@swc/register@0.1.10': + resolution: {integrity: sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A==} + deprecated: Use @swc-node/register instead + hasBin: true + peerDependencies: + '@swc/core': ^1.0.46 + + '@swc/types@0.1.26': + resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} + + '@szmarczak/http-timer@1.1.2': + resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} + engines: {node: '>=6'} + + '@tailwindcss-mangle/config@7.0.1': + resolution: {integrity: sha512-05JUCq6YnSrujXtRLrAsolv9hgJNpQaHOjze29EHcxRMp8J02qENtwPcElk44YrIHQPIqiHXKk0nEJJHQWsgLg==} + + '@tailwindcss-mangle/config@7.0.2': + resolution: {integrity: sha512-MGDtVXIUicgJc+oP+OGZSeaBAnUNN3G31T3HmSp2Y9ytJ/msjGMrIyNtLhYtoJbW1gTvM9fcLrPPefxQaKZVuA==} + + '@tailwindcss-mangle/shared@4.1.5': + resolution: {integrity: sha512-zqzy4RtGHdyfOQMy87+pYaaY2iCLWxUqzsfcW3UCI9oi9p9LYXAKZ38BHUUNMn8E6Yu3c8pw+rsN2/RxMo3ZXw==} + + '@tailwindcss/node@4.3.0': + resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} + + '@tarojs/api@3.0.8': + resolution: {integrity: sha512-i1vHc3hRRJ2OJHTDhxfQj5mGnZvIJLhkNjRWRduthk/SLaffz2nd74Dd1FJFUXYwWASanP7ATIccH3pSHnVrLg==} + + '@tarojs/api@4.0.8': + resolution: {integrity: sha512-4NP/aiDaD/B7WeMQVjIEUE475r6pkfC764zE+iD/vCH5ECBTC/pzbvgl9/Kbvkc4UqL6krnVF4P7T5D6cGyePw==} + engines: {node: '>= 18'} + peerDependencies: + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + + '@tarojs/api@4.1.11': + resolution: {integrity: sha512-wicO0CTUj3IU3JN9pT6oL2QGxrI1px6iRDN/Um/m2TElXg0C1dGqU7Mv8FL6Y/R+sFZfMQiiTjq+LIIYd4LunA==} + engines: {node: '>= 18'} + peerDependencies: + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + + '@tarojs/binding-darwin-arm64@4.1.11': + resolution: {integrity: sha512-o40kTukxBaUzQTPr9MZQDvxK6ZymBKzsdpOs2QpQm1eycsxEOr2F+HhgUMXfd17vjCyEY6Cld9PU07Lv0KRw8g==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [darwin] + + '@tarojs/binding-darwin-x64@4.1.11': + resolution: {integrity: sha512-WA98U3ZP8ViUtHgfAbWjvpWO5LLDJAQ6zIUocbNR3pDAehawmxkJKelJScDwaQKLbwd2xqzpuquxlAKOP4w5Iw==} + engines: {node: '>= 18'} + cpu: [x64] + os: [darwin] + + '@tarojs/binding-linux-arm64-gnu@4.1.11': + resolution: {integrity: sha512-ICk8HWumzESon0u/D8LBP8mhNEOAwLHHaK3u7dpDglsfwz34p11kGqhQed+jLPlkd57RPmtALl1MJYUvq5YXvg==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tarojs/binding-linux-x64-gnu@4.1.11': + resolution: {integrity: sha512-RJshsceTIXeYwxRc2pf2vhen0to7c3gdfVFlTcvfvv3NU8A+aglthnmFs/gzVodjoPXTws3S03EEJ2SqRVm/ZA==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tarojs/binding-win32-x64-msvc@4.1.11': + resolution: {integrity: sha512-v6g5hJZ81FB/HRxkjti3cYGUcfzj0EV809F/c5HAPPp4OYw+pfDgU+d3k0nKIdsU/GuirU/0cSa+r02B+D1m3A==} + engines: {node: '>= 18'} + cpu: [x64] + os: [win32] + + '@tarojs/binding@4.1.11': + resolution: {integrity: sha512-mFETVLz8vR8UwImKJ3oghR6b54xsRrsN0lsBLxc7qQ7BlVw2iE7863jVwdhvRnlFZhOInPGpMiz0GxtpDZK0Cw==} + + '@tarojs/cli@4.1.11': + resolution: {integrity: sha512-AU3lw1yjrA3O6BibZL3MY2PX4SpUz9gP5/LzaEKE6cQio4A9FkUMQTw4z6kyGTddrjxlP7oJiraaFCnV23IZDg==} + engines: {node: '>= 18'} + hasBin: true + + '@tarojs/components-advanced@4.0.8': + resolution: {integrity: sha512-9yawTVXaMQcTvOombPoHkOTTGP8dZzBE6QcWOxlB7zzaZtWvdKd++llG0mt4GHBHdEq+sIIVwf+TlgjNcl+Ufw==} + peerDependencies: + '@tarojs/runtime': ~4.0.8 + '@tarojs/shared': ~4.0.8 + '@tarojs/taro': ~4.0.8 + react: '>=17' + vue: '*' + peerDependenciesMeta: + react: + optional: true + vue: + optional: true + + '@tarojs/components-react@4.0.8': + resolution: {integrity: sha512-m+48fPHVe1lE/R8teATPgfdbzDVUZVzXDEkH7BGT5obzJWryDg3OBWG8LIbVWdazJI61O6ayryjNbe88wgOJlQ==} + peerDependencies: + react: '*' + solid-js: '*' + + '@tarojs/components@4.0.8': + resolution: {integrity: sha512-bmC94tY0eMNgChrbANkqlmkWk95BJp9/Nt+ghek+Qt3Vf5G1MOx2sGbLosj/VHA4EiBofGNSC1Pii2JWxvYIJw==} + engines: {node: '>= 18'} + peerDependencies: + '@types/react': '*' + vue: '*' + peerDependenciesMeta: + '@types/react': + optional: true + vue: + optional: true + + '@tarojs/components@4.1.11': + resolution: {integrity: sha512-BDmZFyTDvs0/DPYgFsS90aUCJscSrqyuGQqesqxmS8oMz1BREV7ZX/ZBbyncMEkgSOHyelyJtC/cedrQSzMhsw==} + engines: {node: '>= 18'} + peerDependencies: + '@types/react': '*' + vue: '*' + peerDependenciesMeta: + '@types/react': + optional: true + vue: + optional: true + + '@tarojs/helper@4.0.8': + resolution: {integrity: sha512-cP76ecAwTyXdnL7Glyitr3FGiTjDQE2GnGU1UdIYOXcdX0+NRr7R4NzIz0WGiXIfP8s4asE5YPSqsr1X0hKfig==} + engines: {node: '>= 18'} + + '@tarojs/helper@4.1.11': + resolution: {integrity: sha512-RJ6Mo9z2PsKCeHxHavsAyF5IWl7Eh7nmzP8p8D2dvoQUdQ7ET+6LK2kLQpipZ8KdGNS+oBF8BRMyg6fhQJpnXA==} + engines: {node: '>= 18'} + + '@tarojs/helper@4.2.0': + resolution: {integrity: sha512-F8D5EbwS/d0Kkh4PWFHhXoM1l1Iy2ZxjsWmXEkUratiq+CktogjQDa87pY+lyPLFsArA8oAd01p7rsQmVSDfoA==} + engines: {node: '>= 18'} + + '@tarojs/plugin-doctor-darwin-arm64@0.0.13': + resolution: {integrity: sha512-BRqMB6jOflPIVdQEJ5vJ7j1OcEcgg65IPPY9YVNx5MnYE/SoZj6/yWvmDNc507ZEkWd4H1sJ4Jfk7eKUxm44PQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tarojs/plugin-doctor-darwin-universal@0.0.13': + resolution: {integrity: sha512-qIv94zgybce+Wq6/Bgy+Np+3BM2SYipuuKTg4LU3ALfJ+YxJetYDcbat9GPxulZqyvxKshYaYtusfwzCu+QWEw==} + engines: {node: '>= 10'} + os: [darwin] + + '@tarojs/plugin-doctor-darwin-x64@0.0.13': + resolution: {integrity: sha512-zjx3OGlcyOTr+VoRcFmQQcsXscwNucpynlhEYS3ZlofVe9qI0LeTMb/jbMriT/W0c1b4nlVaM8sv+HKz4NKUeA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tarojs/plugin-doctor-linux-arm-gnueabihf@0.0.13': + resolution: {integrity: sha512-WkViXfZNrB7HRoDySNhm6JG1IaIBmYGWZDwz0BuhkDQPZLfCCy6v01rSo5wfHGdyLnDg6CkENBS1IrdIU9zK+A==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tarojs/plugin-doctor-linux-arm64-gnu@0.0.13': + resolution: {integrity: sha512-C6ZjqhyOqBcI4y+BFXYjBHBZY6441fO5YIoMv3Sc+nAV+LR1vvyGJ95JcC+Vma+sEjxRMP0IO9lvcLRIcrbrsA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tarojs/plugin-doctor-linux-arm64-musl@0.0.13': + resolution: {integrity: sha512-V1HnFITOLgHVyQ+OCa1oPFKOtGFRtP91vlbUGfOwMA4GeOVw9g28W/hfTyucTCkfZWlrssLehgW6L2AGAMXh2w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tarojs/plugin-doctor-linux-x64-gnu@0.0.13': + resolution: {integrity: sha512-oetfzBW60uenPBBF4/NE6Mf0Iwkw1YGqIIBiN++aVQynbWrmMzWBsW8kleZ5vN1npxI9aud9EfRU1uM37DrG2A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tarojs/plugin-doctor-linux-x64-musl@0.0.13': + resolution: {integrity: sha512-OdIF/kFwwM0kQPDnpkanhvfWRaAI6EtDmpM9rQA/Lu2QcJq86w5d7X/WSN0U2xF1nialAUrfl79NyIaEzp4Fcw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tarojs/plugin-doctor-win32-ia32-msvc@0.0.13': + resolution: {integrity: sha512-nIbG2SliRhRwACLa1kNMskcfjsihp+3tZQMAxl+LoYUq6JRaWgP3vH2nHkDyZHTCheBTDtAaupqXWrYF3w+U6g==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tarojs/plugin-doctor-win32-x64-msvc@0.0.13': + resolution: {integrity: sha512-G1mjsGzyeb4TPw7RoqOl4xPPhf5Lfp4BH9hjfBYbGM0RL5UFHmhfzvn2Icrriyk68v2GoQeHroZ2p6qAtbXdBw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tarojs/plugin-doctor@0.0.13': + resolution: {integrity: sha512-X4aq/VS9Xr5UYkiZv5T0vSx1OycuzjYgbJDFs4YPWwJDaY1LOzn8Nlzb/rQchkBlxDPHmqUQQvejL0o6+REgbw==} + engines: {node: '>= 10'} + + '@tarojs/plugin-framework-react@4.1.11': + resolution: {integrity: sha512-FIiwv0GCOIiwbkWjkKF88H1z5U1cSYA+mZ0/KBxTEQAJlhDORk+kG+0/4Yzz+IO/A07CyrbqZ7En6UkdoR+Opg==} + engines: {node: '>= 18'} + peerDependencies: + '@pmmmwh/react-refresh-webpack-plugin': '*' + '@preact/preset-vite': ^2 + '@prefresh/webpack': ^4 + '@tarojs/helper': 4.1.11 + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + '@vitejs/plugin-react': ^4 + preact: ^10 + react: ^18 + vite: ^4 + webpack: ^5 + peerDependenciesMeta: + '@pmmmwh/react-refresh-webpack-plugin': + optional: true + '@preact/preset-vite': + optional: true + '@prefresh/webpack': + optional: true + '@vitejs/plugin-react': + optional: true + preact: + optional: true + react: + optional: true + vite: + optional: true + webpack: + optional: true + + '@tarojs/plugin-platform-h5@4.0.8': + resolution: {integrity: sha512-rXH5pHhVTy8c1k0EcUMY6Dft7/ysU1c08o3wexIeYL6+xjkGirsi9b8snA93MbBBhLJEsEzb8PPH3rc3k+lbhw==} + + '@tarojs/plugin-platform-weapp@4.1.11': + resolution: {integrity: sha512-xgAkwN8tUxAtby9QlA8YCiGGawY2UTSskTFhnt4Fjl1ezBjRe2VAF2+MZvOyLTWvy3ZCpj+5CFR7nEyKyxpH2Q==} + engines: {node: '>= 18'} + peerDependencies: + '@tarojs/service': 4.1.11 + '@tarojs/shared': 4.1.11 + + '@tarojs/react@3.0.8': + resolution: {integrity: sha512-AJNKIq7MdgzOXp1ydHacnTU81xDcbuuB2ZWJZ+YW55ZnFkPoVhUHHHu0ZIiJOeg5Aza42lCSsfkw4fOsQIfvjw==} + + '@tarojs/react@4.1.11': + resolution: {integrity: sha512-+F/oH/7AXUbWKRu9Dg/S5mBOqDi8o4RMctaoRuYBI7ZTe4uNmCGY3DJDjf+gH7kThVvpPJ2VsbyiWzs/V0bOPg==} + engines: {node: '>= 18'} + peerDependencies: + react: ^18 + + '@tarojs/router@3.0.8': + resolution: {integrity: sha512-HfGH3Olu0CKh4cd6IO0zAGXhLrcycfOm38PVKChVnKkUturpbjl9jokiNh0uVu8sUppGqU9GeR/4ZZUfydavoA==} + + '@tarojs/router@4.0.8': + resolution: {integrity: sha512-66R2Kh1Qx+KIHMzhO2KjqLmYNjNw9FqUUN+ns1x/Ri0g9JCmJKE7A7k96r0WwhNHy9hjndXJrk9+nQloqQ8rrg==} + engines: {node: '>= 18'} + peerDependencies: + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + '@tarojs/taro': 4.0.8 + + '@tarojs/runner-utils@4.0.8': + resolution: {integrity: sha512-oXd1Te4hS8RBMvdTZ5IRW6II3ih9ZTYeea89ixuu/FTdS7kU+v0VWrKYtI9cW2bBZU+5fbZxtocGedsFx0kr9Q==} + engines: {node: '>= 18'} + + '@tarojs/runner-utils@4.1.11': + resolution: {integrity: sha512-c8aDNRQCP0F9MeN5oyycYl+h22nOsh5vNkRs1ToYxyp4T4EpACcSQbisxdOKpyKCO6vCv86RIjzjkIbBDR84Cw==} + engines: {node: '>= 18'} + + '@tarojs/runner-utils@4.2.0': + resolution: {integrity: sha512-M79iDSKjO3FNBBWfNiFlaihLsHGSQaXjSCglH0d9G1a/YWx2hfKtZaT67ca86YkfR/glz6ZBtIY5PTNQlED8AA==} + engines: {node: '>= 18'} + + '@tarojs/runtime@3.0.8': + resolution: {integrity: sha512-x1I70byvRwlqh+XuB04KYkM487GrrEMWgjmKAWcgkkAF9FTpL+7EN69VcXvdUFqU+dAqi0tp0np4LvOjd87PiA==} + + '@tarojs/runtime@4.0.8': + resolution: {integrity: sha512-/eGP/x7WOs5NPK/effJm0Z5VRXM8I8F4B0Y0CaF2VFz93YmqgQCo8P1BKvXsD8juvezcI55Rey42Wippy8Y/sA==} + engines: {node: '>= 18'} + + '@tarojs/runtime@4.1.11': + resolution: {integrity: sha512-LAX5Upxm9IahjshBDI/4ej/scvh19llMuP5Q+9dcj4cIjFiCuNR1z4iQMqwG7GFA9TtkAUylc2JLoV2L652Tfw==} + engines: {node: '>= 18'} + + '@tarojs/service@4.0.8': + resolution: {integrity: sha512-sQ3Phg1ecjXMTfC4wX16laYWyZCXNJ/8EUqvb33gfJmnH4bo7YtMme5xQA6riSYoWbk3MAn5oZDBZzU2f6fg6Q==} + engines: {node: '>= 18'} + + '@tarojs/service@4.1.11': + resolution: {integrity: sha512-zitoScV/FDiLbpfAaCky2pcFCly9uYAgIMF4bvg/kJUSc0xbj+9530YuUfPCSNvR26fq8mji2xdsVCg5JWdHJA==} + engines: {node: '>= 18'} + + '@tarojs/service@4.2.0': + resolution: {integrity: sha512-shUXAkxUNjrlgucU5yP4S1ZZnKFQmAvlnpDiignCF1dUvsDB+7Q8I+XTwI6JuK39HcCXxs3xIgYeIsBEHrIbZw==} + engines: {node: '>= 18'} + + '@tarojs/shared@4.0.8': + resolution: {integrity: sha512-U7i6S1jZaQ4fbbeUh1zqc+JVPQjTOTb2st+V7S42Oj01xhFa+q5tbHGOJH27Ftg75XHW8H/b2iNAUtl7WL/FCA==} + engines: {node: '>= 18'} + + '@tarojs/shared@4.1.11': + resolution: {integrity: sha512-seV4evzilrT1MiOEbfvzD7RPOsj4RFsUfIoU05ta0y9+Nf1LvbCeSIaLewgQe3PCuZx+RzNVIfuEVYACi8EBnQ==} + engines: {node: '>= 18'} + + '@tarojs/shared@4.2.0': + resolution: {integrity: sha512-nNege+07WSMFr44oAa7B2dQprBGD35AV8AOgGTFIQ5bAlriE2nOUt8hoiEtYtRlWx2zhdP6iDyVM0aNo2ijskw==} + engines: {node: '>= 18'} + + '@tarojs/taro-h5@3.0.8': + resolution: {integrity: sha512-TZoKp/4Gidwbh3cmFcUrL0TJtVX6wiJ0PjqbPftvyV+pT3JPoCnblWJ5zj/OnWgYgSA4/8nAE69AZMt5ZHy/6Q==} + + '@tarojs/taro-h5@4.0.8': + resolution: {integrity: sha512-mHKc44WhAdFzXeomqalYXd06BrW3bM1WDXMg+lQWMHa0BVrn2Qgb88r4b9TVNoPqENKhU+2bqH+/EnDcko4S7g==} + peerDependencies: + '@tarojs/components': ~4.0.8 + + '@tarojs/taro-loader@4.1.11': + resolution: {integrity: sha512-9i1l00/9ggjVEyjzEd9fL6+qjlaUIC7kixnl7Jj1dQe1ICNWME2uOLoxFF1lc5YunhNEeM07OyKF1/1wbB3Xjw==} + engines: {node: '>= 18'} + peerDependencies: + webpack: 5.91.0 + + '@tarojs/taro@3.0.8': + resolution: {integrity: sha512-IbLDjK5zQTYASYAMerb0HxF7TvMgGUJxpO8Rs/q8rtJhgaalvBjD2boJYxxRgKrLpBm4LCobu+jM7+H4lx9qYw==} + + '@tarojs/taro@4.0.8': + resolution: {integrity: sha512-jozEMEZNl/VB4POJdtW9yT41fKm+KtJVrxmZNDX23rB+4D3ecbCNPsp6EJu/NOwZ2Y+7eXrZOTZrXmJbBQiFJw==} + engines: {node: '>= 18'} + peerDependencies: + '@tarojs/components': 4.0.8 + '@tarojs/helper': 4.0.8 + '@tarojs/shared': 4.0.8 + '@types/react': ^18 + html-webpack-plugin: ^5 + postcss: ^8 + rollup: ^3 + vue: ^3 + webpack: ^5 + webpack-chain: ^6 + webpack-dev-server: ^4 + peerDependenciesMeta: + '@types/react': + optional: true + html-webpack-plugin: + optional: true + rollup: + optional: true + vue: + optional: true + webpack: + optional: true + webpack-chain: + optional: true + webpack-dev-server: + optional: true + + '@tarojs/taro@4.1.11': + resolution: {integrity: sha512-kaFWiGfyxxqX4nl2Gg+FmMcJfOswT6M3QhikXxxtl3SEB171ThfVkYK9EVxDZ1imtd0DYR1gphZXjdaO58vTgQ==} + engines: {node: '>= 18'} + peerDependencies: + '@tarojs/components': 4.1.11 + '@tarojs/helper': 4.1.11 + '@tarojs/shared': 4.1.11 + '@types/react': ^18 + html-webpack-plugin: ^5 + postcss: ^8 + rollup: ^3 + vue: ^3 + webpack: ^5 + webpack-chain: ^6 + webpack-dev-server: ^4 + peerDependenciesMeta: + '@types/react': + optional: true + html-webpack-plugin: + optional: true + rollup: + optional: true + vue: + optional: true + webpack: + optional: true + webpack-chain: + optional: true + webpack-dev-server: + optional: true + + '@tarojs/webpack5-prebundle@4.1.11': + resolution: {integrity: sha512-Gxlz+0Z1MEtn5F0H0Ib+aQJC07FOp7Px5G8UWgotV410O2gsn0VSz0+au8YELF8eWnAm6kLr1EMy1kDAWjYPUA==} + engines: {node: '>= 18'} + peerDependencies: + webpack: 5.91.0 + + '@tarojs/webpack5-runner@4.1.11': + resolution: {integrity: sha512-S57grebcesSbVtW1kiyavIrusVXN71Uj4pzx7R2COQ6bbuUfAICAxJAmNQUv3/MINd19GOTz2TzbD2L1E6HNyA==} + engines: {node: '>= 18'} + peerDependencies: + '@babel/core': ^7.12.0 + '@tarojs/runtime': 4.1.11 + less: ^4 + postcss: ^8 + sass: ^1.3.0 + stylus: '>=0.52.4' + webpack: 5.91.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/archy@0.0.31': + resolution: {integrity: sha512-v+dxizsFVyXgD3EpFuqT9YjdEjbJmPxNf1QIX9ohZOhxh1ZF2yhqv3vYaeum9lg3VghhxS5S0a6yldN9J9lPEQ==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@0.0.51': + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} + + '@types/express-serve-static-core@5.1.1': + resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} + + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + + '@types/fs-extra@8.1.5': + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} + + '@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/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/lodash.debounce@4.0.9': + resolution: {integrity: sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==} + + '@types/lodash@4.17.24': + resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@6.0.0': + resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} + deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} + + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/parse5@6.0.3': + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + + '@types/postcss-url@10.0.4': + resolution: {integrity: sha512-5QIO9NgbWmAkle65haRqkdgYPCOXheNsaFdbTJJQjT302yK3H49ql4t9a4y0NfpuPtU/UBo15VcV64WCSIMJKg==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/qs@6.15.1': + resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react@18.3.28': + resolution: {integrity: sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/sass@1.45.0': + resolution: {integrity: sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==} + deprecated: This is a stub types definition. sass provides its own type definitions, so you do not need this installed. + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/webpack-env@1.18.8': + resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@15.0.20': + resolution: {integrity: sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/eslint-plugin@8.59.2': + resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.59.2 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.59.2': + resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.59.2': + resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@8.59.2': + resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.59.2': + resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/type-utils@8.59.2': + resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@8.59.2': + resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.59.2': + resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@8.59.2': + resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@8.59.2': + resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} + + '@use-gesture/core@10.2.20': + resolution: {integrity: sha512-4lFhHc8so4yIHkBEs641DnEsBxPyhJ5GEjB4PURFDH4p/FcZriH6w99knZgI63zN/MBFfylMyb8+PDuj6RIXKQ==} + + '@use-gesture/react@10.2.20': + resolution: {integrity: sha512-KnJq9ZSqprWA6uNhWTUHZqTCh+rfa0j8ehTzqeBhktUPrmTj7yVOBvEQ/vSFU/7d72cGgWSsJ0f5T6GQCHXnvg==} + peerDependencies: + react: '>= 16.8.0' + + '@vue/compiler-core@3.5.34': + resolution: {integrity: sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==} + + '@vue/compiler-dom@3.5.34': + resolution: {integrity: sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==} + + '@vue/compiler-sfc@3.5.34': + resolution: {integrity: sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==} + + '@vue/compiler-ssr@3.5.34': + resolution: {integrity: sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==} + + '@vue/shared@3.5.34': + resolution: {integrity: sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==} + + '@weapp-core/escape@7.0.0': + resolution: {integrity: sha512-xMiRT/54YCuyXGXC6ozxmoF+wmnnPJNbouRaAhGLl1jBKsLqtkeILYU5/tGDtfJPxwKcQEFeDuaSmnMHaU3myg==} + + '@weapp-core/regex@1.0.1': + resolution: {integrity: sha512-gRIHHAb1MoTmM1lzfaKldwNXgsScaVu9/bnZDKT0A1CgUkaHAouxvZta3yQgev91V3ZAHQ+tdwA8WGhpkstzUw==} + + '@weapp-tailwindcss/logger@1.1.0': + resolution: {integrity: sha512-zBkMZG19rIa2slcGIplJFzwiFSvdt+3YIjaCMeU8ePNHPDbVb9f/s4ZMHRXfIOL3OI+1bb01j6dYxef5VdWbkg==} + + '@weapp-tailwindcss/postcss-calc@1.0.0': + resolution: {integrity: sha512-dPqVfhVsj48ii0AGhkIDh9ox1KusYx4UBGe82TNxUJYc3uIJXziOZt2RWw0VeYB29+GmHOb5WwJX2dVLNoab6A==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + '@weapp-tailwindcss/postcss@2.2.0': + resolution: {integrity: sha512-CpKfSbncy7D7LSc8WZgo1vr08S8wzYLUTkhCitlNR1qUp/MMijn/zUz5mhzuC1IjIii0fkGoij0dSbDUrqi7lA==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@weapp-tailwindcss/reset@0.1.0': + resolution: {integrity: sha512-jVBKIDhhN9Wy7BKonRbTphWkPJSO79fwb0cZXRNCgtAP0t3H7HnskHV/5AvIYyGFFXICJSJ30NqlYmkBo3CQQA==} + engines: {node: '>=20.19.0'} + peerDependencies: + tailwindcss: ^3.0.0 || ^4.0.0 + + '@weapp-tailwindcss/shared@1.1.3': + resolution: {integrity: sha512-UXABvDZerj5goxh8bE6fhOJwQpgTrv/J2M3aJM8l69xs9WMKILlZ9A88i/oYxIxN5xX+pOMmOkz73dQ5Z8YtfA==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@webassemblyjs/ast@1.11.1': + resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + + '@webassemblyjs/floating-point-hex-parser@1.11.1': + resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + + '@webassemblyjs/helper-api-error@1.11.1': + resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + + '@webassemblyjs/helper-buffer@1.11.1': + resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + + '@webassemblyjs/helper-numbers@1.11.1': + resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.1': + resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + + '@webassemblyjs/helper-wasm-section@1.11.1': + resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} + + '@webassemblyjs/ieee754@1.11.1': + resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + + '@webassemblyjs/leb128@1.11.1': + resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + + '@webassemblyjs/utf8@1.11.1': + resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + + '@webassemblyjs/wasm-edit@1.11.1': + resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + + '@webassemblyjs/wasm-gen@1.11.1': + resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} + + '@webassemblyjs/wasm-opt@1.11.1': + resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} + + '@webassemblyjs/wasm-parser@1.11.1': + resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + + '@webassemblyjs/wast-printer@1.11.1': + resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abortcontroller-polyfill@1.7.8: + resolution: {integrity: sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + deprecated: package has been renamed to acorn-import-attributes + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.5: + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} + engines: {node: '>=0.4.0'} + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + + adm-zip@0.5.17: + resolution: {integrity: sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==} + engines: {node: '>=12.0'} + + agent-base@4.3.0: + resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} + engines: {node: '>= 4.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + agentkeepalive@3.5.3: + resolution: {integrity: sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==} + engines: {node: '>= 4.0.0'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + ansi-align@2.0.0: + resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} + + ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + + archive-type@4.0.0: + resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} + engines: {node: '>=4'} + + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.5.0: + resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-ssl-profiles@1.1.2: + resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} + engines: {node: '>= 6.0.0'} + + axios@0.18.1: + resolution: {integrity: sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==} + deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 + + axios@1.16.0: + resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} + + babel-loader@8.2.1: + resolution: {integrity: sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-plugin-const-enum@1.2.0: + resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-imports-api@1.0.0: + resolution: {integrity: sha512-EtPFtwUFwXy4HyRwXiR7dCijk2b1dd12bVs39oY8aMZUnypFEMrctGX6/YrhQzhCPFweV7NTPhc+fD4zItWzUA==} + + babel-plugin-transform-solid-jsx@4.0.8: + resolution: {integrity: sha512-I5p0Vs0usfzZfBshQ4ypXl/6BU40tSSBy1aZtRnTS57VCVamxor66pBh+/Fa/r51sS6C7wVEHxng//aowqSiWQ==} + + babel-plugin-transform-taroapi@4.0.8: + resolution: {integrity: sha512-FPZSXVDkzCI07sCDu/ft4F3zpFDvUudkt8YzgYmtlUC8itCIjrXTc8XFX3LA6ov4ECmrOAfJSZTVTqtzAc3h5A==} + engines: {node: '>= 18'} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-taro@4.0.8: + resolution: {integrity: sha512-xKk7eNbBtquPEwIuvEUQPbZeA52KHs4llaob/vZjYjbw1JgEpmKhPwsK6JcULjENkmc2k58hSonAKsMFNFuuKg==} + engines: {node: '>= 18'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/preset-react': ^7.24.1 + '@prefresh/babel-plugin': ^0.5.1 + '@tarojs/taro-rn': 4.0.8 + '@vue/babel-plugin-jsx': ^1.2.2 + babel-preset-solid: ^1.8.16 + react-refresh: ^0.14.0 + peerDependenciesMeta: + '@babel/preset-react': + optional: true + '@prefresh/babel-plugin': + optional: true + '@tarojs/taro-rn': + optional: true + '@vue/babel-plugin-jsx': + optional: true + babel-preset-solid: + optional: true + react-refresh: + optional: true + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.29: + resolution: {integrity: sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + binaryextensions@2.3.0: + resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==} + engines: {node: '>=0.8'} + + bl@1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + body-parser@1.20.5: + resolution: {integrity: sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@1.3.0: + resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==} + engines: {node: '>=4'} + + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} + + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + + buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + c12@3.3.4: + resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@10.0.4: + resolution: {integrity: sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==} + + cacache@9.3.0: + resolution: {integrity: sha512-Vbi8J1XfC8v+FbQ6QkOtKXsHpPnB0i9uMeYFJoj40EbdOsEqWB3DPpNjfsnYBkqOPYA8UvrqH6FZPpBP0zdN7g==} + + cacheable-request@2.1.4: + resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} + + cacheable-request@6.1.0: + resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + 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'} + + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@4.1.0: + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} + engines: {node: '>=4'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + capture-stack-trace@1.0.2: + resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} + engines: {node: '>=0.10.0'} + + caw@2.0.1: + resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} + engines: {node: '>=4'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + 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'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@1.6.0: + resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + cli-boxes@1.0.0: + resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} + engines: {node: '>=0.10.0'} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + + cli-spinners@1.3.1: + resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} + engines: {node: '>=4'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@2.2.1: + resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone-response@1.0.2: + resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + codesandbox-import-util-types@2.2.3: + resolution: {integrity: sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ==} + + codesandbox-import-utils@2.2.3: + resolution: {integrity: sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg==} + + codesandbox@2.2.3: + resolution: {integrity: sha512-IAkWFk6UUglOhSemI7UFgNNL/jgg+1YjVEIllFULLgsaHhFnY51pCqAifMNuAd5d9Zp4Nk/xMgrEaGNV0L4Xlg==} + hasBin: true + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + 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'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + comment-json@4.6.2: + resolution: {integrity: sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==} + engines: {node: '>= 6'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@3.1.5: + resolution: {integrity: sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==} + engines: {node: '>=4'} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + 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.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + copy-concurrently@1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + deprecated: This package is no longer supported. + + copy-webpack-plugin@12.0.2: + resolution: {integrity: sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.1.0 + + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} + + core-js-pure@3.49.0: + resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==} + + core-js@3.49.0: + resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-error-class@3.0.2: + resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} + engines: {node: '>=0.10.0'} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + crypto-random-string@1.0.0: + resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} + engines: {node: '>=4'} + + css-blank-pseudo@7.0.1: + resolution: {integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + css-declaration-sorter@7.4.0: + resolution: {integrity: sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-functions-list@3.3.3: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} + + css-has-pseudo@7.0.3: + resolution: {integrity: sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + css-loader@7.1.4: + resolution: {integrity: sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-minimizer-webpack-plugin@6.0.0: + resolution: {integrity: sha512-BLpR9CCDkKvhO3i0oZQgad6v9pCxUuhSc5RT6iUEy9M8hBXi4TJb5vqF2GQ2deqYHmRi3O6IR9hgAZQWg0EBwA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + + css-prefers-color-scheme@10.0.0: + resolution: {integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-tree@1.0.0-alpha.29: + resolution: {integrity: sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==} + engines: {node: '>=0.10.0'} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssdb@8.8.1: + resolution: {integrity: sha512-PdLTDamqN1muXEmfQggrogLmD+ZjfOhlZsFFs28tYSTqnlk6gEwg5wQCt6wLl2HstegUYgof6GrYyXXODFDC5g==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@6.1.2: + resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-utils@4.0.2: + resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano@6.1.2: + resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + csso@3.5.1: + resolution: {integrity: sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==} + engines: {node: '>=0.10.0'} + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + cuint@0.2.2: + resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==} + + cwd@0.9.1: + resolution: {integrity: sha512-4+0D+ojEasdLndYX4Cqff057I/Jp6ysXpwKkdLQLnZxV8f6IYZmZtTP5uqD91a/kWqejoc0sSqK4u8wpTKCh8A==} + engines: {node: '>=0.8'} + + cyclist@1.0.2: + resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} + + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + datauri@3.0.0: + resolution: {integrity: sha512-NeDFuUPV1YCpCn8MUIcDk1QnuyenUHs7f4Q5P0n9FFA0neKFrfEH9esR+YMW95BplbYfdmjbs0Pl/ZGAaM2QHQ==} + engines: {node: '>= 8'} + + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + 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.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decode-uri-component@0.4.1: + resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} + engines: {node: '>=14.16'} + + decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + + decompress-tar@4.1.1: + resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} + engines: {node: '>=4'} + + decompress-tarbz2@4.1.1: + resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} + engines: {node: '>=4'} + + decompress-targz@4.1.1: + resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} + engines: {node: '>=4'} + + decompress-unzip@4.0.1: + resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} + engines: {node: '>=4'} + + decompress@4.2.1: + resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} + engines: {node: '>=4'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@1.5.2: + resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@1.1.3: + resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + 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@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff@4.0.4: + resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} + engines: {node: '>=0.3.1'} + + dingtalk-jsapi@2.15.6: + resolution: {integrity: sha512-804mFz2AFV/H9ysmo7dLqMjSGOQgREsgQIuep+Xg+yNQeQtnUOYntElEzlB798Sj/691e4mMKz9mtQ7v9qdjuA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@4.2.1: + resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==} + engines: {node: '>=4'} + + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + + download-git-repo@3.0.2: + resolution: {integrity: sha512-N8hWXD4hXqmEcNoR8TBYFntaOcYvEQ7Bz90mgm3bZRTuteGQqwT32VDMnTyD0KTEvb8BWrMc1tVmzuV9u/WrAg==} + + download@7.1.0: + resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==} + engines: {node: '>=6'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer3@0.1.5: + resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + echarts-taro3-react@1.0.13: + resolution: {integrity: sha512-l7C2uxrEIrtAjV/w6LvupamsyU9rsT0kLKG+/OONwojrd7qObH/dxEktRds3/o/FWXJniL5qXPldsDa2No0aGw==} + + editions@2.3.1: + resolution: {integrity: sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==} + engines: {node: '>=0.8'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.353: + resolution: {integrity: sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.21.2: + resolution: {integrity: sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ==} + engines: {node: '>=10.13.0'} + + enhanced-resolve@5.21.3: + resolution: {integrity: sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + envinfo@7.21.0: + resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} + engines: {node: '>=4'} + hasBin: true + + err-code@1.1.2: + resolution: {integrity: sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==} + + errlop@2.2.0: + resolution: {integrity: sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==} + engines: {node: '>=0.8'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + engines: {node: '>= 0.4'} + + 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-iterator-helpers@1.3.2: + resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==} + engines: {node: '>= 0.4'} + + es-module-lexer@0.10.5: + resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} + + es-module-lexer@0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + + 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'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + esbuild-loader@4.4.3: + resolution: {integrity: sha512-Wpui03EzqC151xFteKlgJQhbyZl5CgnBpUHXVuao02nItULlkaTeiLdEMPTmR2zdwpEBWkXVNoT5dDOYJluUzg==} + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + 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@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-taro@4.0.8: + resolution: {integrity: sha512-RrbzeOkUUgI5REQ1x3TrnZOnm4mVaNl7cDOzYkVVt8vL+XybF2t0wm4xAq0CpRctlWOKV1nry8elkYzw/wqpOw==} + engines: {node: '>= 18'} + peerDependencies: + eslint: ^8 + eslint-plugin-react: ^7.33.2 + eslint-plugin-react-hooks: ^4.4.0 + eslint-plugin-vue: ^9.17.0 + peerDependenciesMeta: + eslint-plugin-react: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-vue: + optional: true + + eslint-import-resolver-node@0.3.10: + resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + 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@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@8.41.0: + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + 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.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + 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@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@0.7.0: + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} + engines: {node: '>=4'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + expand-tilde@1.2.2: + resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} + engines: {node: '>=0.10.0'} + + expr-parser@1.0.0: + resolution: {integrity: sha512-ncuWTCWH0M5KbaYikXxZ3FG3Q+FTYIEXeXAbxYscdZLFNnR5Le5gRU2r/a/JUZHnxwBDZcxWEWzCoPQlW9Engg==} + + express@4.22.2: + resolution: {integrity: sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==} + engines: {node: '>= 0.10.0'} + + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + + ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + + ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + 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.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-name@0.1.0: + resolution: {integrity: sha512-Q8SskhjF4eUk/xoQkmubwLkoHwOTv6Jj/WGtOVLKkZ0vvM+LipkSXugkn1F/+mjWXU32AXLZB3qaz0arUzgtRw==} + engines: {node: '>=0.10.0'} + + file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + + file-type@4.4.0: + resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==} + engines: {node: '>=4'} + + file-type@5.2.0: + resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} + engines: {node: '>=4'} + + file-type@6.2.0: + resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} + engines: {node: '>=4'} + + file-type@8.1.0: + resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==} + engines: {node: '>=6'} + + filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + + filenamify@2.1.0: + resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==} + engines: {node: '>=4'} + + filesize@3.6.1: + resolution: {integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==} + engines: {node: '>= 0.4.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-file-up@0.1.3: + resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} + engines: {node: '>=0.10.0'} + + find-pkg@0.1.2: + resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} + engines: {node: '>=0.10.0'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + 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'} + + find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + flush-write-stream@1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + follow-redirects@1.5.10: + resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==} + engines: {node: '>=4.0'} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-exists-sync@0.1.0: + resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} + engines: {node: '>=0.10.0'} + + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} + engines: {node: '>=14.14'} + + fs-extra@3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} + + fs-write-stream-atomic@1.0.10: + resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} + deprecated: This package is no longer supported. + + 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==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generate-function@2.3.1: + resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + genfun@4.0.1: + resolution: {integrity: sha512-48yv1eDS5Qrz6cbSDBBik0u7jCgC/eA9eZrl9MIN1LfKzFTuGt6EHgr31YM8yT9cjb5BplXb4Iz3VtOYmgt8Jg==} + + 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-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-proxy@2.1.0: + resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==} + engines: {node: '>=4'} + + get-stream@2.3.1: + resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} + engines: {node: '>=0.10.0'} + + get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + giget@3.2.0: + resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==} + hasBin: true + + git-branch@1.0.0: + resolution: {integrity: sha512-ZTzuqw5Df8fyLXQWrX6hK+4FpNCdKzMcERlxENEGO5aKcLmG7MAszhrMhluUKNKmOS/JAGijDMQDXDCDw1mE/A==} + engines: {node: '>=0.8'} + + git-clone@0.1.0: + resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} + + git-config-path@1.0.1: + resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==} + engines: {node: '>=0.10.0'} + + git-repo-name@0.6.0: + resolution: {integrity: sha512-DF4XxB6H+Te79JA08/QF/IjIv+j+0gF990WlgAX3SXXU2irfqvBc/xxlAIh6eJWYaKz45MrrGVBFS0Qc4bBz5g==} + engines: {node: '>=0.8'} + + git-username@0.5.1: + resolution: {integrity: sha512-xjUjrj3i4kup2A3a/ZVZB1Nt0PUX7SU7KeVqIbXPdslT7NbNfyO04JMxBv4gar77JePdS+A6f05jG1Viy6+U1w==} + engines: {node: '>=0.8'} + + 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-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.2.6: + resolution: {integrity: sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + + global-modules@0.2.3: + resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@0.1.5: + resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@14.1.0: + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} + engines: {node: '>=18'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + globs@0.1.4: + resolution: {integrity: sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@6.7.1: + resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} + engines: {node: '>=4'} + + got@8.3.2: + resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==} + engines: {node: '>=4'} + + got@9.6.0: + resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} + engines: {node: '>=8.6'} + + 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==} + + hammerjs@2.0.8: + resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} + engines: {node: '>=0.8.0'} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbol-support-x@1.4.2: + resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-to-string-tag-x@1.4.1: + resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-raw@7.2.3: + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-parse5@7.1.0: + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + + history@5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + + hls.js@1.6.16: + resolution: {integrity: sha512-VSIRpLfRwlAAdGL4wiTucx2ScRipo0ed1FBatWkyt832jC4CReKstga6yIhYVwGu9LOBjuX9wzmRMeQdBJtzEA==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-minifier@4.0.0: + resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} + engines: {node: '>=6'} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + + html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + + html-webpack-plugin@5.6.7: + resolution: {integrity: sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + http-cache-semantics@3.8.1: + resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + + http-proxy-agent@2.1.0: + resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==} + engines: {node: '>= 4.5.0'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-proxy-middleware@2.0.9: + resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + https-proxy-agent@2.2.4: + resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} + engines: {node: '>= 4.5.0'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + humps@2.0.1: + resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} + + 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'} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + + ics@3.12.0: + resolution: {integrity: sha512-BBPiZ/TbUyZrxui7SHKGOa/n2HUxaW9ucn7cw47NW9OSKe5tItYxIdN7Uczti5nKURmfwVvYi2aLigCJGH1+cA==} + + 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==} + + iferr@0.1.5: + resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + image-size@0.8.3: + resolution: {integrity: sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg==} + engines: {node: '>=6.9.0'} + hasBin: true + + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + 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'} + + 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==} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + inquirer@6.5.2: + resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} + engines: {node: '>=6.0.0'} + + inquirer@8.2.7: + resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} + engines: {node: '>=12.0.0'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + into-stream@3.1.0: + resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} + engines: {node: '>=4'} + + ip@1.1.9: + resolution: {integrity: sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.4.0: + resolution: {integrity: sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==} + engines: {node: '>= 10'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@1.2.1: + resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} + hasBin: true + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-css-request@1.0.1: + resolution: {integrity: sha512-KOrHD2lt94cHcS50h0ULYWRJ2f8PhdVqgR+rs0Bk4HwgpxVN4dLM7Dl53da1XdsoOgT9gygNW3eMSMvhaiXMkg==} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-installed-globally@0.1.0: + resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} + engines: {node: '>=4'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-invalid-path@1.0.2: + resolution: {integrity: sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA==} + engines: {node: '>=6.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-mobile@4.0.0: + resolution: {integrity: sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==} + + is-natural-number@4.0.1: + resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-npm@1.0.0: + resolution: {integrity: sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==} + engines: {node: '>=0.10.0'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-object@1.0.2: + resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} + + is-path-inside@1.0.1: + resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==} + engines: {node: '>=0.10.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + 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-property@1.0.2: + resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} + + is-redirect@1.0.0: + resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-windows@0.2.0: + resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} + engines: {node: '>=0.10.0'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + istextorbinary@2.6.0: + resolution: {integrity: sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==} + engines: {node: '>=0.12'} + + isurl@1.0.0: + resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} + engines: {node: '>= 4'} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + j-component@1.4.9: + resolution: {integrity: sha512-7TaTylECTW4sRaDLaj463sTj9BK6/3rSD67um47ypLPwtZW3wPwynCQ9sdnEJmTIw9Jfy2ZLKWiSDRdaINv50w==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + js-base64@3.7.8: + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsdom@24.1.3: + resolution: {integrity: sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.0: + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + 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@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + jsonp-retry@1.0.3: + resolution: {integrity: sha512-/jmE9+shtKP+oIt2AWO9Wx+C27NTGpLCEw4QHOqpoV2X6ta374HE9C+EEdgu8r3iLKgFMx7u5j0mCwxWN8UdlA==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@3.0.0: + resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} + + keyv@3.1.0: + resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + known-css-properties@0.26.0: + resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==} + + latest-version@3.1.0: + resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} + engines: {node: '>=4'} + + latest-version@5.1.0: + resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} + engines: {node: '>=8'} + + launch-editor@2.13.2: + resolution: {integrity: sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==} + + lazy-cache@1.0.4: + resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} + engines: {node: '>=0.10.0'} + + less-loader@12.3.2: + resolution: {integrity: sha512-uLV5c702ff2jBvO7qewpkLRzkh/I9QW07ur2NKkv8TVTrtX2lrKjEbEU/LLXAn7cgpCIBbkfyUm4qYXCQs5/+w==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + less@3.13.1: + resolution: {integrity: sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==} + engines: {node: '>=6'} + hasBin: true + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + 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==} + + loader-runner@4.3.2: + resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==} + engines: {node: '>=6.11.5'} + + loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + 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-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + loglevel-plugin-prefix@0.8.4: + resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lottie-react@2.4.1: + resolution: {integrity: sha512-LQrH7jlkigIIv++wIyrOYFLHSKQpEY4zehPicL9bQsrt1rnoKRYCYgpCUe5maqylNtacy58/sQDZTkwMcTRxZw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + lottie-web@5.13.0: + resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@1.0.0: + resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} + engines: {node: '>=0.10.0'} + + lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lowlight@3.3.0: + resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru.min@1.1.4: + resolution: {integrity: sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==} + engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + make-fetch-happen@2.6.0: + resolution: {integrity: sha512-FFq0lNI0ax+n9IWzWpH8A4JdgYiAp2DDYIZ3rsaav8JDe8I+72CzK6PQW/oom15YDZpV5bYW/9INd6nIJ2ZfZw==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + 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==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + 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@1.1.4: + resolution: {integrity: sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + 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'} + + 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-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@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.5.2: + resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimer@1.1.0: + resolution: {integrity: sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ==} + engines: {node: '>= 6.0'} + hasBin: true + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + mini-css-extract-plugin@2.10.2: + resolution: {integrity: sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@6.0.2: + resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + miniprogram-api-typings@3.12.3: + resolution: {integrity: sha512-o7bOfrU28MEMCBWo83nXv0ROQSBFxJcfCl4f2wTYqah64ipC5RGqLJfvWJTWhlQt2ECVwspSzM8LgvnfMo7TEQ==} + + miniprogram-compiler@0.2.3: + resolution: {integrity: sha512-/MfFiXTBUwYxnrTbj1hgwk1+qGkMCTL1zi8IReOq/0SPVkUxpx19E89w+ohYCELFXkMfVbD+6ejrHh3Y1u5sVg==} + + miniprogram-exparser@2.29.1: + resolution: {integrity: sha512-f2LUVYcQ5O664nOHhrEbtR//hlqln88dRY0mIwuRncJfuXMCdK9FBk0vzNDG6EgaaeTt3iGLeFQLRHlhYktkXw==} + + miniprogram-simulate@1.6.1: + resolution: {integrity: sha512-WO+T1A1fYZV6qW4mLNEl/+Rtdpw339mPd8q0KkyGHUFbRCIMzIHVutn2UrhUbn6UWZpkGurKwDUckNkpLhJ9QA==} + + mississippi@1.3.1: + resolution: {integrity: sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==} + + mississippi@2.0.0: + resolution: {integrity: sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==} + engines: {node: '>=4.0.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + mobile-detect@1.4.5: + resolution: {integrity: sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==} + + mobx-react-lite@3.4.3: + resolution: {integrity: sha512-NkJREyFTSUXR772Qaai51BnE1voWx56LOL80xG7qkZr6vo8vEaLF3sz1JNUVh+rxmUzxYaqOhfuxTfqUh0FXUg==} + peerDependencies: + mobx: ^6.1.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + mobx@6.15.3: + resolution: {integrity: sha512-6+ZSYDs5zgH5CdGfEU2q2Lsa5PztVryL1ys7kAImTU25n2A9LAMj/yneVsQpd03MfwMLDQF+7kakJR9Z+cQxSw==} + + move-concurrently@1.0.1: + resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} + deprecated: This package is no longer supported. + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + mute-stream@0.0.7: + resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mysql2@3.22.3: + resolution: {integrity: sha512-uWWxvZSRvRhtBdh2CdcuK83YcOfPdmEeEYB069bAmPnV93QApDGVPuvCQOLjlh7tYHEWdgQPrn6kosDxHBVLkA==} + engines: {node: '>= 8.0'} + peerDependencies: + '@types/node': '>= 8' + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + named-placeholders@1.1.6: + resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==} + engines: {node: '>=8.0.0'} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + native-request@1.1.2: + resolution: {integrity: sha512-/etjwrK0J4Ebbcnt35VMWnfiUX/B04uwGJxyJInagxDqf2z5drSt/lsOvEMWGYunz1kaLZAFrV4NDAbOoDKvAQ==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + + node-fetch-npm@2.0.4: + resolution: {integrity: sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==} + engines: {node: '>=4'} + deprecated: This module is not used anymore, npm uses minipass-fetch for its fetch implementation now + + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} + engines: {node: '>= 6.13.0'} + + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@2.0.1: + resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} + engines: {node: '>=4'} + + normalize-url@4.5.1: + resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} + engines: {node: '>=8'} + + npm-conf@1.1.3: + resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} + engines: {node: '>=4'} + + npm-package-arg@5.1.2: + resolution: {integrity: sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA==} + + npm-pick-manifest@1.0.4: + resolution: {integrity: sha512-MKxNdeyOZysPRTTbHtW0M5Fw38Jo/3ARsoGw5qjCfS+XGjvNB/Gb4qtAZUFmKPM2mVum+eX559eHvKywU856BQ==} + + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + 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.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + + 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'} + + ora@1.4.0: + resolution: {integrity: sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==} + engines: {node: '>=4'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + osenv@0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} + deprecated: This package is no longer supported. + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-cancelable@0.4.1: + resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} + engines: {node: '>=4'} + + p-cancelable@1.1.0: + resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} + engines: {node: '>=6'} + + p-event@2.3.1: + resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} + engines: {node: '>=6'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-is-promise@1.1.0: + resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} + engines: {node: '>=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@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + 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-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@2.0.1: + resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} + engines: {node: '>=4'} + + 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-json@4.0.1: + resolution: {integrity: sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==} + engines: {node: '>=4'} + + package-json@6.5.0: + resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} + engines: {node: '>=8'} + + pacote@2.7.38: + resolution: {integrity: sha512-XxHUyHQB7QCVBxoXeVu0yKxT+2PvJucsc0+1E+6f95lMUxEAYERgSAc71ckYXrYr35Ew3xFU/LrhdIK21GQFFA==} + + parallel-transform@1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-git-config@0.2.0: + resolution: {integrity: sha512-amapZFADOJtHvX2URcRfbzG2OFcW+UAwmdK2kht2N2vsH5Py65VxI5yZTlD2DjmxVhTz6htFoVCxROYUJaYOXQ==} + engines: {node: '>=0.10.0'} + + parse-git-config@1.1.1: + resolution: {integrity: sha512-S3LGXJZVSy/hswvbSkfdbKBRVsnqKrVu6j8fcvdtJ4TxosSELyQDsJPuGPXuZ+EyuYuJd3O4uAF8gcISR0OFrQ==} + engines: {node: '>=0.10.0'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + 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-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + 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@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} + + path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} + + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + path-type@6.0.0: + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} + engines: {node: '>=18'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.1: + resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + + platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-attribute-case-insensitive@7.0.1: + resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-calc@9.0.1: + resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.2 + + postcss-clamp@4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + + postcss-color-functional-notation@7.0.12: + resolution: {integrity: sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-hex-alpha@10.0.0: + resolution: {integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-rebeccapurple@10.0.0: + resolution: {integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-colormin@6.1.0: + resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@6.1.0: + resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-custom-media@11.0.6: + resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-properties@14.0.6: + resolution: {integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-selectors@8.0.5: + resolution: {integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-dir-pseudo-class@9.0.1: + resolution: {integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-discard-comments@6.0.2: + resolution: {integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-duplicates@6.0.3: + resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@6.0.3: + resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@6.0.2: + resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-double-position-gradients@6.0.4: + resolution: {integrity: sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-visible@10.0.1: + resolution: {integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-within@9.0.1: + resolution: {integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-font-variant@5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + + postcss-gap-properties@6.0.0: + resolution: {integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-html-transform@4.1.11: + resolution: {integrity: sha512-UZjCgp6bf2ZwZsL3yWRZ7CY5Dp54pGO+x+8fE7LRlOrZ+TPbUqyhiAoPyLKnsa+2Mpe2WgiCU+vGaJRR3zlzfw==} + engines: {node: '>= 18'} + peerDependencies: + postcss: ^8 + + postcss-image-set-function@7.0.0: + resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-import@16.1.1: + resolution: {integrity: sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.1.0: + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-lab-function@7.0.12: + resolution: {integrity: sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-loader@8.2.1: + resolution: {integrity: sha512-k98jtRzthjj3f76MYTs9JTpRqV1RaaMhEU0Lpw9OTmQZQdppg4B30VZ74BojuBHt3F4KyubHJoXCMUeM8Bqeow==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + postcss-logical@8.1.0: + resolution: {integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-merge-longhand@6.0.5: + resolution: {integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@6.1.1: + resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@6.1.0: + resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@6.0.3: + resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@6.1.0: + resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@6.0.4: + resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + 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-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-nesting@13.0.2: + resolution: {integrity: sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-normalize-charset@6.0.2: + resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@6.0.2: + resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@6.0.2: + resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@6.0.2: + resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@6.0.2: + resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@6.0.2: + resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@6.1.0: + resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@6.0.2: + resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@6.0.2: + resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-opacity-percentage@3.0.0: + resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-ordered-values@6.0.2: + resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-overflow-shorthand@6.0.0: + resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-page-break@3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + + postcss-place@10.0.0: + resolution: {integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-plugin-constparse@4.1.11: + resolution: {integrity: sha512-GVBev4tIidS3a7GlJKTOzIOLUiQhLjZKbRKjXU056zRXtnPcUTCTa/aj/wedp0xTQX1uNqwxHpcmb0Q5gF5YsA==} + engines: {node: '>= 18'} + peerDependencies: + postcss: ^8 + + postcss-plugin-shared@1.1.5: + resolution: {integrity: sha512-lYn9dyw3+BDpK39DI9HdMdDfdPnPKnIMA4OJnkodWnZ0OOZrDCUafpQaIUcBLXlInLBGYFo3YhB/BwyuwUY1Kw==} + peerDependencies: + postcss: ^8 + + postcss-preset-env@10.6.1: + resolution: {integrity: sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-pseudo-class-any-link@10.0.1: + resolution: {integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-pxtrans@1.0.4: + resolution: {integrity: sha512-AETi28AKg2ImSCkVIden6xOaPjy8CeauLNb5EImdsIpft7vXmsqvYWcfu2yy8rcHr7RCq6raCufwl6EuobiIgA==} + peerDependencies: + postcss: ^8 + + postcss-pxtransform@4.1.11: + resolution: {integrity: sha512-ldGq7+blsWyKqOP+hFAWZ2adgvTliZPsEtRth9WwvS0RgPK/SIehQoj+IvXVOk1oDg7oP408gDZLNQ52FpRHKA==} + engines: {node: '>= 18'} + peerDependencies: + postcss: ^8 + + postcss-reduce-initial@6.1.0: + resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@6.0.2: + resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-rem-to-responsive-pixel@7.0.4: + resolution: {integrity: sha512-KLWSuwZotO0RBRboavb1Ui0W1EjempzgnvvNJqQ2BOduTBIiJJhrizZpglVBkcwF3EXqhRv/kER0zHi+Wxr5Mg==} + engines: {node: '>=16.6.0'} + peerDependencies: + postcss: ^8 + + postcss-replace-overflow-wrap@4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-rule-unit-converter@0.2.2: + resolution: {integrity: sha512-6+/zbOOPLLThV/8hBz8tU8ftcGw6VEpwdtpdJMyfUZllsinmRc1cUDI5B9AWkkOThCI+IcnJS8he4zkERQnEOA==} + peerDependencies: + postcss: ^8 + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-selector-not@8.0.1: + resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss-svgo@6.0.3: + resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==} + engines: {node: ^14 || ^16 || >= 18} + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@6.0.4: + resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-url@10.1.3: + resolution: {integrity: sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==} + engines: {node: '>=10'} + peerDependencies: + postcss: ^8.0.0 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prepend-http@1.0.4: + resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} + engines: {node: '>=0.10.0'} + + prepend-http@2.0.0: + resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} + engines: {node: '>=4'} + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + + pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-polyfill@7.1.2: + resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} + + promise-retry@1.1.1: + resolution: {integrity: sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==} + engines: {node: '>=0.12'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protoduck@4.0.0: + resolution: {integrity: sha512-9sxuz0YTU/68O98xuDn8NBxTVH9EuMhrBTxZdiBL0/qxRmWhB/5a8MagAebDa+98vluAZTs8kMZibCdezbRCeQ==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@1.0.3: + resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.15.1: + resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} + engines: {node: '>=0.6'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + query-string@5.1.1: + resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} + engines: {node: '>=0.10.0'} + + query-string@9.3.1: + resolution: {integrity: sha512-5fBfMOcDi5SA9qj5jZhWAcTtDfKF5WFdd2uD9nVNlbxVv1baq65aALy6qofpNEGELHvisjjasxQp7BlM9gvMzw==} + engines: {node: '>=18'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue@6.0.1: + resolution: {integrity: sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + rc9@3.0.1: + resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dom@16.14.0: + resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} + peerDependencies: + react: ^16.14.0 + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react-reconciler@0.23.0: + resolution: {integrity: sha512-vV0KlLimP9a/NuRcM6GRVakkmT6MKSzhfo8K72fjHMnlXMOhz9GlPe+/tCp5CWBkg+lsMUt/CR1nypJBTPfwuw==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^16.0.0 + + react-reconciler@0.29.0: + resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.2.0 + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-router-dom@5.3.4: + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + + react-router-dom@7.15.0: + resolution: {integrity: sha512-VcrVg64Fo8nwBvDscajG8gRTLIuTC6N50nb22l2HOOV4PTOHgoGp8mUjy9wLiHYoYTSYI36tUnXZgasSRFZorQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@5.3.4: + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + + react-router@7.15.0: + resolution: {integrity: sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@16.14.0: + resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} + engines: {node: '>=0.10.0'} + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + 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'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + + regex-parser@2.3.1: + resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + registry-auth-token@3.4.0: + resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==} + + registry-auth-token@4.2.2: + resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} + engines: {node: '>=6.0.0'} + + registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + + registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.1: + resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} + hasBin: true + + rehype-highlight@7.0.2: + resolution: {integrity: sha512-k158pK7wdC2qL3M5NcZROZ2tR/l7zOzjxXd5VGdcfIyoijjQqpHd3JKtYSBDpDZ38UI2WJWuFAtkMDxmx5kstA==} + + rehype-raw@6.1.1: + resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remote-origin-url@0.4.0: + resolution: {integrity: sha512-HYhdsT2pNd0LP4Osb0vtQ1iassxIc3Yk1oze7j8dMJFciMkW8e0rdg9E/mOunqtSVHSzvMfwLDIYzPnEDmpk6Q==} + engines: {node: '>= 0.8.0'} + + remote-origin-url@0.5.3: + resolution: {integrity: sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg==} + engines: {node: '>= 0.8.0'} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + 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-dir@0.1.1: + resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} + engines: {node: '>=0.10.0'} + + 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-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.6: + resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + engines: {node: '>= 0.4'} + hasBin: true + + responselike@1.0.2: + resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + retry@0.10.1: + resolution: {integrity: sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@3.30.0: + resolution: {integrity: sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + run-queue@1.0.3: + resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + + runes2@1.1.4: + resolution: {integrity: sha512-LNPnEDPOOU4ehF71m5JoQyzT2yxwD6ZreFJ7MxZUAoMKNMY1XrAo60H1CUoX5ncSm0rIuKlqn9JZNRrRkNou2g==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass-loader@14.2.1: + resolution: {integrity: sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==} + 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.99.0: + resolution: {integrity: sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.17.0: + resolution: {integrity: sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==} + + scheduler@0.19.1: + resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} + + scss-bundle@3.1.2: + resolution: {integrity: sha512-lvxTwCKDLgzmRWhGwJ834ggtnEhs0G9FxSJRWte+NwlshVvBcQ/kOHHkpAGDpCxIMNGz/Utl0yd/MWyQAOBhqg==} + hasBin: true + + seek-bzip@1.0.6: + resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} + hasBin: true + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver-diff@2.1.0: + resolution: {integrity: sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==} + engines: {node: '>=0.10.0'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.8.0: + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + seroval-plugins@1.5.4: + resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.5.4: + resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} + engines: {node: '>=10'} + + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + + shortid@2.2.17: + resolution: {integrity: sha512-GpbM3gLF1UUXZvQw6MCyulHkWbRseNO4cyBEZresZRorwl1+SLu1ZdqgVtuwqz8mB6RpwPkm541mYSqrKyJSaA==} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + 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'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + smart-buffer@1.1.15: + resolution: {integrity: sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ==} + engines: {node: '>= 0.10.15', npm: '>= 1.3.5'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + socks-proxy-agent@3.0.1: + resolution: {integrity: sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==} + + socks@1.1.10: + resolution: {integrity: sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==} + engines: {node: '>= 0.10.0', npm: '>= 1.3.5'} + deprecated: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0 + + solid-js@1.9.12: + resolution: {integrity: sha512-QzKaSJq2/iDrWR1As6MHZQ8fQkdOBf8GReYb7L5iKwMGceg7HxDcaOHk0at66tNgn9U2U7dXo8ZZpLIAmGMzgw==} + + sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + + sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + + sort-keys@2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} + + 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.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} + + sql-escaper@1.3.3: + resolution: {integrity: sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==} + engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'} + + ssri@4.1.6: + resolution: {integrity: sha512-WUbCdgSAMQjTFZRWvSPpauryvREEA+Krn19rx67UlJEJx/M192ZHxMmJXjZ4tkdFm+Sb0SXGlENeQVlA5wY7kA==} + + ssri@5.3.0: + resolution: {integrity: sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + stream-each@1.2.3: + resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + + string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + + 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.fromcodepoint@0.2.1: + resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-dirs@2.1.0: + resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + stylehacks@6.1.1: + resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + stylelint@14.16.1: + resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + stylus-loader@8.1.3: + resolution: {integrity: sha512-Rxf+ybxW+wH9/fY2Qlaae/u/PrAck3I3LKXXZQq5XaxVGp1nNm/Z76vHSdhjXltyLETs+42lpQcA4SBY2DWswg==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + stylus: '>=0.52.4' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + stylus@0.64.0: + resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==} + engines: {node: '>=16'} + hasBin: true + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + 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==} + + svgo@3.3.3: + resolution: {integrity: sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==} + engines: {node: '>=14.0.0'} + hasBin: true + + swiper@11.1.0: + resolution: {integrity: sha512-Pm78CgU7Wvg+w/MgIL/1NwMSLgx0XqFof25EnVyX8iZFCYJv5CppH7LHkBj43qW2k5Cp3Iz7FcdBxrox7XX2AQ==} + engines: {node: '>= 4.7.0'} + + swiper@11.1.15: + resolution: {integrity: sha512-IzWeU34WwC7gbhjKsjkImTuCRf+lRbO6cnxMGs88iVNKDwV+xQpBCJxZ4bNH6gSrIbbyVJ1kuGzo3JTtz//CBw==} + engines: {node: '>= 4.7.0'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tailwindcss-config@1.1.5: + resolution: {integrity: sha512-qkqLZB/1Kg0EVrp7QX7KtaiMvx80oj9NzkvVwg1REBr4Z/WGwjEkRkQzD4f6Xg1LqCtcsa/xj9zbqB3aNG+zGA==} + engines: {node: ^20.19.0 || >=22.12.0} + + tailwindcss-patch@9.0.1: + resolution: {integrity: sha512-JDPqjaR5oVu5NbqIiai2XyMeUaxMzcNG6XwXcEQwPuAfIxMLJTJjqF1mtj1X3Oa7zKzgC+FnnUUjcLI5y5b51Q==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + tailwindcss: '>=2.0.0' + peerDependenciesMeta: + tailwindcss: + optional: true + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + tailwindcss@4.3.0: + resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + tar-fs@1.16.6: + resolution: {integrity: sha512-JkOgFt3FxM/2v2CNpAVHqMW2QASjc/Hxo7IGfNd3MHaDYSW/sBFiS7YVmmhmr8x6vwN1VFQDQGdT2MWpmIuVKA==} + + tar-stream@1.6.2: + resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} + engines: {node: '>= 0.8.0'} + + term-size@1.2.0: + resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==} + engines: {node: '>=4'} + + terser-webpack-plugin@5.6.0: + resolution: {integrity: sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@minify-html/node': '*' + '@swc/core': '*' + '@swc/css': '*' + '@swc/html': '*' + clean-css: '*' + cssnano: '*' + csso: '*' + esbuild: '*' + html-minifier-terser: '*' + lightningcss: '*' + postcss: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@minify-html/node': + optional: true + '@swc/core': + optional: true + '@swc/css': + optional: true + '@swc/html': + optional: true + clean-css: + optional: true + cssnano: + optional: true + csso: + optional: true + esbuild: + optional: true + html-minifier-terser: + optional: true + lightningcss: + optional: true + postcss: + optional: true + uglify-js: + optional: true + + terser@5.47.1: + resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + textextensions@2.6.0: + resolution: {integrity: sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==} + engines: {node: '>=0.8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + timed-out@4.0.1: + resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} + engines: {node: '>=0.10.0'} + + tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + + to-readable-stream@1.0.0: + resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} + engines: {node: '>=6'} + + 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'} + + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths-webpack-plugin@4.2.0: + resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} + engines: {node: '>=10.13.0'} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unescape-js@1.1.4: + resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + + 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.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + + unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + + unique-string@1.0.0: + resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} + engines: {node: '>=4'} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + universal-router@8.3.0: + resolution: {integrity: sha512-cBkihRoHvRQAjdUnDE1GGuuw/TPAIi8z2pEsSmUVAWLeZdgjHzzAb1+0VOO6NvBOvySItOTQikzaGlRxRdJBnA==} + + universal-router@9.2.1: + resolution: {integrity: sha512-i3XDhyfg0znwCu2Ue1zwWIWgfed+XYDqlUYXgriGnS58tzO3RgKHe4KWtq9HLQOl/Tknnh0C6jEH0+FLTrrBiQ==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + 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'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unzip-response@2.0.1: + resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==} + engines: {node: '>=4'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-notifier@2.5.0: + resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} + engines: {node: '>=4'} + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse-lax@1.0.0: + resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} + engines: {node: '>=0.10.0'} + + url-parse-lax@3.0.0: + resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} + engines: {node: '>=4'} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + url-to-options@1.0.1: + resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==} + engines: {node: '>= 4'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + + validate-html-nesting@1.2.4: + resolution: {integrity: sha512-doQi7e8EJ2OWneSG1aZpJluS6A49aZM0+EICXWKm1i6WvqTLmq0tpUcImc4KTWG50mORO0C4YDBtOCSYvElftw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vm2@3.11.3: + resolution: {integrity: sha512-DO1TTKuOc+veL11VNOvJwRab80mghFKE40Av3bl6pdXs11bdiDMuR73owy+dS2EsTZEvRUeBkkBuDVRjV/RgEw==} + engines: {node: '>=6.0'} + hasBin: true + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + weapp-qrcode@1.0.0: + resolution: {integrity: sha512-4sa3W0rGDVJ9QaeZpAKlAuUxVyjhDwiUqHyGK/jJMsRMXnhb4yO8qWU/pZruMo+iT5J6CraS67lDMFb1VY+RaA==} + + weapp-tailwindcss@4.12.0: + resolution: {integrity: sha512-pdhKn4WgUaVHLk+H76iAr4VoMyyl2YsGXKKA4+T3th7i3zSlbUpQLl4E02VoawvO8Wu+CXEatVjj3ACV3mMwyA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-chain@6.5.1: + resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==} + engines: {node: '>=8'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + webpack-dev-middleware@5.3.4: + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + webpack-dev-server@4.15.2: + resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-format-messages@3.0.1: + resolution: {integrity: sha512-fugZKtOjc7Qz2sQHIJlHnGeBAg9C7lHfrcZVge5HT9pNfNWgedlZVtoPg1E/7cdrUuIczuqFex2wtGfp6F+DgA==} + engines: {node: '>=6'} + + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + + webpack-sources@3.3.4: + resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} + engines: {node: '>=10.13.0'} + + webpack-sources@3.4.1: + resolution: {integrity: sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + webpack@5.78.0: + resolution: {integrity: sha512-gT5DP72KInmE/3azEaQrISjTvLYlSM0j1Ezhht/KLVkrqtv10JoP/RXhwmX/frrutOPuSq3o5Vq0ehR/4Vmd1g==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + webpackbar@5.0.2: + resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} + engines: {node: '>=12'} + peerDependencies: + webpack: 3 || 4 || 5 + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-fetch@2.0.4: + resolution: {integrity: sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + + 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 + + widest-line@2.0.1: + resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==} + engines: {node: '>=4'} + + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + 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'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.20.1: + resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==} + 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 + + xdg-basedir@3.0.0: + resolution: {integrity: sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==} + engines: {node: '>=4'} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + xxhashjs@0.2.2: + resolution: {integrity: sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==} + + y18n@3.2.2: + resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + + yaml@2.8.4: + resolution: {integrity: sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yup@1.7.1: + resolution: {integrity: sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@adobe/css-tools@4.3.3': {} + + '@alloc/quick-lru@5.2.0': {} + + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + + '@ast-core/escape@1.0.1': {} + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.3': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.28.6(@babel/core@7.29.0)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.29.0 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.18.6': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 + + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-runtime@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/preset-env@7.29.5(@babel/core@7.29.0)': + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.3(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.29.0 + esutils: 2.0.3 + + '@babel/preset-react@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime-corejs3@7.29.2': + dependencies: + core-js-pure: 3.49.0 + + '@babel/runtime@7.29.2': {} + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@bem-react/classname@1.8.0': {} + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/color-helpers@5.1.0': {} + + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/postcss-alpha-function@1.0.1(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.14)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + '@csstools/postcss-color-function-display-p3-linear@1.0.1(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-color-function@4.0.12(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-color-mix-function@3.0.12(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-content-alt-text@2.0.8(postcss@8.5.14)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-contrast-color-function@2.0.12(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.14)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.14)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-gradients-interpolation-method@5.0.12(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-hwb-function@4.0.12(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-ic-unit@4.0.4(postcss@8.5.14)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-initial@2.0.1(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + + '@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.14)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + '@csstools/postcss-light-dark-function@2.0.11(postcss@8.5.14)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + + '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.14)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-media-minmax@2.0.9(postcss@8.5.14)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.14 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.14)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.14 + + '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.14)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-normalize-display-values@4.0.1(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-oklab-function@4.0.12(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-position-area-property@1.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + + '@csstools/postcss-progressive-custom-properties@4.2.1(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-property-rule-prelude-list@1.0.0(postcss@8.5.14)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-random-function@2.0.1(postcss@8.5.14)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-relative-color-syntax@3.0.12(postcss@8.5.14)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + '@csstools/postcss-sign-functions@1.1.4(postcss@8.5.14)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.14)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-syntax-descriptor-syntax-production@1.0.1(postcss@8.5.14)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-system-ui-font-family@1.0.0(postcss@8.5.14)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.14)': + dependencies: + '@csstools/color-helpers': 5.1.0 + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.14)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + + '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + + '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + + '@csstools/utilities@2.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@8.41.0)': + dependencies: + eslint: 8.41.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.15.0 + debug: 4.4.3 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.41.0': {} + + '@eslint/js@8.57.1': {} + + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@inquirer/external-editor@1.0.3(@types/node@18.19.130)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 18.19.130 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.10 + + '@jest/types@26.6.2': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.130 + '@types/yargs': 15.0.20 + chalk: 4.1.2 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.130 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@napi-rs/triples@1.2.0': {} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@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.20.1 + + '@nutui/icons-react-taro@1.0.5': {} + + '@nutui/icons-react-taro@2.0.1': {} + + '@nutui/icons-react@3.0.2-beta.5': {} + + '@nutui/jdesign-icons-react-taro@1.0.6-beta.2': {} + + '@nutui/lottie-miniprogram@1.0.2': {} + + '@nutui/nutui-biz@1.0.0-beta.2(mobx@6.15.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@bem-react/classname': 1.8.0 + '@nutui/nutui-react': 1.5.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@nutui/nutui-react-taro': 1.5.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-spring/web': 9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@use-gesture/react': 10.2.20(react@18.3.1) + classnames: 2.5.1 + mobx-react-lite: 3.4.3(mobx@6.15.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-router-dom: 5.3.4(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rehype-raw: 6.1.1 + transitivePeerDependencies: + - mobx + - react-dom + - react-native + + '@nutui/nutui-react-taro@1.5.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@bem-react/classname': 1.8.0 + '@react-spring/web': 9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@use-gesture/react': 10.2.20(react@18.3.1) + async-validator: 4.2.5 + classnames: 2.5.1 + lodash.kebabcase: 4.1.1 + react: 18.3.1 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react-dom + + '@nutui/nutui-react-taro@2.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@nutui/icons-react-taro': 1.0.5 + '@nutui/jdesign-icons-react-taro': 1.0.6-beta.2 + '@nutui/touch-emulator': 1.0.0 + '@react-spring/web': 9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@use-gesture/react': 10.2.20(react@18.3.1) + async-validator: 4.2.5 + classnames: 2.5.1 + lodash.isequal: 4.5.0 + lodash.kebabcase: 4.1.1 + react: 18.3.1 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react-dom + + '@nutui/nutui-react@1.5.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@bem-react/classname': 1.8.0 + '@react-spring/web': 9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@use-gesture/react': 10.2.20(react@18.3.1) + async-validator: 4.2.5 + classnames: 2.5.1 + lodash.kebabcase: 4.1.1 + react: 18.3.1 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react-dom + + '@nutui/nutui-react@3.0.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@nutui/icons-react': 3.0.2-beta.5 + '@nutui/jdesign-icons-react-taro': 1.0.6-beta.2 + '@nutui/lottie-miniprogram': 1.0.2 + '@nutui/touch-emulator': 1.0.0 + '@react-spring/web': 9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@swc/helpers': 0.5.21 + '@use-gesture/react': 10.2.20(react@18.3.1) + async-validator: 4.2.5 + classnames: 2.5.1 + codesandbox: 2.2.3 + lodash.kebabcase: 4.1.1 + lottie-react: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-fast-compare: 3.2.2 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rehype-highlight: 7.0.2 + transitivePeerDependencies: + - react-dom + - supports-color + + '@nutui/touch-emulator@1.0.0': {} + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.4 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + ansi-html: 0.0.9 + core-js-pure: 3.49.0 + error-stack-parser: 2.1.4 + html-entities: 2.6.0 + loader-utils: 2.0.4 + react-refresh: 0.14.2 + schema-utils: 4.3.3 + source-map: 0.7.6 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + optionalDependencies: + type-fest: 2.19.0 + webpack-dev-server: 4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + + '@react-spring/animated@9.6.1(react@18.3.1)': + dependencies: + '@react-spring/shared': 9.6.1(react@18.3.1) + '@react-spring/types': 9.6.1 + react: 18.3.1 + + '@react-spring/core@9.6.1(react@18.3.1)': + dependencies: + '@react-spring/animated': 9.6.1(react@18.3.1) + '@react-spring/rafz': 9.6.1 + '@react-spring/shared': 9.6.1(react@18.3.1) + '@react-spring/types': 9.6.1 + react: 18.3.1 + + '@react-spring/rafz@9.6.1': {} + + '@react-spring/shared@9.6.1(react@18.3.1)': + dependencies: + '@react-spring/rafz': 9.6.1 + '@react-spring/types': 9.6.1 + react: 18.3.1 + + '@react-spring/types@9.6.1': {} + + '@react-spring/web@9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-spring/animated': 9.6.1(react@18.3.1) + '@react-spring/core': 9.6.1(react@18.3.1) + '@react-spring/shared': 9.6.1(react@18.3.1) + '@react-spring/types': 9.6.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rnx-kit/babel-preset-metro-react-native@1.1.8(@babel/core@7.29.0)(@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0))(@babel/runtime@7.29.2)': + dependencies: + '@babel/core': 7.29.0 + '@babel/runtime': 7.29.2 + '@rnx-kit/console': 1.1.0 + babel-plugin-const-enum: 1.2.0(@babel/core@7.29.0) + optionalDependencies: + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@rnx-kit/console@1.1.0': {} + + '@rtsao/scc@1.1.0': {} + + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + + '@sinclair/typebox@0.27.10': {} + + '@sindresorhus/is@0.14.0': {} + + '@sindresorhus/is@0.7.0': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@stencil/core@2.22.3': {} + + '@swc/core-darwin-arm64@1.3.96': + optional: true + + '@swc/core-darwin-x64@1.3.96': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.3.96': + optional: true + + '@swc/core-linux-arm64-gnu@1.3.96': + optional: true + + '@swc/core-linux-arm64-musl@1.3.96': + optional: true + + '@swc/core-linux-x64-gnu@1.3.96': + optional: true + + '@swc/core-linux-x64-musl@1.3.96': + optional: true + + '@swc/core-win32-arm64-msvc@1.3.96': + optional: true + + '@swc/core-win32-ia32-msvc@1.3.96': + optional: true + + '@swc/core-win32-x64-msvc@1.3.96': + optional: true + + '@swc/core@1.3.96(@swc/helpers@0.5.21)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.26 + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.96 + '@swc/core-darwin-x64': 1.3.96 + '@swc/core-linux-arm-gnueabihf': 1.3.96 + '@swc/core-linux-arm64-gnu': 1.3.96 + '@swc/core-linux-arm64-musl': 1.3.96 + '@swc/core-linux-x64-gnu': 1.3.96 + '@swc/core-linux-x64-musl': 1.3.96 + '@swc/core-win32-arm64-msvc': 1.3.96 + '@swc/core-win32-ia32-msvc': 1.3.96 + '@swc/core-win32-x64-msvc': 1.3.96 + '@swc/helpers': 0.5.21 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.21': + dependencies: + tslib: 2.8.1 + + '@swc/register@0.1.10(@swc/core@1.3.96(@swc/helpers@0.5.21))': + dependencies: + '@swc/core': 1.3.96(@swc/helpers@0.5.21) + lodash.clonedeep: 4.5.0 + pirates: 4.0.7 + source-map-support: 0.5.21 + + '@swc/types@0.1.26': + dependencies: + '@swc/counter': 0.1.3 + + '@szmarczak/http-timer@1.1.2': + dependencies: + defer-to-connect: 1.1.3 + + '@tailwindcss-mangle/config@7.0.1': + dependencies: + '@tailwindcss-mangle/shared': 4.1.5 + c12: 3.3.4 + fs-extra: 11.3.5 + is-css-request: 1.0.1 + pathe: 2.0.3 + transitivePeerDependencies: + - magicast + + '@tailwindcss-mangle/config@7.0.2': + dependencies: + '@tailwindcss-mangle/shared': 4.1.5 + c12: 3.3.4 + fs-extra: 11.3.5 + is-css-request: 1.0.1 + pathe: 2.0.3 + transitivePeerDependencies: + - magicast + + '@tailwindcss-mangle/shared@4.1.5': {} + + '@tailwindcss/node@4.3.0': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.21.2 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.0 + + '@tarojs/api@3.0.8': + dependencies: + '@tarojs/runtime': 3.0.8 + + '@tarojs/api@4.0.8(@tarojs/runtime@4.0.8)(@tarojs/shared@4.0.8)': + dependencies: + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + + '@tarojs/api@4.1.11(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)': + dependencies: + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + + '@tarojs/binding-darwin-arm64@4.1.11': + optional: true + + '@tarojs/binding-darwin-x64@4.1.11': + optional: true + + '@tarojs/binding-linux-arm64-gnu@4.1.11': + optional: true + + '@tarojs/binding-linux-x64-gnu@4.1.11': + optional: true + + '@tarojs/binding-win32-x64-msvc@4.1.11': + optional: true + + '@tarojs/binding@4.1.11': + dependencies: + '@napi-rs/triples': 1.2.0 + optionalDependencies: + '@tarojs/binding-darwin-arm64': 4.1.11 + '@tarojs/binding-darwin-x64': 4.1.11 + '@tarojs/binding-linux-arm64-gnu': 4.1.11 + '@tarojs/binding-linux-x64-gnu': 4.1.11 + '@tarojs/binding-win32-x64-msvc': 4.1.11 + + '@tarojs/cli@4.1.11(@swc/helpers@0.5.21)(@types/node@18.19.130)': + dependencies: + '@tarojs/binding': 4.1.11 + '@tarojs/helper': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/plugin-doctor': 0.0.13 + '@tarojs/service': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/shared': 4.1.11 + adm-zip: 0.5.17 + axios: 1.16.0 + cli-highlight: 2.1.11 + download-git-repo: 3.0.2 + envinfo: 7.21.0 + inquirer: 8.2.7(@types/node@18.19.130) + latest-version: 5.1.0 + minimist: 1.2.8 + ora: 5.4.1 + semver: 7.8.0 + validate-npm-package-name: 5.0.1 + transitivePeerDependencies: + - '@swc/helpers' + - '@types/node' + - debug + - supports-color + + '@tarojs/components-advanced@4.0.8(e5d3163d6d48803c78b4f06fa2a5b05d)': + dependencies: + '@tarojs/components': 4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + '@tarojs/taro': 4.0.8(@tarojs/components@4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@tarojs/shared@4.0.8)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + classnames: 2.5.1 + csstype: 3.2.3 + memoize-one: 6.0.0 + tslib: 2.8.1 + optionalDependencies: + react: 18.3.1 + transitivePeerDependencies: + - '@tarojs/helper' + - '@types/react' + - html-webpack-plugin + - postcss + - rollup + - webpack + - webpack-chain + - webpack-dev-server + + '@tarojs/components-react@4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(solid-js@1.9.12)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@babel/runtime': 7.29.2 + '@tarojs/components': 4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/shared': 4.0.8 + '@tarojs/taro': 4.0.8(@tarojs/components@4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@tarojs/shared@4.0.8)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + classnames: 2.5.1 + react: 18.3.1 + solid-js: 1.9.12 + swiper: 11.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@tarojs/helper' + - '@types/react' + - html-webpack-plugin + - postcss + - rollup + - vue + - webpack + - webpack-chain + - webpack-dev-server + + '@tarojs/components@4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@stencil/core': 2.22.3 + '@tarojs/components-advanced': 4.0.8(e5d3163d6d48803c78b4f06fa2a5b05d) + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + '@tarojs/taro': 4.0.8(@tarojs/components@4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@tarojs/shared@4.0.8)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + classnames: 2.5.1 + hammerjs: 2.0.8 + hls.js: 1.6.16 + resolve-pathname: 3.0.0 + swiper: 11.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - '@tarojs/helper' + - html-webpack-plugin + - postcss + - react + - rollup + - webpack + - webpack-chain + - webpack-dev-server + + '@tarojs/components@4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@stencil/core': 2.22.3 + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + '@tarojs/taro': 4.1.11(@tarojs/components@4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + classnames: 2.5.1 + hammerjs: 2.0.8 + hls.js: 1.6.16 + resolve-pathname: 3.0.0 + swiper: 11.1.15 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - '@tarojs/helper' + - html-webpack-plugin + - postcss + - rollup + - webpack + - webpack-chain + - webpack-dev-server + + '@tarojs/helper@4.0.8(@swc/helpers@0.5.21)': + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@swc/core': 1.3.96(@swc/helpers@0.5.21) + '@swc/register': 0.1.10(@swc/core@1.3.96(@swc/helpers@0.5.21)) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + chokidar: 3.6.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + dotenv: 16.6.1 + dotenv-expand: 11.0.7 + esbuild: 0.21.5 + find-yarn-workspace-root: 2.0.0 + fs-extra: 11.3.5 + lodash: 4.18.1 + require-from-string: 2.0.2 + resolve: 1.22.12 + supports-hyperlinks: 3.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/helper@4.1.11(@swc/helpers@0.5.21)': + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@swc/core': 1.3.96(@swc/helpers@0.5.21) + '@swc/register': 0.1.10(@swc/core@1.3.96(@swc/helpers@0.5.21)) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + chokidar: 3.6.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + dotenv: 16.6.1 + dotenv-expand: 11.0.7 + esbuild: 0.21.5 + find-yarn-workspace-root: 2.0.0 + fs-extra: 11.3.5 + lodash: 4.18.1 + require-from-string: 2.0.2 + resolve: 1.22.12 + supports-hyperlinks: 3.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/helper@4.2.0(@swc/helpers@0.5.21)': + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@swc/core': 1.3.96(@swc/helpers@0.5.21) + '@swc/register': 0.1.10(@swc/core@1.3.96(@swc/helpers@0.5.21)) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + chokidar: 3.6.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + dotenv: 16.6.1 + dotenv-expand: 11.0.7 + esbuild: 0.21.5 + find-yarn-workspace-root: 2.0.0 + fs-extra: 11.3.5 + lodash: 4.18.1 + require-from-string: 2.0.2 + resolve: 1.22.12 + supports-hyperlinks: 3.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/plugin-doctor-darwin-arm64@0.0.13': + optional: true + + '@tarojs/plugin-doctor-darwin-universal@0.0.13': + optional: true + + '@tarojs/plugin-doctor-darwin-x64@0.0.13': + optional: true + + '@tarojs/plugin-doctor-linux-arm-gnueabihf@0.0.13': + optional: true + + '@tarojs/plugin-doctor-linux-arm64-gnu@0.0.13': + optional: true + + '@tarojs/plugin-doctor-linux-arm64-musl@0.0.13': + optional: true + + '@tarojs/plugin-doctor-linux-x64-gnu@0.0.13': + optional: true + + '@tarojs/plugin-doctor-linux-x64-musl@0.0.13': + optional: true + + '@tarojs/plugin-doctor-win32-ia32-msvc@0.0.13': + optional: true + + '@tarojs/plugin-doctor-win32-x64-msvc@0.0.13': + optional: true + + '@tarojs/plugin-doctor@0.0.13': + dependencies: + eslint: 8.41.0 + glob: 10.2.6 + optionalDependencies: + '@tarojs/plugin-doctor-darwin-arm64': 0.0.13 + '@tarojs/plugin-doctor-darwin-universal': 0.0.13 + '@tarojs/plugin-doctor-darwin-x64': 0.0.13 + '@tarojs/plugin-doctor-linux-arm-gnueabihf': 0.0.13 + '@tarojs/plugin-doctor-linux-arm64-gnu': 0.0.13 + '@tarojs/plugin-doctor-linux-arm64-musl': 0.0.13 + '@tarojs/plugin-doctor-linux-x64-gnu': 0.0.13 + '@tarojs/plugin-doctor-linux-x64-musl': 0.0.13 + '@tarojs/plugin-doctor-win32-ia32-msvc': 0.0.13 + '@tarojs/plugin-doctor-win32-x64-msvc': 0.0.13 + transitivePeerDependencies: + - supports-color + + '@tarojs/plugin-framework-react@4.1.11(@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)(react@18.3.1)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@tarojs/helper': 4.2.0(@swc/helpers@0.5.21) + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + acorn: 8.16.0 + acorn-walk: 8.3.5 + lodash: 4.18.1 + tslib: 2.8.1 + optionalDependencies: + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + react: 18.3.1 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + '@tarojs/plugin-platform-h5@4.0.8(ba4b9791add9953ad11afd4559cbd5fc)': + dependencies: + '@babel/core': 7.29.0 + '@tarojs/components': 4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/components-react': 4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(solid-js@1.9.12)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/helper': 4.0.8(@swc/helpers@0.5.21) + '@tarojs/runtime': 4.0.8 + '@tarojs/service': 4.0.8(@swc/helpers@0.5.21) + '@tarojs/shared': 4.0.8 + '@tarojs/taro-h5': 4.0.8(76620905303026b864de537e02ef6e53) + babel-plugin-transform-taroapi: 4.0.8(@babel/core@7.29.0) + change-case: 4.1.2 + lodash-es: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - '@types/react' + - html-webpack-plugin + - postcss + - react + - rollup + - solid-js + - supports-color + - vue + - webpack + - webpack-chain + - webpack-dev-server + + '@tarojs/plugin-platform-weapp@4.1.11(@tarojs/service@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11)': + dependencies: + '@tarojs/service': 4.2.0(@swc/helpers@0.5.21) + '@tarojs/shared': 4.1.11 + + '@tarojs/react@3.0.8(react@16.14.0)': + dependencies: + '@tarojs/runtime': 3.0.8 + react-reconciler: 0.23.0(react@16.14.0) + scheduler: 0.17.0 + transitivePeerDependencies: + - react + + '@tarojs/react@4.1.11(react@18.3.1)': + dependencies: + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + react: 18.3.1 + react-reconciler: 0.29.0(react@18.3.1) + + '@tarojs/router@3.0.8': + dependencies: + '@tarojs/runtime': 3.0.8 + history: 4.10.1 + universal-router: 8.3.0 + url-parse: 1.5.10 + + '@tarojs/router@4.0.8(@tarojs/runtime@4.0.8)(@tarojs/shared@4.0.8)(@tarojs/taro@4.1.11(@tarojs/components@4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))': + dependencies: + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + '@tarojs/taro': 4.1.11(@tarojs/components@4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + dingtalk-jsapi: 2.15.6 + history: 5.3.0 + mobile-detect: 1.4.5 + query-string: 9.3.1 + tslib: 2.8.1 + universal-router: 9.2.1 + + '@tarojs/runner-utils@4.0.8(@swc/helpers@0.5.21)': + dependencies: + '@tarojs/helper': 4.0.8(@swc/helpers@0.5.21) + rollup: 3.30.0 + scss-bundle: 3.1.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/runner-utils@4.1.11(@swc/helpers@0.5.21)': + dependencies: + '@tarojs/helper': 4.1.11(@swc/helpers@0.5.21) + rollup: 3.30.0 + scss-bundle: 3.1.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/runner-utils@4.2.0(@swc/helpers@0.5.21)': + dependencies: + '@tarojs/helper': 4.2.0(@swc/helpers@0.5.21) + rollup: 3.30.0 + scss-bundle: 3.1.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/runtime@3.0.8': {} + + '@tarojs/runtime@4.0.8': + dependencies: + '@tarojs/shared': 4.0.8 + tslib: 2.8.1 + + '@tarojs/runtime@4.1.11': + dependencies: + '@tarojs/shared': 4.1.11 + tslib: 2.8.1 + + '@tarojs/service@4.0.8(@swc/helpers@0.5.21)': + dependencies: + '@tarojs/helper': 4.0.8(@swc/helpers@0.5.21) + '@tarojs/runner-utils': 4.0.8(@swc/helpers@0.5.21) + '@tarojs/shared': 4.0.8 + joi: 17.13.3 + lodash: 4.18.1 + ora: 5.4.1 + resolve: 1.22.12 + tapable: 2.3.3 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/service@4.1.11(@swc/helpers@0.5.21)': + dependencies: + '@tarojs/helper': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/runner-utils': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/shared': 4.1.11 + joi: 17.13.3 + lodash: 4.18.1 + ora: 5.4.1 + resolve: 1.22.12 + tapable: 2.3.3 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/service@4.2.0(@swc/helpers@0.5.21)': + dependencies: + '@tarojs/helper': 4.2.0(@swc/helpers@0.5.21) + '@tarojs/runner-utils': 4.2.0(@swc/helpers@0.5.21) + '@tarojs/shared': 4.2.0 + joi: 17.13.3 + lodash: 4.18.1 + ora: 5.4.1 + resolve: 1.22.12 + tapable: 2.3.3 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/shared@4.0.8': {} + + '@tarojs/shared@4.1.11': {} + + '@tarojs/shared@4.2.0': {} + + '@tarojs/taro-h5@3.0.8': + dependencies: + '@tarojs/api': 3.0.8 + '@tarojs/router': 3.0.8 + '@tarojs/runtime': 3.0.8 + base64-js: 1.5.1 + jsonp-retry: 1.0.3 + mobile-detect: 1.4.5 + raf: 3.4.1 + unfetch: 4.2.0 + whatwg-fetch: 2.0.4 + + '@tarojs/taro-h5@4.0.8(76620905303026b864de537e02ef6e53)': + dependencies: + '@tarojs/api': 4.0.8(@tarojs/runtime@4.0.8)(@tarojs/shared@4.0.8) + '@tarojs/components': 4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/router': 4.0.8(@tarojs/runtime@4.0.8)(@tarojs/shared@4.0.8)(@tarojs/taro@4.1.11(@tarojs/components@4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))) + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + abortcontroller-polyfill: 1.7.8 + base64-js: 1.5.1 + ics: 3.12.0 + is-mobile: 4.0.0 + jsonp-retry: 1.0.3 + lodash-es: 4.17.21 + platform: 1.3.6 + query-string: 9.3.1 + tslib: 2.8.1 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - '@tarojs/taro' + + '@tarojs/taro-loader@4.1.11(@swc/helpers@0.5.21)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@tarojs/helper': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/shared': 4.1.11 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/taro@3.0.8': + dependencies: + '@tarojs/api': 3.0.8 + '@tarojs/taro-h5': 3.0.8 + + '@tarojs/taro@4.0.8(@tarojs/components@4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@tarojs/shared@4.0.8)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@tarojs/api': 4.0.8(@tarojs/runtime@4.0.8)(@tarojs/shared@4.0.8) + '@tarojs/components': 4.0.8(@tarojs/helper@4.0.8(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(react@18.3.1)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/helper': 4.0.8(@swc/helpers@0.5.21) + '@tarojs/runtime': 4.0.8 + '@tarojs/shared': 4.0.8 + '@types/postcss-url': 10.0.4 + postcss: 8.5.14 + optionalDependencies: + '@types/react': 18.3.28 + html-webpack-plugin: 5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + rollup: 3.30.0 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + webpack-chain: 6.5.1 + webpack-dev-server: 4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + + '@tarojs/taro@4.1.11(@tarojs/components@4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@tarojs/shared@4.1.11)(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@tarojs/api': 4.1.11(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11) + '@tarojs/components': 4.1.11(@tarojs/helper@4.2.0(@swc/helpers@0.5.21))(@types/react@18.3.28)(html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(postcss@8.5.14)(rollup@3.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)))(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/helper': 4.2.0(@swc/helpers@0.5.21) + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + '@types/postcss-url': 10.0.4 + postcss: 8.5.14 + optionalDependencies: + '@types/react': 18.3.28 + html-webpack-plugin: 5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + rollup: 3.30.0 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + webpack-chain: 6.5.1 + webpack-dev-server: 4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + + '@tarojs/webpack5-prebundle@4.1.11(@swc/helpers@0.5.21)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@tarojs/helper': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/shared': 4.1.11 + enhanced-resolve: 5.21.3 + es-module-lexer: 0.10.5 + lodash: 4.18.1 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + webpack-virtual-modules: 0.6.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/webpack5-runner@4.1.11(@babel/core@7.29.0)(@swc/core@1.3.96(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@tarojs/runtime@4.1.11)(less@3.13.1)(postcss@8.5.14)(sass@1.99.0)(stylus@0.64.0)(typescript@5.7.2)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14))': + dependencies: + '@babel/core': 7.29.0 + '@tarojs/helper': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/runner-utils': 4.1.11(@swc/helpers@0.5.21) + '@tarojs/runtime': 4.1.11 + '@tarojs/shared': 4.1.11 + '@tarojs/taro-loader': 4.1.11(@swc/helpers@0.5.21)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + '@tarojs/webpack5-prebundle': 4.1.11(@swc/helpers@0.5.21)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + acorn: 8.16.0 + acorn-walk: 8.3.5 + autoprefixer: 10.5.0(postcss@8.5.14) + babel-loader: 8.2.1(@babel/core@7.29.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + copy-webpack-plugin: 12.0.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + css-loader: 7.1.4(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + css-minimizer-webpack-plugin: 6.0.0(esbuild@0.21.5)(lightningcss@1.32.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + detect-port: 1.6.1 + esbuild: 0.21.5 + esbuild-loader: 4.4.3(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + html-minifier: 4.0.0 + html-webpack-plugin: 5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + jsdom: 24.1.3 + less-loader: 12.3.2(less@3.13.1)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + lightningcss: 1.32.0 + loader-utils: 3.3.1 + lodash: 4.18.1 + md5: 2.3.0 + mini-css-extract-plugin: 2.10.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + miniprogram-simulate: 1.6.1 + ora: 5.4.1 + picomatch: 4.0.4 + postcss: 8.5.14 + postcss-html-transform: 4.1.11(postcss@8.5.14) + postcss-import: 16.1.1(postcss@8.5.14) + postcss-loader: 8.2.1(postcss@8.5.14)(typescript@5.7.2)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + postcss-plugin-constparse: 4.1.11(postcss@8.5.14) + postcss-pxtransform: 4.1.11(postcss@8.5.14) + postcss-url: 10.1.3(postcss@8.5.14) + regenerator-runtime: 0.11.1 + resolve-url-loader: 5.0.0 + sass-loader: 14.2.1(sass@1.99.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + sax: 1.2.4 + style-loader: 3.3.4(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + stylus-loader: 8.1.3(stylus@0.64.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + terser-webpack-plugin: 5.6.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(esbuild@0.21.5)(lightningcss@1.32.0)(postcss@8.5.14)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + vm2: 3.11.3 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + webpack-chain: 6.5.1 + webpack-dev-server: 4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + webpack-format-messages: 3.0.1 + webpack-virtual-modules: 0.6.2 + webpackbar: 5.0.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + optionalDependencies: + less: 3.13.1 + sass: 1.99.0 + stylus: 0.64.0 + transitivePeerDependencies: + - '@minify-html/node' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@swc/helpers' + - '@swc/html' + - bufferutil + - canvas + - clean-css + - cssnano + - csso + - debug + - html-minifier-terser + - node-sass + - sass-embedded + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@tsconfig/node10@1.0.12': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/archy@0.0.31': {} + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.130 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 18.19.130 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.1.1 + '@types/node': 18.19.130 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 18.19.130 + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.9 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.9 + '@types/json-schema': 7.0.15 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.9 + + '@types/estree@0.0.51': {} + + '@types/estree@1.0.9': {} + + '@types/express-serve-static-core@4.19.8': + dependencies: + '@types/node': 18.19.130 + '@types/qs': 6.15.1 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express-serve-static-core@5.1.1': + dependencies: + '@types/node': 18.19.130 + '@types/qs': 6.15.1 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express@4.17.25': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.8 + '@types/qs': 6.15.1 + '@types/serve-static': 1.15.10 + + '@types/fs-extra@8.1.5': + dependencies: + '@types/node': 18.19.130 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 6.0.0 + '@types/node': 18.19.130 + + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.11 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-errors@2.0.5': {} + + '@types/http-proxy@1.17.17': + dependencies: + '@types/node': 18.19.130 + + '@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/json5@0.0.29': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 18.19.130 + + '@types/lodash.debounce@4.0.9': + dependencies: + '@types/lodash': 4.17.24 + + '@types/lodash@4.17.24': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mime@1.3.5': {} + + '@types/minimatch@6.0.0': + dependencies: + minimatch: 10.2.5 + + '@types/minimist@1.2.5': {} + + '@types/ms@2.1.0': {} + + '@types/node-forge@1.3.14': + dependencies: + '@types/node': 18.19.130 + + '@types/node@18.19.130': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/parse5@6.0.3': {} + + '@types/postcss-url@10.0.4': + dependencies: + '@types/node': 18.19.130 + postcss: 8.5.14 + + '@types/prop-types@15.7.15': {} + + '@types/qs@6.15.1': {} + + '@types/range-parser@1.2.7': {} + + '@types/react@18.3.28': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.2.3 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 18.19.130 + + '@types/retry@0.12.0': {} + + '@types/sass@1.45.0': + dependencies: + sass: 1.99.0 + + '@types/semver@7.7.1': {} + + '@types/send@0.17.6': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.130 + + '@types/send@1.2.1': + dependencies: + '@types/node': 18.19.130 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.25 + + '@types/serve-static@1.15.10': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 18.19.130 + '@types/send': 0.17.6 + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 18.19.130 + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@types/webpack-env@1.18.8': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 18.19.130 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@15.0.20': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.8.0 + ts-api-utils: 1.4.3(typescript@5.7.2) + optionalDependencies: + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.59.2(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/type-utils': 8.59.2(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/utils': 8.59.2(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.59.2 + eslint: 8.57.1 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.59.2(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.59.2 + debug: 4.4.3 + eslint: 8.57.1 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.59.2(typescript@5.7.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.7.2) + '@typescript-eslint/types': 8.59.2 + debug: 4.4.3 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + + '@typescript-eslint/scope-manager@8.59.2': + dependencies: + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 + + '@typescript-eslint/tsconfig-utils@8.59.2(typescript@5.7.2)': + dependencies: + typescript: 5.7.2 + + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.7.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.7.2) + debug: 4.4.3 + eslint: 8.57.1 + ts-api-utils: 1.4.3(typescript@5.7.2) + optionalDependencies: + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@8.59.2(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.2) + '@typescript-eslint/utils': 8.59.2(eslint@8.57.1)(typescript@5.7.2) + debug: 4.4.3 + eslint: 8.57.1 + ts-api-utils: 2.5.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/types@8.59.2': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.7.2)': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.8.0 + ts-api-utils: 1.4.3(typescript@5.7.2) + optionalDependencies: + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.59.2(typescript@5.7.2)': + dependencies: + '@typescript-eslint/project-service': 8.59.2(typescript@5.7.2) + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.7.2) + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.0 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.1 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.7.2) + eslint: 8.57.1 + semver: 7.8.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.59.2(eslint@8.57.1)(typescript@5.7.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.2) + eslint: 8.57.1 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.59.2': + dependencies: + '@typescript-eslint/types': 8.59.2 + eslint-visitor-keys: 5.0.1 + + '@ungap/structured-clone@1.3.1': {} + + '@use-gesture/core@10.2.20': {} + + '@use-gesture/react@10.2.20(react@18.3.1)': + dependencies: + '@use-gesture/core': 10.2.20 + react: 18.3.1 + + '@vue/compiler-core@3.5.34': + dependencies: + '@babel/parser': 7.29.3 + '@vue/shared': 3.5.34 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.34': + dependencies: + '@vue/compiler-core': 3.5.34 + '@vue/shared': 3.5.34 + + '@vue/compiler-sfc@3.5.34': + dependencies: + '@babel/parser': 7.29.3 + '@vue/compiler-core': 3.5.34 + '@vue/compiler-dom': 3.5.34 + '@vue/compiler-ssr': 3.5.34 + '@vue/shared': 3.5.34 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.14 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.34': + dependencies: + '@vue/compiler-dom': 3.5.34 + '@vue/shared': 3.5.34 + + '@vue/shared@3.5.34': {} + + '@weapp-core/escape@7.0.0': {} + + '@weapp-core/regex@1.0.1': {} + + '@weapp-tailwindcss/logger@1.1.0': + dependencies: + consola: 3.4.2 + picocolors: 1.1.1 + + '@weapp-tailwindcss/postcss-calc@1.0.0(postcss@8.5.14)': + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + + '@weapp-tailwindcss/postcss@2.2.0': + dependencies: + '@weapp-core/escape': 7.0.0 + '@weapp-tailwindcss/postcss-calc': 1.0.0(postcss@8.5.14) + '@weapp-tailwindcss/shared': 1.1.3 + autoprefixer: 10.5.0(postcss@8.5.14) + lru-cache: 10.4.3 + postcss: 8.5.14 + postcss-preset-env: 10.6.1(postcss@8.5.14) + postcss-pxtrans: 1.0.4(postcss@8.5.14) + postcss-rem-to-responsive-pixel: 7.0.4(postcss@8.5.14) + postcss-rule-unit-converter: 0.2.2(postcss@8.5.14) + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + + '@weapp-tailwindcss/reset@0.1.0(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2)))': + dependencies: + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2)) + + '@weapp-tailwindcss/shared@1.1.3': + dependencies: + pathe: 2.0.3 + + '@webassemblyjs/ast@1.11.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + + '@webassemblyjs/floating-point-hex-parser@1.11.1': {} + + '@webassemblyjs/helper-api-error@1.11.1': {} + + '@webassemblyjs/helper-buffer@1.11.1': {} + + '@webassemblyjs/helper-numbers@1.11.1': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.1': {} + + '@webassemblyjs/helper-wasm-section@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + + '@webassemblyjs/ieee754@1.11.1': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.1': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.1': {} + + '@webassemblyjs/wasm-edit@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-wasm-section': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-opt': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/wast-printer': 1.11.1 + + '@webassemblyjs/wasm-gen@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + + '@webassemblyjs/wasm-opt@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + + '@webassemblyjs/wasm-parser@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + + '@webassemblyjs/wast-printer@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abortcontroller-polyfill@1.7.8: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-import-assertions@1.9.0(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn-walk@8.3.5: + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + address@1.2.2: {} + + adjust-sourcemap-loader@4.0.0: + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.1 + + adm-zip@0.5.17: {} + + agent-base@4.3.0: + dependencies: + es6-promisify: 5.0.0 + + agent-base@7.1.4: {} + + agentkeepalive@3.5.3: + dependencies: + humanize-ms: 1.2.1 + + ajv-formats@2.1.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-keywords@3.5.2(ajv@6.15.0): + dependencies: + ajv: 6.15.0 + + ajv-keywords@5.1.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + fast-deep-equal: 3.1.3 + + ajv@6.15.0: + 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.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-align@2.0.0: + dependencies: + string-width: 2.1.1 + + ansi-escapes@3.2.0: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-html@0.0.9: {} + + ansi-regex@3.0.1: {} + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + aproba@1.2.0: {} + + archive-type@4.0.0: + dependencies: + file-type: 4.4.0 + + archy@1.0.0: {} + + arg@4.1.3: {} + + arg@5.0.2: {} + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-flatten@1.1.1: {} + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array-timsort@1.0.3: {} + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + arrify@1.0.1: {} + + astral-regex@2.0.0: {} + + async-function@1.0.0: {} + + async-validator@4.2.5: {} + + asynckit@0.4.0: {} + + autoprefixer@10.5.0(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + caniuse-lite: 1.0.30001792 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + aws-ssl-profiles@1.1.2: {} + + axios@0.18.1: + dependencies: + follow-redirects: 1.5.10 + is-buffer: 2.0.5 + transitivePeerDependencies: + - supports-color + + axios@1.16.0: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.5 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + + babel-loader@8.2.1(@babel/core@7.29.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + '@babel/core': 7.29.0 + find-cache-dir: 2.1.0 + loader-utils: 1.4.2 + make-dir: 2.1.0 + pify: 4.0.1 + schema-utils: 2.7.1 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + babel-plugin-const-enum@1.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-dynamic-import-node@2.3.3: + dependencies: + object.assign: 4.1.7 + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + babel-plugin-transform-imports-api@1.0.0: + dependencies: + is-invalid-path: 1.0.2 + + babel-plugin-transform-solid-jsx@4.0.8(@babel/core@7.29.0): + dependencies: + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + html-entities: 2.3.3 + validate-html-nesting: 1.2.4 + transitivePeerDependencies: + - '@babel/core' + + babel-plugin-transform-taroapi@4.0.8(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + lodash: 4.18.1 + + babel-preset-taro@4.0.8(@babel/core@7.29.0)(@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0))(@babel/preset-react@7.28.5(@babel/core@7.29.0))(@swc/helpers@0.5.21)(react-refresh@0.14.2): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.5(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@babel/runtime': 7.29.2 + '@babel/runtime-corejs3': 7.29.2 + '@rnx-kit/babel-preset-metro-react-native': 1.1.8(@babel/core@7.29.0)(@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0))(@babel/runtime@7.29.2) + '@tarojs/helper': 4.0.8(@swc/helpers@0.5.21) + babel-plugin-dynamic-import-node: 2.3.3 + babel-plugin-transform-imports-api: 1.0.0 + babel-plugin-transform-solid-jsx: 4.0.8(@babel/core@7.29.0) + core-js: 3.49.0 + optionalDependencies: + '@babel/preset-react': 7.28.5(@babel/core@7.29.0) + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/plugin-transform-typescript' + - '@react-native/babel-preset' + - '@swc/helpers' + - metro-react-native-babel-preset + - supports-color + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + balanced-match@4.0.4: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.29: {} + + batch@0.6.1: {} + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + binaryextensions@2.3.0: {} + + bl@1.2.3: + dependencies: + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + body-parser@1.20.5: + 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.1 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.15.1 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.3.0: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + + boxen@1.3.0: + dependencies: + ansi-align: 2.0.0 + camelcase: 4.1.0 + chalk: 2.4.2 + cli-boxes: 1.0.0 + string-width: 2.1.1 + term-size: 1.2.0 + widest-line: 2.0.1 + + brace-expansion@1.1.14: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.0: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.29 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.353 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer-alloc-unsafe@1.1.0: {} + + buffer-alloc@1.2.0: + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + + buffer-crc32@0.2.13: {} + + buffer-fill@1.0.0: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtins@1.0.3: {} + + bytes@3.1.2: {} + + c12@3.3.4: + dependencies: + chokidar: 5.0.0 + confbox: 0.2.4 + defu: 6.1.7 + dotenv: 17.4.2 + exsolve: 1.0.8 + giget: 3.2.0 + jiti: 2.7.0 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.1 + rc9: 3.0.1 + + cac@6.7.14: {} + + cacache@10.0.4: + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + glob: 7.2.3 + graceful-fs: 4.2.11 + lru-cache: 4.1.5 + mississippi: 2.0.0 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1(bluebird@3.7.2) + rimraf: 2.7.1 + ssri: 5.3.0 + unique-filename: 1.1.1 + y18n: 4.0.3 + + cacache@9.3.0: + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + glob: 7.2.3 + graceful-fs: 4.2.11 + lru-cache: 4.1.5 + mississippi: 1.3.1 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1(bluebird@3.7.2) + rimraf: 2.7.1 + ssri: 4.1.6 + unique-filename: 1.1.1 + y18n: 3.2.2 + + cacheable-request@2.1.4: + dependencies: + clone-response: 1.0.2 + get-stream: 3.0.0 + http-cache-semantics: 3.8.1 + keyv: 3.0.0 + lowercase-keys: 1.0.0 + normalize-url: 2.0.1 + responselike: 1.0.2 + + cacheable-request@6.1.0: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.2.0 + keyv: 3.1.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.1 + responselike: 1.0.2 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase-css@2.0.1: {} + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@4.1.0: {} + + camelcase@5.3.1: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.28.2 + caniuse-lite: 1.0.30001792 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001792: {} + + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + capture-stack-trace@1.0.2: {} + + caw@2.0.1: + dependencies: + get-proxy: 2.1.0 + isurl: 1.0.0 + tunnel-agent: 0.6.0 + url-to-options: 1.0.1 + + ccount@2.0.1: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + change-case@4.1.2: + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.8.1 + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chardet@0.7.0: {} + + chardet@2.1.1: {} + + charenc@0.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 + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + chownr@1.1.4: {} + + chrome-trace-event@1.0.4: {} + + ci-info@1.6.0: {} + + ci-info@3.9.0: {} + + classnames@2.5.1: {} + + clean-css@4.2.4: + dependencies: + source-map: 0.6.1 + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + cli-boxes@1.0.0: {} + + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + + cli-spinners@1.3.1: {} + + cli-spinners@2.9.2: {} + + cli-width@2.2.1: {} + + cli-width@3.0.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + clone-response@1.0.2: + dependencies: + mimic-response: 1.0.1 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + + codesandbox-import-util-types@2.2.3: {} + + codesandbox-import-utils@2.2.3: + dependencies: + codesandbox-import-util-types: 2.2.3 + istextorbinary: 2.6.0 + lz-string: 1.5.0 + + codesandbox@2.2.3: + dependencies: + axios: 0.18.1 + chalk: 2.4.2 + codesandbox-import-util-types: 2.2.3 + codesandbox-import-utils: 2.2.3 + commander: 2.20.3 + datauri: 3.0.0 + filesize: 3.6.1 + fs-extra: 3.0.1 + git-branch: 1.0.0 + git-repo-name: 0.6.0 + git-username: 0.5.1 + humps: 2.0.1 + inquirer: 6.5.2 + lodash: 4.18.1 + lz-string: 1.5.0 + ms: 2.1.3 + open: 6.4.0 + ora: 1.4.0 + pacote: 2.7.38 + shortid: 2.2.17 + update-notifier: 2.5.0 + transitivePeerDependencies: + - supports-color + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + comment-json@4.6.2: + dependencies: + array-timsort: 1.0.3 + esprima: 4.0.1 + + commondir@1.0.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + configstore@3.1.5: + dependencies: + dot-prop: 4.2.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + unique-string: 1.0.0 + write-file-atomic: 2.4.3 + xdg-basedir: 3.0.0 + + connect-history-api-fallback@2.0.0: {} + + consola@2.15.3: {} + + consola@3.4.2: {} + + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case: 2.0.2 + + content-disposition@0.5.4: + 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.7: {} + + cookie@0.7.2: {} + + cookie@1.1.1: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + copy-concurrently@1.0.5: + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + + copy-webpack-plugin@12.0.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + fast-glob: 3.3.3 + glob-parent: 6.0.2 + globby: 14.1.0 + normalize-path: 3.0.0 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + core-js-compat@3.49.0: + dependencies: + browserslist: 4.28.2 + + core-js-pure@3.49.0: {} + + core-js@3.49.0: {} + + core-util-is@1.0.3: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.3 + + cosmiconfig@9.0.1(typescript@5.7.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.2 + + create-error-class@3.0.2: + dependencies: + capture-stack-trace: 1.0.2 + + create-require@1.1.1: {} + + cross-spawn@5.1.0: + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypt@0.0.2: {} + + crypto-js@4.2.0: {} + + crypto-random-string@1.0.0: {} + + css-blank-pseudo@7.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + css-declaration-sorter@7.4.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + css-functions-list@3.3.3: {} + + css-has-pseudo@7.0.3(postcss@8.5.14): + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + + css-loader@7.1.4(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.14) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.14) + postcss-modules-scope: 3.2.1(postcss@8.5.14) + postcss-modules-values: 4.0.0(postcss@8.5.14) + postcss-value-parser: 4.2.0 + semver: 7.8.0 + optionalDependencies: + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + css-minimizer-webpack-plugin@6.0.0(esbuild@0.21.5)(lightningcss@1.32.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + cssnano: 6.1.2(postcss@8.5.14) + jest-worker: 29.7.0 + postcss: 8.5.14 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + optionalDependencies: + esbuild: 0.21.5 + lightningcss: 1.32.0 + + css-prefers-color-scheme@10.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@1.0.0-alpha.29: + dependencies: + mdn-data: 1.1.4 + source-map: 0.5.7 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + + cssdb@8.8.1: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@6.1.2(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + css-declaration-sorter: 7.4.0(postcss@8.5.14) + cssnano-utils: 4.0.2(postcss@8.5.14) + postcss: 8.5.14 + postcss-calc: 9.0.1(postcss@8.5.14) + postcss-colormin: 6.1.0(postcss@8.5.14) + postcss-convert-values: 6.1.0(postcss@8.5.14) + postcss-discard-comments: 6.0.2(postcss@8.5.14) + postcss-discard-duplicates: 6.0.3(postcss@8.5.14) + postcss-discard-empty: 6.0.3(postcss@8.5.14) + postcss-discard-overridden: 6.0.2(postcss@8.5.14) + postcss-merge-longhand: 6.0.5(postcss@8.5.14) + postcss-merge-rules: 6.1.1(postcss@8.5.14) + postcss-minify-font-values: 6.1.0(postcss@8.5.14) + postcss-minify-gradients: 6.0.3(postcss@8.5.14) + postcss-minify-params: 6.1.0(postcss@8.5.14) + postcss-minify-selectors: 6.0.4(postcss@8.5.14) + postcss-normalize-charset: 6.0.2(postcss@8.5.14) + postcss-normalize-display-values: 6.0.2(postcss@8.5.14) + postcss-normalize-positions: 6.0.2(postcss@8.5.14) + postcss-normalize-repeat-style: 6.0.2(postcss@8.5.14) + postcss-normalize-string: 6.0.2(postcss@8.5.14) + postcss-normalize-timing-functions: 6.0.2(postcss@8.5.14) + postcss-normalize-unicode: 6.1.0(postcss@8.5.14) + postcss-normalize-url: 6.0.2(postcss@8.5.14) + postcss-normalize-whitespace: 6.0.2(postcss@8.5.14) + postcss-ordered-values: 6.0.2(postcss@8.5.14) + postcss-reduce-initial: 6.1.0(postcss@8.5.14) + postcss-reduce-transforms: 6.0.2(postcss@8.5.14) + postcss-svgo: 6.0.3(postcss@8.5.14) + postcss-unique-selectors: 6.0.4(postcss@8.5.14) + + cssnano-utils@4.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + cssnano@6.1.2(postcss@8.5.14): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.5.14) + lilconfig: 3.1.3 + postcss: 8.5.14 + + csso@3.5.1: + dependencies: + css-tree: 1.0.0-alpha.29 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + cssstyle@4.6.0: + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + + csstype@3.2.3: {} + + cuint@0.2.2: {} + + cwd@0.9.1: + dependencies: + find-pkg: 0.1.2 + + cyclist@1.0.2: {} + + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + datauri@3.0.0: + dependencies: + image-size: 0.8.3 + mimer: 1.1.0 + + dayjs@1.11.20: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.1.0: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decimal.js@10.6.0: {} + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + decode-uri-component@0.2.2: {} + + decode-uri-component@0.4.1: {} + + decompress-response@3.3.0: + dependencies: + mimic-response: 1.0.1 + + decompress-tar@4.1.1: + dependencies: + file-type: 5.2.0 + is-stream: 1.1.0 + tar-stream: 1.6.2 + + decompress-tarbz2@4.1.1: + dependencies: + decompress-tar: 4.1.1 + file-type: 6.2.0 + is-stream: 1.1.0 + seek-bzip: 1.0.6 + unbzip2-stream: 1.4.3 + + decompress-targz@4.1.1: + dependencies: + decompress-tar: 4.1.1 + file-type: 5.2.0 + is-stream: 1.1.0 + + decompress-unzip@4.0.1: + dependencies: + file-type: 3.9.0 + get-stream: 2.3.1 + pify: 2.3.0 + yauzl: 2.10.0 + + decompress@4.2.1: + dependencies: + decompress-tar: 4.1.1 + decompress-tarbz2: 4.1.1 + decompress-targz: 4.1.1 + decompress-unzip: 4.0.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + pify: 2.3.0 + strip-dirs: 2.1.0 + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deepmerge@1.5.2: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@1.1.3: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + defu@6.1.7: {} + + delayed-stream@1.0.0: {} + + denque@2.1.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-libc@2.1.2: {} + + detect-node@2.1.0: {} + + detect-port@1.6.1: + dependencies: + address: 1.2.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + didyoumean@1.2.2: {} + + diff@4.0.4: {} + + dingtalk-jsapi@2.15.6: + dependencies: + promise-polyfill: 7.1.2 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.29.2 + csstype: 3.2.3 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dot-prop@4.2.1: + dependencies: + is-obj: 1.0.1 + + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.6.1 + + dotenv@16.6.1: {} + + dotenv@17.4.2: {} + + download-git-repo@3.0.2: + dependencies: + download: 7.1.0 + git-clone: 0.1.0 + rimraf: 3.0.2 + + download@7.1.0: + dependencies: + archive-type: 4.0.0 + caw: 2.0.1 + content-disposition: 0.5.4 + decompress: 4.2.1 + ext-name: 5.0.0 + file-type: 8.1.0 + filenamify: 2.1.0 + get-stream: 3.0.0 + got: 8.3.2 + make-dir: 1.3.0 + p-event: 2.3.1 + pify: 3.0.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer3@0.1.5: {} + + duplexify@3.7.1: + dependencies: + end-of-stream: 1.4.5 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} + + echarts-taro3-react@1.0.13: + dependencies: + '@tarojs/react': 3.0.8(react@16.14.0) + '@tarojs/taro': 3.0.8 + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) + + editions@2.3.1: + dependencies: + errlop: 2.2.0 + semver: 6.3.1 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.353: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@2.0.0: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.21.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + enhanced-resolve@5.21.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@2.2.0: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + entities@7.0.1: {} + + env-paths@2.2.1: {} + + envinfo@7.21.0: {} + + err-code@1.1.2: {} + + errlop@2.2.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.20 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.3.2: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + math-intrinsics: 1.1.0 + + es-module-lexer@0.10.5: {} + + es-module-lexer@0.9.3: {} + + 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.3 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.3 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es6-promise@4.2.8: {} + + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 + + esbuild-loader@4.4.3(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + esbuild: 0.27.7 + get-tsconfig: 4.14.0 + loader-utils: 2.0.4 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + webpack-sources: 3.4.1 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-taro@4.0.8(@babel/core@7.29.0)(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1)(typescript@5.7.2): + dependencies: + '@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@8.57.1) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.7.2) + eslint: 8.57.1 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1) + optionalDependencies: + eslint-plugin-react: 7.37.5(eslint@8.57.1) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) + transitivePeerDependencies: + - '@babel/core' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + - typescript + + eslint-import-resolver-node@0.3.10: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.2 + resolve: 2.0.0-next.6 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.10)(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.7.2) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.10 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.2(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.10)(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.59.2(eslint@8.57.1)(typescript@5.7.2) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.10 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.10)(eslint@8.57.1) + hasown: 2.0.3 + is-core-module: 2.16.2 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.7.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.2(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.10)(eslint@8.57.1) + hasown: 2.0.3 + is-core-module: 2.16.2 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.59.2(eslint@8.57.1)(typescript@5.7.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react@7.37.5(eslint@8.57.1): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.3.2 + eslint: 8.57.1 + estraverse: 5.3.0 + hasown: 2.0.3 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.5 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.6 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@8.41.0: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.41.0) + '@eslint-community/regexpp': 4.12.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.41.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.1 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@0.7.0: + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + 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 + + expand-tilde@1.2.2: + dependencies: + os-homedir: 1.0.2 + + expr-parser@1.0.0: {} + + express@4.22.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.5 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2 + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.13 + proxy-addr: 2.0.7 + qs: 6.15.1 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.2 + serve-static: 1.16.3 + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.0.8: {} + + ext-list@2.2.2: + dependencies: + mime-db: 1.54.0 + + ext-name@5.0.0: + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + 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.1.2: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + figures@2.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-name@0.1.0: {} + + file-type@3.9.0: {} + + file-type@4.4.0: {} + + file-type@5.2.0: {} + + file-type@6.2.0: {} + + file-type@8.1.0: {} + + filename-reserved-regex@2.0.0: {} + + filenamify@2.1.0: + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + + filesize@3.6.1: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@5.1.0: {} + + finalhandler@1.3.2: + 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.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@2.1.0: + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + + find-file-up@0.1.3: + dependencies: + fs-exists-sync: 0.1.0 + resolve-dir: 0.1.1 + + find-pkg@0.1.2: + dependencies: + find-file-up: 0.1.3 + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + 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 + + find-yarn-workspace-root@2.0.0: + dependencies: + micromatch: 4.0.8 + + flat-cache@3.2.0: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat@5.0.2: {} + + flatted@3.4.2: {} + + flush-write-stream@1.1.1: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + follow-redirects@1.16.0: {} + + follow-redirects@1.5.10: + dependencies: + debug: 3.1.0 + transitivePeerDependencies: + - supports-color + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.3 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fraction.js@5.3.4: {} + + fresh@0.5.2: {} + + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + fs-constants@1.0.0: {} + + fs-exists-sync@0.1.0: {} + + fs-extra@11.3.5: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-extra@3.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-monkey@1.1.0: {} + + fs-write-stream-atomic@1.0.10: + dependencies: + graceful-fs: 4.2.11 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.8 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.3 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generate-function@2.3.1: + dependencies: + is-property: 1.0.2 + + generator-function@2.0.1: {} + + genfun@4.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + 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.3 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-proxy@2.1.0: + dependencies: + npm-conf: 1.1.3 + + get-stream@2.3.1: + dependencies: + object-assign: 4.1.1 + pinkie-promise: 2.0.1 + + get-stream@3.0.0: {} + + get-stream@4.1.0: + dependencies: + pump: 3.0.4 + + get-stream@5.2.0: + dependencies: + pump: 3.0.4 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + giget@3.2.0: {} + + git-branch@1.0.0: {} + + git-clone@0.1.0: {} + + git-config-path@1.0.1: + dependencies: + extend-shallow: 2.0.1 + fs-exists-sync: 0.1.0 + homedir-polyfill: 1.0.3 + + git-repo-name@0.6.0: + dependencies: + cwd: 0.9.1 + file-name: 0.1.0 + lazy-cache: 1.0.4 + remote-origin-url: 0.5.3 + + git-username@0.5.1: + dependencies: + remote-origin-url: 0.4.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.2.6: + dependencies: + foreground-child: 3.3.1 + jackspeak: 2.3.6 + minimatch: 9.0.9 + minipass: 6.0.2 + path-scurry: 1.11.1 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-dirs@0.1.1: + dependencies: + ini: 1.3.8 + + global-modules@0.2.3: + dependencies: + global-prefix: 0.1.5 + is-windows: 0.2.0 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@0.1.5: + dependencies: + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 0.2.0 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.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 + + globby@14.1.0: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + path-type: 6.0.0 + slash: 5.1.0 + unicorn-magic: 0.3.0 + + globjoin@0.1.4: {} + + globs@0.1.4: + dependencies: + glob: 7.2.3 + + gopd@1.2.0: {} + + got@6.7.1: + dependencies: + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + create-error-class: 3.0.2 + duplexer3: 0.1.5 + get-stream: 3.0.0 + is-redirect: 1.0.0 + is-retry-allowed: 1.2.0 + is-stream: 1.1.0 + lowercase-keys: 1.0.1 + safe-buffer: 5.2.1 + timed-out: 4.0.1 + unzip-response: 2.0.1 + url-parse-lax: 1.0.0 + + got@8.3.2: + dependencies: + '@sindresorhus/is': 0.7.0 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + cacheable-request: 2.1.4 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 3.0.0 + into-stream: 3.1.0 + is-retry-allowed: 1.2.0 + isurl: 1.0.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 0.4.1 + p-timeout: 2.0.1 + pify: 3.0.0 + safe-buffer: 5.2.1 + timed-out: 4.0.1 + url-parse-lax: 3.0.0 + url-to-options: 1.0.1 + + got@9.6.0: + dependencies: + '@sindresorhus/is': 0.14.0 + '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + hammerjs@2.0.8: {} + + handle-thing@2.0.1: {} + + hard-rejection@2.1.0: {} + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbol-support-x@1.4.2: {} + + has-symbols@1.1.0: {} + + has-to-string-tag-x@1.4.1: + dependencies: + has-symbol-support-x: 1.4.2 + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + hast-util-from-parse5@7.1.2: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + hastscript: 7.2.0 + property-information: 6.5.0 + vfile: 5.3.7 + vfile-location: 4.1.0 + web-namespaces: 2.0.1 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@3.1.1: + dependencies: + '@types/hast': 2.3.10 + + hast-util-raw@7.2.3: + dependencies: + '@types/hast': 2.3.10 + '@types/parse5': 6.0.3 + hast-util-from-parse5: 7.1.2 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@7.1.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@7.2.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + he@1.2.0: {} + + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.8.1 + + highlight.js@10.7.3: {} + + highlight.js@11.11.1: {} + + history@4.10.1: + dependencies: + '@babel/runtime': 7.29.2 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + history@5.3.0: + dependencies: + '@babel/runtime': 7.29.2 + + hls.js@1.6.16: {} + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + + html-entities@2.3.3: {} + + html-entities@2.6.0: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.47.1 + + html-minifier@4.0.0: + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.20.3 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.19.3 + + html-tags@3.3.1: {} + + html-url-attributes@3.0.1: {} + + html-void-elements@2.0.1: {} + + html-webpack-plugin@5.6.7(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.18.1 + pretty-error: 4.0.0 + tapable: 2.3.3 + optionalDependencies: + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + htmlparser2@10.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 7.0.1 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + http-cache-semantics@3.8.1: {} + + http-cache-semantics@4.2.0: {} + + http-deceiver@1.2.7: {} + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + http-parser-js@0.5.10: {} + + http-proxy-agent@2.1.0: + dependencies: + agent-base: 4.3.0 + debug: 3.1.0 + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + http-proxy-middleware@2.0.9(@types/express@4.17.25): + dependencies: + '@types/http-proxy': 1.17.17 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.25 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.16.0 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + https-proxy-agent@2.2.4: + dependencies: + agent-base: 4.3.0 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + humps@2.0.1: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + + ics@3.12.0: + dependencies: + nanoid: 3.3.12 + runes2: 1.1.4 + yup: 1.7.1 + + icss-utils@5.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + ieee754@1.2.1: {} + + iferr@0.1.5: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + image-size@0.5.5: + optional: true + + image-size@0.8.3: + dependencies: + queue: 6.0.1 + + immutable@5.1.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@2.1.0: {} + + import-lazy@4.0.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + inline-style-parser@0.2.7: {} + + inquirer@6.5.2: + dependencies: + ansi-escapes: 3.2.0 + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-width: 2.2.1 + external-editor: 3.1.0 + figures: 2.0.0 + lodash: 4.18.1 + mute-stream: 0.0.7 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 2.1.1 + strip-ansi: 5.2.0 + through: 2.3.8 + + inquirer@8.2.7(@types/node@18.19.130): + dependencies: + '@inquirer/external-editor': 1.0.3(@types/node@18.19.130) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + figures: 3.2.0 + lodash: 4.18.1 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + transitivePeerDependencies: + - '@types/node' + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.3 + side-channel: 1.1.0 + + into-stream@3.1.0: + dependencies: + from2: 2.3.0 + p-is-promise: 1.1.0 + + ip@1.1.9: {} + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.4.0: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-buffer@2.0.5: {} + + is-callable@1.2.7: {} + + is-ci@1.2.1: + dependencies: + ci-info: 1.6.0 + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.3 + + is-css-request@1.0.1: {} + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-extendable@0.1.1: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-installed-globally@0.1.0: + dependencies: + global-dirs: 0.1.1 + is-path-inside: 1.0.1 + + is-interactive@1.0.0: {} + + is-invalid-path@1.0.2: {} + + is-map@2.0.3: {} + + is-mobile@4.0.0: {} + + is-natural-number@4.0.1: {} + + is-negative-zero@2.0.3: {} + + is-npm@1.0.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@1.0.1: {} + + is-object@1.0.2: {} + + is-path-inside@1.0.1: + dependencies: + path-is-inside: 1.0.2 + + is-path-inside@3.0.3: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-property@1.0.2: {} + + is-redirect@1.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + is-retry-allowed@1.2.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + + is-unicode-supported@0.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-what@3.14.1: {} + + is-windows@0.2.0: {} + + is-wsl@1.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + istextorbinary@2.6.0: + dependencies: + binaryextensions: 2.3.0 + editions: 2.3.1 + textextensions: 2.6.0 + + isurl@1.0.0: + dependencies: + has-to-string-tag-x: 1.4.1 + is-object: 1.0.2 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + j-component@1.4.9: + dependencies: + expr-parser: 1.0.0 + miniprogram-api-typings: 3.12.3 + miniprogram-exparser: 2.29.1 + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-stringify@2.1.0: {} + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.130 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 18.19.130 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 18.19.130 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.7: {} + + jiti@2.7.0: {} + + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + js-base64@3.7.8: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsdom@24.1.3: + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + form-data: 4.0.5 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.23 + parse5: 7.3.0 + rrweb-cssom: 0.7.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.20.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-buffer@3.0.0: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + 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@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@3.0.1: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonp-retry@1.0.3: + dependencies: + object-assign: 4.1.1 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@3.0.0: + dependencies: + json-buffer: 3.0.0 + + keyv@3.1.0: + dependencies: + json-buffer: 3.0.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@4.1.5: {} + + known-css-properties@0.26.0: {} + + latest-version@3.1.0: + dependencies: + package-json: 4.0.1 + + latest-version@5.1.0: + dependencies: + package-json: 6.5.0 + + launch-editor@2.13.2: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.3 + + lazy-cache@1.0.4: {} + + less-loader@12.3.2(less@3.13.1)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + less: 3.13.1 + optionalDependencies: + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + less@3.13.1: + dependencies: + copy-anything: 2.0.6 + tslib: 1.14.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + native-request: 1.1.2 + source-map: 0.6.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + loader-runner@4.3.2: {} + + loader-utils@1.4.2: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + loader-utils@3.3.1: {} + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.2 + pkg-types: 2.3.1 + quansync: 0.2.11 + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} + + lodash.isequal@4.5.0: {} + + lodash.kebabcase@4.1.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash@4.18.1: {} + + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + loglevel-plugin-prefix@0.8.4: {} + + loglevel@1.9.2: {} + + long@5.3.2: {} + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lottie-react@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + lottie-web: 5.13.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + lottie-web@5.13.0: {} + + lower-case@1.1.4: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lowercase-keys@1.0.0: {} + + lowercase-keys@1.0.1: {} + + lowercase-keys@2.0.0: {} + + lowlight@3.3.0: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + highlight.js: 11.11.1 + + lru-cache@10.4.3: {} + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru.min@1.1.4: {} + + lz-string@1.5.0: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@1.3.0: + dependencies: + pify: 3.0.0 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-error@1.3.6: {} + + make-fetch-happen@2.6.0: + dependencies: + agentkeepalive: 3.5.3 + cacache: 10.0.4 + http-cache-semantics: 3.8.1 + http-proxy-agent: 2.1.0 + https-proxy-agent: 2.2.4 + lru-cache: 4.1.5 + mississippi: 1.3.1 + node-fetch-npm: 2.0.4 + promise-retry: 1.1.1 + socks-proxy-agent: 3.0.1 + ssri: 5.3.0 + transitivePeerDependencies: + - supports-color + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + math-intrinsics@1.1.0: {} + + mathml-tag-names@2.1.3: {} + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mdast-util-from-markdown@2.0.3: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.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-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + 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.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + 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.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@1.1.4: {} + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.1.0 + + memoize-one@6.0.0: {} + + meow@9.0.0: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.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-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.3.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.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.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.2 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.5.2: {} + + mimer@1.1.0: {} + + mimic-fn@1.2.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@1.0.1: {} + + min-indent@1.0.1: {} + + mini-css-extract-plugin@2.10.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + schema-utils: 4.3.3 + tapable: 2.3.3 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + minimalistic-assert@1.0.1: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.14 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.14 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.1.0 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.0 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.8: {} + + minipass@6.0.2: {} + + minipass@7.1.3: {} + + miniprogram-api-typings@3.12.3: {} + + miniprogram-compiler@0.2.3: + dependencies: + glob: 7.2.3 + unescape-js: 1.1.4 + + miniprogram-exparser@2.29.1: {} + + miniprogram-simulate@1.6.1: + dependencies: + csso: 3.5.1 + j-component: 1.4.9 + less: 3.13.1 + miniprogram-compiler: 0.2.3 + postcss: 7.0.39 + pretty-format: 26.6.2 + + mississippi@1.3.1: + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.5 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 1.0.3 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + + mississippi@2.0.0: + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.5 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 2.0.1 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mlly@1.8.2: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 + + mobile-detect@1.4.5: {} + + mobx-react-lite@3.4.3(mobx@6.15.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + mobx: 6.15.3 + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + mobx@6.15.3: {} + + move-concurrently@1.0.1: + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + + ms@2.0.0: {} + + ms@2.1.3: {} + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + mute-stream@0.0.7: {} + + mute-stream@0.0.8: {} + + mysql2@3.22.3(@types/node@18.19.130): + dependencies: + '@types/node': 18.19.130 + aws-ssl-profiles: 1.1.2 + denque: 2.1.0 + generate-function: 2.3.1 + iconv-lite: 0.7.2 + long: 5.3.2 + lru.min: 1.1.4 + named-placeholders: 1.1.6 + sql-escaper: 1.3.3 + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + named-placeholders@1.1.6: + dependencies: + lru.min: 1.1.4 + + nanoid@3.3.12: {} + + native-request@1.1.2: + optional: true + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-addon-api@7.1.1: + optional: true + + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + + node-fetch-npm@2.0.4: + dependencies: + encoding: 0.1.13 + json-parse-better-errors: 1.0.2 + safe-buffer: 5.2.1 + + node-forge@1.4.0: {} + + node-releases@2.0.38: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.12 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.16.2 + semver: 7.8.0 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-url@2.0.1: + dependencies: + prepend-http: 2.0.0 + query-string: 5.1.1 + sort-keys: 2.0.0 + + normalize-url@4.5.1: {} + + npm-conf@1.1.3: + dependencies: + config-chain: 1.1.13 + pify: 3.0.0 + + npm-package-arg@5.1.2: + dependencies: + hosted-git-info: 2.8.9 + osenv: 0.1.5 + semver: 5.7.2 + validate-npm-package-name: 3.0.0 + + npm-pick-manifest@1.0.4: + dependencies: + npm-package-arg: 5.1.2 + semver: 5.7.2 + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + 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.23: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obuf@1.1.2: {} + + ohash@2.0.11: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@6.4.0: + dependencies: + is-wsl: 1.1.0 + + 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 + + ora@1.4.0: + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 1.3.1 + log-symbols: 2.2.0 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-homedir@1.0.2: {} + + os-tmpdir@1.0.2: {} + + osenv@0.1.5: + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-cancelable@0.4.1: {} + + p-cancelable@1.1.0: {} + + p-event@2.3.1: + dependencies: + p-timeout: 2.0.1 + + p-finally@1.0.0: {} + + p-is-promise@1.1.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-timeout@2.0.1: + dependencies: + p-finally: 1.0.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-json@4.0.1: + dependencies: + got: 6.7.1 + registry-auth-token: 3.4.0 + registry-url: 3.1.0 + semver: 5.7.2 + + package-json@6.5.0: + dependencies: + got: 9.6.0 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 + semver: 6.3.1 + + pacote@2.7.38: + dependencies: + bluebird: 3.7.2 + cacache: 9.3.0 + glob: 7.2.3 + lru-cache: 4.1.5 + make-fetch-happen: 2.6.0 + minimatch: 3.1.5 + mississippi: 1.3.1 + normalize-package-data: 2.5.0 + npm-package-arg: 5.1.2 + npm-pick-manifest: 1.0.4 + osenv: 0.1.5 + promise-inflight: 1.0.1(bluebird@3.7.2) + promise-retry: 1.1.1 + protoduck: 4.0.0 + safe-buffer: 5.2.1 + semver: 5.7.2 + ssri: 4.1.6 + tar-fs: 1.16.6 + tar-stream: 1.6.2 + unique-filename: 1.1.1 + which: 1.3.1 + transitivePeerDependencies: + - supports-color + + parallel-transform@1.2.0: + dependencies: + cyclist: 1.0.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-git-config@0.2.0: + dependencies: + ini: 1.3.8 + + parse-git-config@1.1.1: + dependencies: + extend-shallow: 2.0.1 + fs-exists-sync: 0.1.0 + git-config-path: 1.0.1 + ini: 1.3.8 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-passwd@1.0.0: {} + + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-is-inside@1.0.2: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 6.0.2 + + path-to-regexp@0.1.13: {} + + path-to-regexp@1.9.0: + dependencies: + isarray: 0.0.1 + + path-to-regexp@3.3.0: {} + + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + path-type@6.0.0: {} + + pathe@2.0.3: {} + + pend@1.2.0: {} + + perfect-debounce@2.1.0: {} + + performance-now@2.1.0: {} + + picocolors@0.2.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pify@4.0.1: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pirates@4.0.7: {} + + pkg-dir@3.0.0: + dependencies: + find-up: 3.0.0 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + pkg-types@2.3.1: + dependencies: + confbox: 0.2.4 + exsolve: 1.0.8 + pathe: 2.0.3 + + platform@1.3.6: {} + + possible-typed-array-names@1.1.0: {} + + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-calc@9.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-clamp@4.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-color-functional-notation@7.0.12(postcss@8.5.14): + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + postcss-color-hex-alpha@10.0.0(postcss@8.5.14): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-color-rebeccapurple@10.0.0(postcss@8.5.14): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-colormin@6.1.0(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-convert-values@6.1.0(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-custom-media@11.0.6(postcss@8.5.14): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.14 + + postcss-custom-properties@14.0.6(postcss@8.5.14): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-custom-selectors@8.0.5(postcss@8.5.14): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-dir-pseudo-class@9.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-discard-comments@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-discard-duplicates@6.0.3(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-discard-empty@6.0.3(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-discard-overridden@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-double-position-gradients@6.0.4(postcss@8.5.14): + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-focus-visible@10.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-focus-within@9.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-font-variant@5.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-gap-properties@6.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-html-transform@4.1.11(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-image-set-function@7.0.0(postcss@8.5.14): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-import@15.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.12 + + postcss-import@16.1.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.12 + + postcss-js@4.1.0(postcss@8.5.14): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.14 + + postcss-lab-function@7.0.12(postcss@8.5.14): + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/utilities': 2.0.0(postcss@8.5.14) + postcss: 8.5.14 + + postcss-load-config@4.0.2(postcss@8.5.14)(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.4 + optionalDependencies: + postcss: 8.5.14 + ts-node: 10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2) + + postcss-loader@8.2.1(postcss@8.5.14)(typescript@5.7.2)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + cosmiconfig: 9.0.1(typescript@5.7.2) + jiti: 2.7.0 + postcss: 8.5.14 + semver: 7.8.0 + optionalDependencies: + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + transitivePeerDependencies: + - typescript + + postcss-logical@8.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-media-query-parser@0.2.3: {} + + postcss-merge-longhand@6.0.5(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + stylehacks: 6.1.1(postcss@8.5.14) + + postcss-merge-rules@6.1.1(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.2(postcss@8.5.14) + postcss: 8.5.14 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@6.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@6.0.3(postcss@8.5.14): + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.2(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-minify-params@6.1.0(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + cssnano-utils: 4.0.2(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@6.0.4(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.14): + dependencies: + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-modules-values@4.0.0(postcss@8.5.14): + dependencies: + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 + + postcss-nested@6.2.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 6.1.2 + + postcss-nesting@13.0.2(postcss@8.5.14): + dependencies: + '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-normalize-charset@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-normalize-display-values@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@6.1.0(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-opacity-percentage@3.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-ordered-values@6.0.2(postcss@8.5.14): + dependencies: + cssnano-utils: 4.0.2(postcss@8.5.14) + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-overflow-shorthand@6.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-page-break@3.0.4(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-place@10.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-plugin-constparse@4.1.11(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-plugin-shared@1.1.5(postcss@8.5.14): + dependencies: + defu: 6.1.7 + postcss: 8.5.14 + + postcss-preset-env@10.6.1(postcss@8.5.14): + dependencies: + '@csstools/postcss-alpha-function': 1.0.1(postcss@8.5.14) + '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.5.14) + '@csstools/postcss-color-function': 4.0.12(postcss@8.5.14) + '@csstools/postcss-color-function-display-p3-linear': 1.0.1(postcss@8.5.14) + '@csstools/postcss-color-mix-function': 3.0.12(postcss@8.5.14) + '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.2(postcss@8.5.14) + '@csstools/postcss-content-alt-text': 2.0.8(postcss@8.5.14) + '@csstools/postcss-contrast-color-function': 2.0.12(postcss@8.5.14) + '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.14) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.14) + '@csstools/postcss-gamut-mapping': 2.0.11(postcss@8.5.14) + '@csstools/postcss-gradients-interpolation-method': 5.0.12(postcss@8.5.14) + '@csstools/postcss-hwb-function': 4.0.12(postcss@8.5.14) + '@csstools/postcss-ic-unit': 4.0.4(postcss@8.5.14) + '@csstools/postcss-initial': 2.0.1(postcss@8.5.14) + '@csstools/postcss-is-pseudo-class': 5.0.3(postcss@8.5.14) + '@csstools/postcss-light-dark-function': 2.0.11(postcss@8.5.14) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.14) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.14) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.14) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.14) + '@csstools/postcss-logical-viewport-units': 3.0.4(postcss@8.5.14) + '@csstools/postcss-media-minmax': 2.0.9(postcss@8.5.14) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.14) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.14) + '@csstools/postcss-normalize-display-values': 4.0.1(postcss@8.5.14) + '@csstools/postcss-oklab-function': 4.0.12(postcss@8.5.14) + '@csstools/postcss-position-area-property': 1.0.0(postcss@8.5.14) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.14) + '@csstools/postcss-property-rule-prelude-list': 1.0.0(postcss@8.5.14) + '@csstools/postcss-random-function': 2.0.1(postcss@8.5.14) + '@csstools/postcss-relative-color-syntax': 3.0.12(postcss@8.5.14) + '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.14) + '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.14) + '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.14) + '@csstools/postcss-syntax-descriptor-syntax-production': 1.0.1(postcss@8.5.14) + '@csstools/postcss-system-ui-font-family': 1.0.0(postcss@8.5.14) + '@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.14) + '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.14) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.14) + autoprefixer: 10.5.0(postcss@8.5.14) + browserslist: 4.28.2 + css-blank-pseudo: 7.0.1(postcss@8.5.14) + css-has-pseudo: 7.0.3(postcss@8.5.14) + css-prefers-color-scheme: 10.0.0(postcss@8.5.14) + cssdb: 8.8.1 + postcss: 8.5.14 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.14) + postcss-clamp: 4.1.0(postcss@8.5.14) + postcss-color-functional-notation: 7.0.12(postcss@8.5.14) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.14) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.14) + postcss-custom-media: 11.0.6(postcss@8.5.14) + postcss-custom-properties: 14.0.6(postcss@8.5.14) + postcss-custom-selectors: 8.0.5(postcss@8.5.14) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.14) + postcss-double-position-gradients: 6.0.4(postcss@8.5.14) + postcss-focus-visible: 10.0.1(postcss@8.5.14) + postcss-focus-within: 9.0.1(postcss@8.5.14) + postcss-font-variant: 5.0.0(postcss@8.5.14) + postcss-gap-properties: 6.0.0(postcss@8.5.14) + postcss-image-set-function: 7.0.0(postcss@8.5.14) + postcss-lab-function: 7.0.12(postcss@8.5.14) + postcss-logical: 8.1.0(postcss@8.5.14) + postcss-nesting: 13.0.2(postcss@8.5.14) + postcss-opacity-percentage: 3.0.0(postcss@8.5.14) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.14) + postcss-page-break: 3.0.4(postcss@8.5.14) + postcss-place: 10.0.0(postcss@8.5.14) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.14) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.14) + postcss-selector-not: 8.0.1(postcss@8.5.14) + + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-pxtrans@1.0.4(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-plugin-shared: 1.1.5(postcss@8.5.14) + + postcss-pxtransform@4.1.11(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-reduce-initial@6.1.0(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + caniuse-api: 3.0.0 + postcss: 8.5.14 + + postcss-reduce-transforms@6.0.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + postcss-rem-to-responsive-pixel@7.0.4(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-plugin-shared: 1.1.5(postcss@8.5.14) + + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-rule-unit-converter@0.2.2(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-plugin-shared: 1.1.5(postcss@8.5.14) + + postcss-safe-parser@6.0.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + postcss-selector-not@8.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@6.0.3(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + svgo: 3.3.3 + + postcss-unique-selectors@6.0.4(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 6.1.2 + + postcss-url@10.1.3(postcss@8.5.14): + dependencies: + make-dir: 3.1.0 + mime: 2.5.2 + minimatch: 3.0.8 + postcss: 8.5.14 + xxhashjs: 0.2.2 + + postcss-value-parser@4.2.0: {} + + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + postcss@8.5.14: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prepend-http@1.0.4: {} + + prepend-http@2.0.0: {} + + pretty-bytes@5.6.0: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.18.1 + renderkid: 3.0.0 + + pretty-format@26.6.2: + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + + pretty-time@1.1.0: {} + + process-nextick-args@2.0.1: {} + + promise-inflight@1.0.1(bluebird@3.7.2): + optionalDependencies: + bluebird: 3.7.2 + + promise-polyfill@7.1.2: {} + + promise-retry@1.1.1: + dependencies: + err-code: 1.1.2 + retry: 0.10.1 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-expr@2.0.6: {} + + property-information@6.5.0: {} + + property-information@7.1.0: {} + + proto-list@1.2.4: {} + + protoduck@4.0.0: + dependencies: + genfun: 4.0.1 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@2.1.0: {} + + prr@1.0.1: + optional: true + + pseudomap@1.0.2: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@1.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + pump@2.0.1: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + pumpify@1.5.1: + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + + punycode@2.3.1: {} + + qs@6.15.1: + dependencies: + side-channel: 1.1.0 + + quansync@0.2.11: {} + + query-string@5.1.1: + dependencies: + decode-uri-component: 0.2.2 + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + + query-string@9.3.1: + dependencies: + decode-uri-component: 0.4.1 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + queue@6.0.1: + dependencies: + inherits: 2.0.4 + + quick-lru@4.0.1: {} + + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + rc9@3.0.1: + dependencies: + defu: 6.1.7 + destr: 2.0.5 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-dom@16.14.0(react@16.14.0): + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 16.14.0 + scheduler: 0.19.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-fast-compare@3.2.2: {} + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-markdown@10.1.0(@types/react@18.3.28)(react@18.3.1): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 18.3.28 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.1 + react: 18.3.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + react-reconciler@0.23.0(react@16.14.0): + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 16.14.0 + scheduler: 0.17.0 + + react-reconciler@0.29.0(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-refresh@0.14.2: {} + + react-router-dom@5.3.4(react@18.3.1): + dependencies: + '@babel/runtime': 7.29.2 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-router-dom@7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + + react-router@5.3.4(react@18.3.1): + dependencies: + '@babel/runtime': 7.29.2 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 1.9.0 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 16.13.1 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-router@7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + cookie: 1.1.1 + react: 18.3.1 + set-cookie-parser: 2.7.2 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.29.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@16.14.0: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.2 + + readdirp@4.1.2: {} + + readdirp@5.0.0: {} + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.11.1: {} + + regex-parser@2.3.1: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + registry-auth-token@3.4.0: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + + registry-auth-token@4.2.2: + dependencies: + rc: 1.2.8 + + registry-url@3.1.0: + dependencies: + rc: 1.2.8 + + registry-url@5.1.0: + dependencies: + rc: 1.2.8 + + regjsgen@0.8.0: {} + + regjsparser@0.13.1: + dependencies: + jsesc: 3.1.0 + + rehype-highlight@7.0.2: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-text: 4.0.2 + lowlight: 3.3.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + rehype-raw@6.1.1: + dependencies: + '@types/hast': 2.3.10 + hast-util-raw: 7.2.3 + unified: 10.1.2 + + relateurl@0.2.7: {} + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remote-origin-url@0.4.0: + dependencies: + parse-git-config: 0.2.0 + + remote-origin-url@0.5.3: + dependencies: + parse-git-config: 1.1.1 + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.18.1 + strip-ansi: 6.0.1 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-dir@0.1.1: + dependencies: + expand-tilde: 1.2.2 + global-modules: 0.2.3 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pathname@3.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve-url-loader@5.0.0: + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.5.14 + source-map: 0.6.1 + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.6: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + node-exports-info: 1.6.0 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@1.0.2: + dependencies: + lowercase-keys: 1.0.1 + + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.10.1: {} + + retry@0.13.1: {} + + reusify@1.1.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@3.30.0: + optionalDependencies: + fsevents: 2.3.3 + + rrweb-cssom@0.7.1: {} + + rrweb-cssom@0.8.0: {} + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + run-queue@1.0.3: + dependencies: + aproba: 1.2.0 + + runes2@1.1.4: {} + + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.4: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + sass-loader@14.2.1(sass@1.99.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + neo-async: 2.6.2 + optionalDependencies: + sass: 1.99.0 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + sass@1.99.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.5 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 + + sax@1.2.4: {} + + sax@1.4.4: {} + + sax@1.6.0: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.17.0: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + scheduler@0.19.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@2.7.1: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.15.0 + ajv-keywords: 3.5.2(ajv@6.15.0) + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.15.0 + ajv-keywords: 3.5.2(ajv@6.15.0) + + schema-utils@4.3.3: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) + + scss-bundle@3.1.2: + dependencies: + '@types/archy': 0.0.31 + '@types/debug': 4.1.13 + '@types/fs-extra': 8.1.5 + '@types/glob': 7.2.0 + '@types/lodash.debounce': 4.0.9 + '@types/sass': 1.45.0 + archy: 1.0.0 + chalk: 3.0.0 + chokidar: 3.6.0 + commander: 4.1.1 + fs-extra: 8.1.0 + globs: 0.1.4 + lodash.debounce: 4.0.8 + loglevel: 1.9.2 + loglevel-plugin-prefix: 0.8.4 + pretty-bytes: 5.6.0 + sass: 1.99.0 + tslib: 1.14.1 + + seek-bzip@1.0.6: + dependencies: + commander: 2.20.3 + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.14 + node-forge: 1.4.0 + + semver-diff@2.1.0: + dependencies: + semver: 5.7.2 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + semver@7.8.0: {} + + send@0.19.2: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + seroval-plugins@1.5.4(seroval@1.5.4): + dependencies: + seroval: 1.5.4 + + seroval@1.5.4: {} + + serve-index@1.9.2: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.8.1 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + + set-cookie-parser@2.7.2: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setprototypeof@1.2.0: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.8.3: {} + + shortid@2.2.17: + dependencies: + nanoid: 3.3.12 + + side-channel-list@1.0.1: + 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.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + smart-buffer@1.1.15: {} + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + socks-proxy-agent@3.0.1: + dependencies: + agent-base: 4.3.0 + socks: 1.1.10 + + socks@1.1.10: + dependencies: + ip: 1.1.9 + smart-buffer: 1.1.15 + + solid-js@1.9.12: + dependencies: + csstype: 3.2.3 + seroval: 1.5.4 + seroval-plugins: 1.5.4(seroval@1.5.4) + + sort-keys-length@1.0.1: + dependencies: + sort-keys: 1.1.2 + + sort-keys@1.1.2: + dependencies: + is-plain-obj: 1.1.0 + + sort-keys@2.0.0: + dependencies: + is-plain-obj: 1.1.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.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.23 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 + + spdx-license-ids@3.0.23: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.4.3 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.4.3 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + split-on-first@3.0.0: {} + + sql-escaper@1.3.3: {} + + ssri@4.1.6: + dependencies: + safe-buffer: 5.2.1 + + ssri@5.3.0: + dependencies: + safe-buffer: 5.2.1 + + stackframe@1.3.4: {} + + statuses@1.5.0: {} + + statuses@2.0.2: {} + + std-env@3.10.0: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + stream-each@1.2.3: + dependencies: + end-of-stream: 1.4.5 + stream-shift: 1.0.3 + + stream-shift@1.0.3: {} + + strict-uri-encode@1.1.0: {} + + string-width@2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + + 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.2.0 + + string.fromcodepoint@0.2.1: {} + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@4.0.0: + dependencies: + ansi-regex: 3.0.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@3.0.0: {} + + strip-dirs@2.1.0: + dependencies: + is-natural-number: 4.0.1 + + strip-eof@1.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + strip-outer@1.0.1: + dependencies: + escape-string-regexp: 1.0.5 + + style-loader@3.3.4(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + style-search@0.1.0: {} + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + stylehacks@6.1.1(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + postcss: 8.5.14 + postcss-selector-parser: 6.1.2 + + stylelint@14.16.1: + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.1.0 + css-functions-list: 3.3.3 + debug: 4.4.3 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.3.2 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.26.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.14 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 6.0.0(postcss@8.5.14) + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + supports-hyperlinks: 2.3.0 + svg-tags: 1.0.0 + table: 6.9.0 + v8-compile-cache: 2.4.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + stylus-loader@8.1.3(stylus@0.64.0)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + fast-glob: 3.3.3 + normalize-path: 3.0.0 + stylus: 0.64.0 + optionalDependencies: + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + stylus@0.64.0: + dependencies: + '@adobe/css-tools': 4.3.3 + debug: 4.4.3 + glob: 10.4.5 + sax: 1.4.4 + source-map: 0.7.6 + transitivePeerDependencies: + - supports-color + + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.16 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + 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: {} + + svgo@3.3.3: + dependencies: + commander: 7.2.0 + css-select: 5.2.2 + css-tree: 2.3.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.6.0 + + swiper@11.1.0: {} + + swiper@11.1.15: {} + + symbol-tree@3.2.4: {} + + table@6.9.0: + dependencies: + ajv: 8.20.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwindcss-config@1.1.5: + dependencies: + '@weapp-tailwindcss/shared': 1.1.3 + jiti: 2.7.0 + lilconfig: 3.1.3 + + tailwindcss-patch@9.0.1(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2))): + dependencies: + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@tailwindcss-mangle/config': 7.0.1 + '@tailwindcss/node': 4.3.0 + cac: 6.7.14 + consola: 3.4.2 + fs-extra: 11.3.5 + local-pkg: 1.1.2 + pathe: 2.0.3 + postcss: 8.5.14 + semver: 7.7.4 + tailwindcss-config: 1.1.5 + optionalDependencies: + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2)) + transitivePeerDependencies: + - magicast + - supports-color + + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.14 + postcss-import: 15.1.0(postcss@8.5.14) + postcss-js: 4.1.0(postcss@8.5.14) + postcss-load-config: 4.0.2(postcss@8.5.14)(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2)) + postcss-nested: 6.2.0(postcss@8.5.14) + postcss-selector-parser: 6.1.2 + resolve: 1.22.12 + sucrase: 3.35.1 + transitivePeerDependencies: + - ts-node + + tailwindcss@4.3.0: {} + + tapable@2.3.3: {} + + tar-fs@1.16.6: + dependencies: + chownr: 1.1.4 + mkdirp: 0.5.6 + pump: 1.0.3 + tar-stream: 1.6.2 + + tar-stream@1.6.2: + dependencies: + bl: 1.2.3 + buffer-alloc: 1.2.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + readable-stream: 2.3.8 + to-buffer: 1.2.2 + xtend: 4.0.2 + + term-size@1.2.0: + dependencies: + execa: 0.7.0 + + terser-webpack-plugin@5.6.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(esbuild@0.21.5)(lightningcss@1.32.0)(postcss@8.5.14)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.47.1 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + optionalDependencies: + '@swc/core': 1.3.96(@swc/helpers@0.5.21) + esbuild: 0.21.5 + lightningcss: 1.32.0 + postcss: 8.5.14 + + terser@5.47.1: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + textextensions@2.6.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through@2.3.8: {} + + thunky@1.1.0: {} + + timed-out@4.0.1: {} + + tiny-case@1.0.3: {} + + tiny-invariant@1.3.3: {} + + tiny-warning@1.0.3: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + + to-readable-stream@1.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toposort@2.0.2: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + + trim-lines@3.0.1: {} + + trim-newlines@3.0.1: {} + + trim-repeated@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + trough@2.2.0: {} + + ts-api-utils@1.4.3(typescript@5.7.2): + dependencies: + typescript: 5.7.2 + + ts-api-utils@2.5.0(typescript@5.7.2): + dependencies: + typescript: 5.7.2 + + ts-interface-checker@0.1.13: {} + + ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.130 + acorn: 8.16.0 + acorn-walk: 8.3.5 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.4 + make-error: 1.3.6 + typescript: 5.7.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.96(@swc/helpers@0.5.21) + + tsconfig-paths-webpack-plugin@4.2.0: + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.21.2 + tapable: 2.3.3 + tsconfig-paths: 4.2.0 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.18.1: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@2.19.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typedarray@0.0.6: {} + + typescript@5.7.2: {} + + ufo@1.6.4: {} + + uglify-js@3.19.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + undici-types@5.26.5: {} + + unescape-js@1.1.4: + dependencies: + string.fromcodepoint: 0.2.1 + + unfetch@4.2.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.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unicorn-magic@0.3.0: {} + + unified@10.1.2: + dependencies: + '@types/unist': 2.0.11 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unique-filename@1.1.1: + dependencies: + unique-slug: 2.0.2 + + unique-slug@2.0.2: + dependencies: + imurmurhash: 0.1.4 + + unique-string@1.0.0: + dependencies: + crypto-random-string: 1.0.0 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.11 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@4.0.4: + dependencies: + '@types/unist': 2.0.11 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.11 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + universal-router@8.3.0: + dependencies: + path-to-regexp: 3.3.0 + + universal-router@9.2.1: + dependencies: + path-to-regexp: 6.3.0 + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unzip-response@2.0.1: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-notifier@2.5.0: + dependencies: + boxen: 1.3.0 + chalk: 2.4.2 + configstore: 3.1.5 + import-lazy: 2.1.0 + is-ci: 1.2.1 + is-installed-globally: 0.1.0 + is-npm: 1.0.0 + latest-version: 3.1.0 + semver-diff: 2.1.0 + xdg-basedir: 3.0.0 + + upper-case-first@2.0.2: + dependencies: + tslib: 2.8.1 + + upper-case@1.1.3: {} + + upper-case@2.0.2: + dependencies: + tslib: 2.8.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse-lax@1.0.0: + dependencies: + prepend-http: 1.0.4 + + url-parse-lax@3.0.0: + dependencies: + prepend-http: 2.0.0 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + url-to-options@1.0.1: {} + + util-deprecate@1.0.2: {} + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-compile-cache@2.4.0: {} + + validate-html-nesting@1.2.4: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@3.0.0: + dependencies: + builtins: 1.0.3 + + validate-npm-package-name@5.0.1: {} + + value-equal@1.0.1: {} + + vary@1.1.2: {} + + vfile-location@4.1.0: + dependencies: + '@types/unist': 2.0.11 + vfile: 5.3.7 + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.11 + unist-util-stringify-position: 3.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.11 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vm2@3.11.3: + dependencies: + acorn: 8.16.0 + acorn-walk: 8.3.5 + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + watchpack@2.5.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + weapp-qrcode@1.0.0: + dependencies: + extend: 3.0.2 + + weapp-tailwindcss@4.12.0(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2))): + dependencies: + '@ast-core/escape': 1.0.1 + '@babel/parser': 7.29.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@tailwindcss-mangle/config': 7.0.2 + '@vue/compiler-dom': 3.5.34 + '@vue/compiler-sfc': 3.5.34 + '@weapp-core/escape': 7.0.0 + '@weapp-core/regex': 1.0.1 + '@weapp-tailwindcss/logger': 1.1.0 + '@weapp-tailwindcss/postcss': 2.2.0 + '@weapp-tailwindcss/reset': 0.1.0(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2))) + '@weapp-tailwindcss/shared': 1.1.3 + cac: 6.7.14 + comment-json: 4.6.2 + debug: 4.4.3 + fast-glob: 3.3.3 + htmlparser2: 10.1.0 + loader-utils: 2.0.4 + local-pkg: 1.1.2 + lru-cache: 10.4.3 + magic-string: 0.30.21 + semver: 7.7.4 + tailwindcss-patch: 9.0.1(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.3.96(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@5.7.2))) + webpack-sources: 3.3.4 + yaml: 2.8.4 + transitivePeerDependencies: + - magicast + - supports-color + - tailwindcss + + web-namespaces@2.0.1: {} + + webidl-conversions@7.0.0: {} + + webpack-chain@6.5.1: + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.1.0 + + webpack-dev-middleware@5.3.4(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.3.3 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.25 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.10 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.1 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.22.2 + graceful-fs: 4.2.11 + html-entities: 2.6.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.4.0 + launch-editor: 2.13.2 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.3.3 + selfsigned: 2.4.1 + serve-index: 1.9.2 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 5.3.4(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + ws: 8.20.1 + optionalDependencies: + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-format-messages@3.0.1: + dependencies: + kleur: 4.1.5 + + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-sources@3.3.4: {} + + webpack-sources@3.4.1: {} + + webpack-virtual-modules@0.6.2: {} + + webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 0.0.51 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.16.0 + acorn-import-assertions: 1.9.0(acorn@8.16.0) + browserslist: 4.28.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.21.2 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.2 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.3.3 + terser-webpack-plugin: 5.6.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(esbuild@0.21.5)(lightningcss@1.32.0)(postcss@8.5.14)(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)) + watchpack: 2.5.1 + webpack-sources: 3.4.1 + transitivePeerDependencies: + - '@minify-html/node' + - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso + - esbuild + - html-minifier-terser + - lightningcss + - postcss + - uglify-js + + webpackbar@5.0.2(webpack@5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14)): + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + pretty-time: 1.1.0 + std-env: 3.10.0 + webpack: 5.78.0(@swc/core@1.3.96(@swc/helpers@0.5.21))(postcss@8.5.14) + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-fetch@2.0.4: {} + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.20: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@2.0.1: + dependencies: + string-width: 2.1.1 + + wildcard@2.0.1: {} + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + 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.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + write-file-atomic@2.4.3: + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.20.1: {} + + xdg-basedir@3.0.0: {} + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + + xtend@4.0.2: {} + + xxhashjs@0.2.2: + dependencies: + cuint: 0.2.2 + + y18n@3.2.2: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.3: {} + + yaml@2.8.4: {} + + yargs-parser@20.2.9: {} + + 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 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yup@1.7.1: + dependencies: + property-expr: 2.0.6 + tiny-case: 1.0.3 + toposort: 2.0.2 + type-fest: 2.19.0 + + zwitch@2.0.4: {} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..15b2d89 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,7 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + 'postcss-nested': {} + } +} diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..b4673a0 --- /dev/null +++ b/project.config.json @@ -0,0 +1,44 @@ +{ + "description": "shop-taro 项目配置", + "setting": { + "urlCheck": false, + "es6": true, + "enhance": true, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": true, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": true, + "lazyloadPlaceholderEnable": false, + "useMultiFrameRuntime": true, + "useApiHook": true, + "useApiHostProcess": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "useIsolateContext": true, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true, + "disableUseStrict": false, + "minifyWXML": true, + "showES6CompileOption": false, + "useCompilerPlugins": false + }, + "compileType": "miniprogram", + "appid": "wx75cbc65759eb981a", + "projectname": "shop-taro", + "condition": {} +} diff --git a/src/api/cms/cmsAd/index.ts b/src/api/cms/cmsAd/index.ts new file mode 100644 index 0000000..37dae87 --- /dev/null +++ b/src/api/cms/cmsAd/index.ts @@ -0,0 +1,115 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsAd, CmsAdParam } from './model'; + + +/** + * 分页查询广告位 + */ +export async function pageCmsAd(params: CmsAdParam) { + const res = await request.get>>( + '/cms/cms-ad/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询广告位列表 + */ +export async function listCmsAd(params?: CmsAdParam) { + const res = await request.get>( + '/cms/cms-ad', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加广告位 + */ +export async function addCmsAd(data: CmsAd) { + const res = await request.post>( + '/cms/cms-ad', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改广告位 + */ +export async function updateCmsAd(data: CmsAd) { + const res = await request.put>( + '/cms/cms-ad', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除广告位 + */ +export async function removeCmsAd(id?: number) { + const res = await request.del>( + '/cms/cms-ad/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除广告位 + */ +export async function removeBatchCmsAd(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-ad/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询广告位 + */ +export async function getCmsAd(id: number) { + const res = await request.get>( + '/cms/cms-ad/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据code查询广告位 + */ +export async function getCmsAdByCode(code: string) { + const res = await request.get>( + '/cms/cms-ad/getByCode/' + code + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsAd/model/index.ts b/src/api/cms/cmsAd/model/index.ts new file mode 100644 index 0000000..3f900a7 --- /dev/null +++ b/src/api/cms/cmsAd/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 广告位 + */ +export interface CmsAd { + // ID + adId?: number; + // 页面ID + designId?: number; + // 广告类型 + adType?: string; + // 广告类型 + type?: string; + // 广告位名称 + name?: string; + // 宽 + width?: string; + // 高 + height?: string; + // 广告图片 + images?: string; + // 图片列表 + imageList?: any[]; + // 路由/链接地址 + path?: string; + // 用户ID + userId?: number; + // 页面ID + pageId?: number; + // 页面名称 + pageName?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + merchantId?: number; + // 图片数组 + imgArr?: any[]; +} + +/** + * 广告位搜索条件 + */ +export interface CmsAdParam extends PageParam { + adId?: number; + adType?: string; + pageId?: number; + pageName?: string; + keywords?: string; +} diff --git a/src/api/cms/cmsAdRecord/index.ts b/src/api/cms/cmsAdRecord/index.ts new file mode 100644 index 0000000..55c042b --- /dev/null +++ b/src/api/cms/cmsAdRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsAdRecord, CmsAdRecordParam } from './model'; + + +/** + * 分页查询广告图片 + */ +export async function pageCmsAdRecord(params: CmsAdRecordParam) { + const res = await request.get>>( + '/cms/cms-ad-record/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询广告图片列表 + */ +export async function listCmsAdRecord(params?: CmsAdRecordParam) { + const res = await request.get>( + '/cms/cms-ad-record', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加广告图片 + */ +export async function addCmsAdRecord(data: CmsAdRecord) { + const res = await request.post>( + '/cms/cms-ad-record', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改广告图片 + */ +export async function updateCmsAdRecord(data: CmsAdRecord) { + const res = await request.put>( + '/cms/cms-ad-record', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除广告图片 + */ +export async function removeCmsAdRecord(id?: number) { + const res = await request.del>( + '/cms/cms-ad-record/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除广告图片 + */ +export async function removeBatchCmsAdRecord(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-ad-record/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询广告图片 + */ +export async function getCmsAdRecord(id: number) { + const res = await request.get>( + '/cms/cms-ad-record/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsAdRecord/model/index.ts b/src/api/cms/cmsAdRecord/model/index.ts new file mode 100644 index 0000000..0ecf5d1 --- /dev/null +++ b/src/api/cms/cmsAdRecord/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 广告图片 + */ +export interface CmsAdRecord { + // ID + adRecordId?: number; + // 广告标题 + title?: string; + // 图片地址 + path?: string; + // 链接地址 + url?: string; + // 广告位ID + adId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 广告图片搜索条件 + */ +export interface CmsAdRecordParam extends PageParam { + adRecordId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticle/index.ts b/src/api/cms/cmsArticle/index.ts new file mode 100644 index 0000000..608c0e5 --- /dev/null +++ b/src/api/cms/cmsArticle/index.ts @@ -0,0 +1,218 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api'; +import type {CmsArticle, CmsArticleParam} from './model'; + +/** + * 分页查询文章 + */ +export async function pageCmsArticle(params: CmsArticleParam) { + const res = await request.get>>( + '/cms/cms-article/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询文章列表 + */ +export async function listCmsArticle(params?: CmsArticleParam) { + const res = await request.get>( + '/cms/cms-article', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加文章 + */ +export async function addCmsArticle(data: CmsArticle) { + const res = await request.post>( + '/cms/cms-article', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改文章 + */ +export async function updateCmsArticle(data: CmsArticle) { + const res = await request.put>( + '/cms/cms-article', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除文章 + */ +export async function removeCmsArticle(id?: number) { + const res = await request.del>( + '/cms/cms-article/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除文章 + */ +export async function removeBatchCmsArticle(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-article/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询文章 + */ +export async function getCmsArticle(id: number) { + const res = await request.get>( + '/cms/cms-article/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function getCount(params?: CmsArticleParam) { + const res = await request.get>('/cms/cms-article/data', { + params + }); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 上一篇 + * @param params + */ +export async function getPrevious(params?: CmsArticleParam) { + const res = await request.get>( + '/cms/cms-article/getPrevious/' + params?.articleId, + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 下一篇 + * @param params + */ +export async function getNext(params?: CmsArticleParam) { + const res = await request.get>( + '/cms/cms-article/getNext/' + params?.articleId, + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 验证文章密码 + * @param params + */ +export async function checkArticlePassword(params?: CmsArticleParam) { + const res = await request.get>( + '/cms/cms-article/checkArticlePassword', + { + params + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +export async function findTags(params?: CmsArticleParam) { + const res = await request.get>( + '/cms/cms-article/findTags', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function pageTags(params?: CmsArticleParam) { + const res = await request.get>( + '/cms/cms-article/pageTags', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 按IDS查询文章 + * @param params + */ +export async function getByIds(params?: CmsArticleParam) { + const res = await request.get>( + '/cms/cms-article/getByIds', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据code查询文章 + */ +export async function getByCode(code: string) { + const res = await request.get>( + '/cms/cms-article/getByCode/' + code + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsArticle/model/index.ts b/src/api/cms/cmsArticle/model/index.ts new file mode 100644 index 0000000..5206b48 --- /dev/null +++ b/src/api/cms/cmsArticle/model/index.ts @@ -0,0 +1,132 @@ +import type { PageParam } from '@/api/index'; + +/** + * 文章 + */ +export interface CmsArticle { + // 文章ID + articleId?: number; + // 文章标题 + title?: string; + // 文章类型 0常规 1视频 + type?: number; + // 文章模型 + model?: string; + // 文章详情页模板 + detail?: string; + // banner图片 + banner?: string; + // 列表显示方式(10小图展示 20大图展示) + showType?: number; + // 话题 + topic?: string; + // 标签 + tags?: any; + // 栏目ID + categoryId?: number; + // 栏目名称 + categoryName?: string; + // 封面图 + image?: string; + // 价格 + price?: number; + startTime?: any; + endTime?: any; + // 缩列图 + thumbnail?: string; + // 来源 + source?: string; + // 产品概述 + overview?: string; + // 虚拟阅读量(仅用作展示) + virtualViews?: number; + // 实际阅读量 + actualViews?: number; + // 购买人数 + bmUsers?: number; + // 浏览权限(0公开 1会员 2密码) + permission?: number; + // 访问密码 + password?: string; + // 确认密码 + password2?: string; + // 发布来源客户端 (APP、H5、小程序等) + platform?: string; + // 文章附件 + files?: string; + // 视频地址 + video?: string; + // 接受的文件类型 + accept?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 点赞数 + likes?: number; + // pdf地址 + pdfUrl?: string; + // 评论数 + commentNumbers?: number; + // 提醒谁看 + toUsers?: string; + // 文章内容 + content?: string; + // 是否推荐 + recommend?: number; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 父级id + parentId?: number; + nickname?: string; + username?: string; + author?: string; + shopId?: number; + tenantName?: string; + logo?: string; + fileList?: any; + // 编辑器类型 + editor?: number; +} + +/** + * 文章搜索条件 + */ +export interface CmsArticleParam extends PageParam { + articleId?: number; + articleIds?: string; + categoryId?: number; + parentId?: number; + status?: number; + // 是否推荐 + recommend?: number; + keywords?: string; + // 验证密码 + password?: string; + password2?: string; + tags?: string; + detail?: string; + sceneType?: string; +} diff --git a/src/api/cms/cmsArticleCategory/index.ts b/src/api/cms/cmsArticleCategory/index.ts new file mode 100644 index 0000000..ba607c1 --- /dev/null +++ b/src/api/cms/cmsArticleCategory/index.ts @@ -0,0 +1,108 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleCategory, CmsArticleCategoryParam } from './model'; + + +/** + * 分页查询文章分类表 + */ +export async function pageCmsArticleCategory(params: CmsArticleCategoryParam) { + const res = await request.get>>( + '/cms/cms-article-category/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询文章分类表列表 + */ +export async function listCmsArticleCategory(params?: CmsArticleCategoryParam) { + const res = await request.get>( + '/cms/cms-article-category', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加文章分类表 + */ +export async function addCmsArticleCategory(data: CmsArticleCategory) { + const res = await request.post>( + '/cms/cms-article-category', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改文章分类表 + */ +export async function updateCmsArticleCategory(data: CmsArticleCategory) { + const res = await request.put>( + '/cms/cms-article-category', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除文章分类表 + */ +export async function removeCmsArticleCategory(id?: number) { + const res = await request.del>( + '/cms/cms-article-category/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除文章分类表 + */ +export async function removeBatchCmsArticleCategory( + data: (number | undefined)[] +) { + const res = await request.del>( + '/cms/cms-article-category/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询文章分类表 + */ +export async function getCmsArticleCategory(id: number) { + const res = await request.get>( + '/cms/cms-article-category/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsArticleCategory/model/index.ts b/src/api/cms/cmsArticleCategory/model/index.ts new file mode 100644 index 0000000..4270213 --- /dev/null +++ b/src/api/cms/cmsArticleCategory/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api/index'; + +/** + * 文章分类表 + */ +export interface CmsArticleCategory { + // 文章分类ID + categoryId?: number; + // 分类标识 + categoryCode?: string; + // 分类名称 + title?: string; + // 类型 0列表 1单页 2外链 + type?: number; + // 分类图片 + image?: string; + // 上级分类ID + parentId?: number; + // 路由/链接地址 + path?: string; + // 组件路径 + component?: string; + // 绑定的页面 + pageId?: number; + // 用户ID + userId?: number; + // 文章数量 + count?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 是否推荐 + recommend?: number; + // 是否显示在首页 + showIndex?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + value?: number; + label?: string; +} + +/** + * 文章分类表搜索条件 + */ +export interface CmsArticleCategoryParam extends PageParam { + categoryId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleComment/index.ts b/src/api/cms/cmsArticleComment/index.ts new file mode 100644 index 0000000..50b9806 --- /dev/null +++ b/src/api/cms/cmsArticleComment/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleComment, CmsArticleCommentParam } from './model'; + + +/** + * 分页查询文章评论表 + */ +export async function pageCmsArticleComment(params: CmsArticleCommentParam) { + const res = await request.get>>( + '/cms/cms-article-comment/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询文章评论表列表 + */ +export async function listCmsArticleComment(params?: CmsArticleCommentParam) { + const res = await request.get>( + '/cms/cms-article-comment', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加文章评论表 + */ +export async function addCmsArticleComment(data: CmsArticleComment) { + const res = await request.post>( + '/cms/cms-article-comment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改文章评论表 + */ +export async function updateCmsArticleComment(data: CmsArticleComment) { + const res = await request.put>( + '/cms/cms-article-comment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除文章评论表 + */ +export async function removeCmsArticleComment(id?: number) { + const res = await request.del>( + '/cms/cms-article-comment/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除文章评论表 + */ +export async function removeBatchCmsArticleComment(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-article-comment/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询文章评论表 + */ +export async function getCmsArticleComment(id: number) { + const res = await request.get>( + '/cms/cms-article-comment/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsArticleComment/model/index.ts b/src/api/cms/cmsArticleComment/model/index.ts new file mode 100644 index 0000000..2490228 --- /dev/null +++ b/src/api/cms/cmsArticleComment/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 文章评论表 + */ +export interface CmsArticleComment { + // 评价ID + commentId?: number; + // 文章ID + articleId?: number; + // 评分 (10好评 20中评 30差评) + score?: number; + // 评价内容 + content?: string; + // 是否为图片评价 + isPicture?: number; + // 评论者ID + userId?: number; + // 被评价者ID + toUserId?: number; + // 回复的评论ID + replyCommentId?: number; + // 回复者ID + replyUserId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 文章评论表搜索条件 + */ +export interface CmsArticleCommentParam extends PageParam { + commentId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleContent/index.ts b/src/api/cms/cmsArticleContent/index.ts new file mode 100644 index 0000000..8c3ca00 --- /dev/null +++ b/src/api/cms/cmsArticleContent/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleContent, CmsArticleContentParam } from './model'; + + +/** + * 分页查询文章记录表 + */ +export async function pageCmsArticleContent(params: CmsArticleContentParam) { + const res = await request.get>>( + '/cms/cms-article-content/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询文章记录表列表 + */ +export async function listCmsArticleContent(params?: CmsArticleContentParam) { + const res = await request.get>( + '/cms/cms-article-content', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加文章记录表 + */ +export async function addCmsArticleContent(data: CmsArticleContent) { + const res = await request.post>( + '/cms/cms-article-content', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改文章记录表 + */ +export async function updateCmsArticleContent(data: CmsArticleContent) { + const res = await request.put>( + '/cms/cms-article-content', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除文章记录表 + */ +export async function removeCmsArticleContent(id?: number) { + const res = await request.del>( + '/cms/cms-article-content/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除文章记录表 + */ +export async function removeBatchCmsArticleContent(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-article-content/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询文章记录表 + */ +export async function getCmsArticleContent(id: number) { + const res = await request.get>( + '/cms/cms-article-content/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsArticleContent/model/index.ts b/src/api/cms/cmsArticleContent/model/index.ts new file mode 100644 index 0000000..432c376 --- /dev/null +++ b/src/api/cms/cmsArticleContent/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 文章记录表 + */ +export interface CmsArticleContent { + // + id?: number; + // 文章ID + articleId?: number; + // 文章内容 + content?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 文章记录表搜索条件 + */ +export interface CmsArticleContentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleCount/index.ts b/src/api/cms/cmsArticleCount/index.ts new file mode 100644 index 0000000..fc02eb1 --- /dev/null +++ b/src/api/cms/cmsArticleCount/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleCount, CmsArticleCountParam } from './model'; + + +/** + * 分页查询点赞文章 + */ +export async function pageCmsArticleCount(params: CmsArticleCountParam) { + const res = await request.get>>( + '/cms/cms-article-count/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询点赞文章列表 + */ +export async function listCmsArticleCount(params?: CmsArticleCountParam) { + const res = await request.get>( + '/cms/cms-article-count', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加点赞文章 + */ +export async function addCmsArticleCount(data: CmsArticleCount) { + const res = await request.post>( + '/cms/cms-article-count', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改点赞文章 + */ +export async function updateCmsArticleCount(data: CmsArticleCount) { + const res = await request.put>( + '/cms/cms-article-count', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除点赞文章 + */ +export async function removeCmsArticleCount(id?: number) { + const res = await request.del>( + '/cms/cms-article-count/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除点赞文章 + */ +export async function removeBatchCmsArticleCount(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-article-count/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询点赞文章 + */ +export async function getCmsArticleCount(id: number) { + const res = await request.get>( + '/cms/cms-article-count/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsArticleCount/model/index.ts b/src/api/cms/cmsArticleCount/model/index.ts new file mode 100644 index 0000000..9cfbc24 --- /dev/null +++ b/src/api/cms/cmsArticleCount/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 点赞文章 + */ +export interface CmsArticleCount { + // 主键ID + id?: number; + // 文章ID + articleId?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 点赞文章搜索条件 + */ +export interface CmsArticleCountParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleLike/index.ts b/src/api/cms/cmsArticleLike/index.ts new file mode 100644 index 0000000..eca990c --- /dev/null +++ b/src/api/cms/cmsArticleLike/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleLike, CmsArticleLikeParam } from './model'; + + +/** + * 分页查询点赞文章 + */ +export async function pageCmsArticleLike(params: CmsArticleLikeParam) { + const res = await request.get>>( + '/cms/cms-article-like/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询点赞文章列表 + */ +export async function listCmsArticleLike(params?: CmsArticleLikeParam) { + const res = await request.get>( + '/cms/cms-article-like', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加点赞文章 + */ +export async function addCmsArticleLike(data: CmsArticleLike) { + const res = await request.post>( + '/cms/cms-article-like', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改点赞文章 + */ +export async function updateCmsArticleLike(data: CmsArticleLike) { + const res = await request.put>( + '/cms/cms-article-like', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除点赞文章 + */ +export async function removeCmsArticleLike(id?: number) { + const res = await request.del>( + '/cms/cms-article-like/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除点赞文章 + */ +export async function removeBatchCmsArticleLike(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-article-like/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询点赞文章 + */ +export async function getCmsArticleLike(id: number) { + const res = await request.get>( + '/cms/cms-article-like/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsArticleLike/model/index.ts b/src/api/cms/cmsArticleLike/model/index.ts new file mode 100644 index 0000000..ccee27a --- /dev/null +++ b/src/api/cms/cmsArticleLike/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 点赞文章 + */ +export interface CmsArticleLike { + // 主键ID + id?: number; + // 文章ID + articleId?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 点赞文章搜索条件 + */ +export interface CmsArticleLikeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsComponents/index.ts b/src/api/cms/cmsComponents/index.ts new file mode 100644 index 0000000..c765f33 --- /dev/null +++ b/src/api/cms/cmsComponents/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsComponents, CmsComponentsParam } from './model'; + + +/** + * 分页查询组件 + */ +export async function pageCmsComponents(params: CmsComponentsParam) { + const res = await request.get>>( + '/cms/cms-components/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询组件列表 + */ +export async function listCmsComponents(params?: CmsComponentsParam) { + const res = await request.get>( + '/cms/cms-components', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加组件 + */ +export async function addCmsComponents(data: CmsComponents) { + const res = await request.post>( + '/cms/cms-components', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改组件 + */ +export async function updateCmsComponents(data: CmsComponents) { + const res = await request.put>( + '/cms/cms-components', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除组件 + */ +export async function removeCmsComponents(id?: number) { + const res = await request.del>( + '/cms/cms-components/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除组件 + */ +export async function removeBatchCmsComponents(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-components/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询组件 + */ +export async function getCmsComponents(id: number) { + const res = await request.get>( + '/cms/cms-components/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsComponents/model/index.ts b/src/api/cms/cmsComponents/model/index.ts new file mode 100644 index 0000000..f3fc8f5 --- /dev/null +++ b/src/api/cms/cmsComponents/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 组件 + */ +export interface CmsComponents { + // ID + id?: number; + // 组件标题 + title?: string; + // 关联导航ID + navigationId?: number; + // 组件类型 + type?: string; + // 页面关键词 + keywords?: string; + // 页面描述 + description?: string; + // 组件路径 + path?: string; + // 组件图标 + icon?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 组件搜索条件 + */ +export interface CmsComponentsParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDesign/index.ts b/src/api/cms/cmsDesign/index.ts new file mode 100644 index 0000000..44696ff --- /dev/null +++ b/src/api/cms/cmsDesign/index.ts @@ -0,0 +1,102 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDesign, CmsDesignParam } from './model'; + + +/** + * 分页查询页面管理记录表 + */ +export async function pageCmsDesign(params: CmsDesignParam) { + const res = await request.get>>( + '/cms/cms-design/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询页面管理记录表列表 + */ +export async function listCmsDesign(params?: CmsDesignParam) { + const res = await request.get>( + '/cms/cms-design', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加页面管理记录表 + */ +export async function addCmsDesign(data: CmsDesign) { + const res = await request.post>( + '/cms/cms-design', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改页面管理记录表 + */ +export async function updateCmsDesign(data: CmsDesign) { + const res = await request.put>( + '/cms/cms-design', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除页面管理记录表 + */ +export async function removeCmsDesign(id?: number) { + const res = await request.del>( + '/cms/cms-design/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除页面管理记录表 + */ +export async function removeBatchCmsDesign(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-design/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询页面管理记录表 + */ +export async function getCmsDesign(id: number) { + const res = await request.get>( + '/cms/cms-design/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsDesign/model/index.ts b/src/api/cms/cmsDesign/model/index.ts new file mode 100644 index 0000000..d1a8c1c --- /dev/null +++ b/src/api/cms/cmsDesign/model/index.ts @@ -0,0 +1,60 @@ +import type { PageParam } from '@/api/index'; + +/** + * 页面管理记录表 + */ +export interface CmsDesign { + pageId?: number; + name?: string; + keywords?: string; + description?: string; + path?: string; + component?: string; + photo?: string; + content?: string; + // 类型 + type?: string; + categoryId?: number; + // 宽 + width?: string; + // 高 + height?: string; + // 页面样式 + style?: string; + // 附件 + images?: string; + // 用户ID + userId?: number; + // 设为首页 + home?: number; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; + // 页面布局 + layout?: string; + backgroundColor?: string; + // 关联网站导航ID + navigationId?: number; + showLayout?: boolean; + btn?: any[]; + showBanner?: boolean; + buyUrl?: string; + demoUrl?: string; + account?: string; + docUrl?: string; +} + +/** + * 页面管理记录表搜索条件 + */ +export interface CmsDesignParam extends PageParam { + pageId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDesignRecord/index.ts b/src/api/cms/cmsDesignRecord/index.ts new file mode 100644 index 0000000..f1ea541 --- /dev/null +++ b/src/api/cms/cmsDesignRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDesignRecord, CmsDesignRecordParam } from './model'; + + +/** + * 分页查询页面组件表 + */ +export async function pageCmsDesignRecord(params: CmsDesignRecordParam) { + const res = await request.get>>( + '/cms/cms-design-record/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询页面组件表列表 + */ +export async function listCmsDesignRecord(params?: CmsDesignRecordParam) { + const res = await request.get>( + '/cms/cms-design-record', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加页面组件表 + */ +export async function addCmsDesignRecord(data: CmsDesignRecord) { + const res = await request.post>( + '/cms/cms-design-record', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改页面组件表 + */ +export async function updateCmsDesignRecord(data: CmsDesignRecord) { + const res = await request.put>( + '/cms/cms-design-record', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除页面组件表 + */ +export async function removeCmsDesignRecord(id?: number) { + const res = await request.del>( + '/cms/cms-design-record/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除页面组件表 + */ +export async function removeBatchCmsDesignRecord(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-design-record/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询页面组件表 + */ +export async function getCmsDesignRecord(id: number) { + const res = await request.get>( + '/cms/cms-design-record/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsDesignRecord/model/index.ts b/src/api/cms/cmsDesignRecord/model/index.ts new file mode 100644 index 0000000..0c6e809 --- /dev/null +++ b/src/api/cms/cmsDesignRecord/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 页面组件表 + */ +export interface CmsDesignRecord { + // ID + id?: number; + // 关联导航ID + navigationId?: number; + parentId?: number; + pageId?: number; + // 组件 + title?: string; + // 组件标识 + dictCode?: string; + // 组件样式 + styles?: string; + // 卡片阴影显示时机 + shadow?: string; + // 页面关键词 + keywords?: string; + // 页面描述 + description?: string; + // 页面路由地址 + path?: string; + // 缩列图 + photo?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 所属期次 + periodId?: number; +} + +/** + * 页面组件表搜索条件 + */ +export interface CmsDesignRecordParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDocs/index.ts b/src/api/cms/cmsDocs/index.ts new file mode 100644 index 0000000..585b1e4 --- /dev/null +++ b/src/api/cms/cmsDocs/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDocs, CmsDocsParam } from './model'; + + +/** + * 分页查询文档管理记录表 + */ +export async function pageCmsDocs(params: CmsDocsParam) { + const res = await request.get>>( + '/cms/cms-docs/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询文档管理记录表列表 + */ +export async function listCmsDocs(params?: CmsDocsParam) { + const res = await request.get>( + '/cms/cms-docs', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加文档管理记录表 + */ +export async function addCmsDocs(data: CmsDocs) { + const res = await request.post>( + '/cms/cms-docs', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改文档管理记录表 + */ +export async function updateCmsDocs(data: CmsDocs) { + const res = await request.put>( + '/cms/cms-docs', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除文档管理记录表 + */ +export async function removeCmsDocs(id?: number) { + const res = await request.del>( + '/cms/cms-docs/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除文档管理记录表 + */ +export async function removeBatchCmsDocs(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-docs/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询文档管理记录表 + */ +export async function getCmsDocs(id: number) { + const res = await request.get>( + '/cms/cms-docs/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsDocs/model/index.ts b/src/api/cms/cmsDocs/model/index.ts new file mode 100644 index 0000000..1c8c78d --- /dev/null +++ b/src/api/cms/cmsDocs/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 文档管理记录表 + */ +export interface CmsDocs { + // 文档ID + docsId?: number; + // 文档标题 + title?: string; + // 上级目录 + parentId?: number; + // 书籍ID + bookId?: number; + // 可见性(public,private,protected) + visibility?: string; + // 虚拟阅读量(仅用作展示) + virtualViews?: number; + // 实际阅读量 + actualViews?: number; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 文档管理记录表搜索条件 + */ +export interface CmsDocsParam extends PageParam { + docsId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDocsBook/index.ts b/src/api/cms/cmsDocsBook/index.ts new file mode 100644 index 0000000..15b6766 --- /dev/null +++ b/src/api/cms/cmsDocsBook/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDocsBook, CmsDocsBookParam } from './model'; + + +/** + * 分页查询书籍记录表 + */ +export async function pageCmsDocsBook(params: CmsDocsBookParam) { + const res = await request.get>>( + '/cms/cms-docs-book/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询书籍记录表列表 + */ +export async function listCmsDocsBook(params?: CmsDocsBookParam) { + const res = await request.get>( + '/cms/cms-docs-book', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加书籍记录表 + */ +export async function addCmsDocsBook(data: CmsDocsBook) { + const res = await request.post>( + '/cms/cms-docs-book', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改书籍记录表 + */ +export async function updateCmsDocsBook(data: CmsDocsBook) { + const res = await request.put>( + '/cms/cms-docs-book', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除书籍记录表 + */ +export async function removeCmsDocsBook(id?: number) { + const res = await request.del>( + '/cms/cms-docs-book/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除书籍记录表 + */ +export async function removeBatchCmsDocsBook(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-docs-book/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询书籍记录表 + */ +export async function getCmsDocsBook(id: number) { + const res = await request.get>( + '/cms/cms-docs-book/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsDocsBook/model/index.ts b/src/api/cms/cmsDocsBook/model/index.ts new file mode 100644 index 0000000..5e02d44 --- /dev/null +++ b/src/api/cms/cmsDocsBook/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 书籍记录表 + */ +export interface CmsDocsBook { + // ID + bookId?: number; + // 书籍名称 + name?: string; + // 书籍标识 + code?: string; + // 封面图 + photo?: string; + // 备注 + comments?: string; + // 文档内容 + content?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 书籍记录表搜索条件 + */ +export interface CmsDocsBookParam extends PageParam { + bookId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDocsContent/index.ts b/src/api/cms/cmsDocsContent/index.ts new file mode 100644 index 0000000..1b64435 --- /dev/null +++ b/src/api/cms/cmsDocsContent/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDocsContent, CmsDocsContentParam } from './model'; + + +/** + * 分页查询文档内容记录表 + */ +export async function pageCmsDocsContent(params: CmsDocsContentParam) { + const res = await request.get>>( + '/cms/cms-docs-content/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询文档内容记录表列表 + */ +export async function listCmsDocsContent(params?: CmsDocsContentParam) { + const res = await request.get>( + '/cms/cms-docs-content', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加文档内容记录表 + */ +export async function addCmsDocsContent(data: CmsDocsContent) { + const res = await request.post>( + '/cms/cms-docs-content', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改文档内容记录表 + */ +export async function updateCmsDocsContent(data: CmsDocsContent) { + const res = await request.put>( + '/cms/cms-docs-content', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除文档内容记录表 + */ +export async function removeCmsDocsContent(id?: number) { + const res = await request.del>( + '/cms/cms-docs-content/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除文档内容记录表 + */ +export async function removeBatchCmsDocsContent(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-docs-content/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询文档内容记录表 + */ +export async function getCmsDocsContent(id: number) { + const res = await request.get>( + '/cms/cms-docs-content/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsDocsContent/model/index.ts b/src/api/cms/cmsDocsContent/model/index.ts new file mode 100644 index 0000000..dc06432 --- /dev/null +++ b/src/api/cms/cmsDocsContent/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 文档内容记录表 + */ +export interface CmsDocsContent { + // ID + id?: number; + // 文档ID + docsId?: number; + // 文档内容 + content?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 文档内容记录表搜索条件 + */ +export interface CmsDocsContentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDomain/index.ts b/src/api/cms/cmsDomain/index.ts new file mode 100644 index 0000000..748a5d5 --- /dev/null +++ b/src/api/cms/cmsDomain/index.ts @@ -0,0 +1,151 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDomain, CmsDomainParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + + +/** + * 分页查询网站域名记录表 + */ +export async function pageCmsDomain(params: CmsDomainParam) { + const res = await request.get>>( + SERVER_API_URL + '/cms/cms-domain/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询网站域名记录表列表 + */ +export async function listCmsDomain(params?: CmsDomainParam) { + const res = await request.get>( + SERVER_API_URL + '/cms/cms-domain', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加网站域名记录表 + */ +export async function addCmsDomain(data: CmsDomain) { + const res = await request.post>( + SERVER_API_URL + '/cms/cms-domain', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改网站域名记录表 + */ +export async function updateCmsDomain(data: CmsDomain) { + const res = await request.post>( + SERVER_API_URL + '/cms/cms-domain/domain', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除网站域名记录表 + */ +export async function removeCmsDomain(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/cms/cms-domain/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除网站域名记录表 + */ +export async function removeBatchCmsDomain(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/cms/cms-domain/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询网站域名记录表 + */ +export async function getCmsDomain(id: number) { + const res = await request.get>( + SERVER_API_URL + '/cms/cms-domain/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/cms/domain/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +export async function resolvable(id: number) { + const res = await request.get>( + SERVER_API_URL + '/cms/domain/resolvable/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function getTenantIdByDomain(params: CmsDomainParam) { + const res = await request.get>>( + SERVER_API_URL + '/cms/cms-domain/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + diff --git a/src/api/cms/cmsDomain/model/index.ts b/src/api/cms/cmsDomain/model/index.ts new file mode 100644 index 0000000..377e838 --- /dev/null +++ b/src/api/cms/cmsDomain/model/index.ts @@ -0,0 +1,44 @@ +import type { PageParam } from '@/api'; + +/** + * 网站域名记录表 + */ +export interface CmsDomain { + // ID + id?: number; + // 类型 0赠送域名 1绑定域名 + type?: number; + // 域名 + domain?: string; + // 主机记录 + hostName?: string; + // 记录值 + hostValue?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 网站ID + websiteId?: number; + // 租户ID + appId?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 网站域名记录表搜索条件 + */ +export interface CmsDomainParam extends PageParam { + id?: number; + domain?: string; + keywords?: string; +} diff --git a/src/api/cms/cmsForm/index.ts b/src/api/cms/cmsForm/index.ts new file mode 100644 index 0000000..19988a7 --- /dev/null +++ b/src/api/cms/cmsForm/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsForm, CmsFormParam } from './model'; + + +/** + * 分页查询表单设计表 + */ +export async function pageCmsForm(params: CmsFormParam) { + const res = await request.get>>( + '/cms/cms-form/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询表单设计表列表 + */ +export async function listCmsForm(params?: CmsFormParam) { + const res = await request.get>( + '/cms/cms-form', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加表单设计表 + */ +export async function addCmsForm(data: CmsForm) { + const res = await request.post>( + '/cms/cms-form', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改表单设计表 + */ +export async function updateCmsForm(data: CmsForm) { + const res = await request.put>( + '/cms/cms-form', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除表单设计表 + */ +export async function removeCmsForm(id?: number) { + const res = await request.del>( + '/cms/cms-form/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除表单设计表 + */ +export async function removeBatchCmsForm(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-form/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询表单设计表 + */ +export async function getCmsForm(id: number) { + const res = await request.get>( + '/cms/cms-form/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsForm/model/index.ts b/src/api/cms/cmsForm/model/index.ts new file mode 100644 index 0000000..6e43ff9 --- /dev/null +++ b/src/api/cms/cmsForm/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api'; + +/** + * 表单设计表 + */ +export interface CmsForm { + // ID + formId?: number; + // 表单标题 + name?: string; + // 顶部图片 + photo?: string; + // 背景图片 + background?: string; + // 视频文件 + video?: string; + // 提交次数 + submitNumber?: number; + // 页面布局 + layout?: string; + // 是否隐藏顶部图片 + hidePhoto?: number; + // 是否隐藏背景图片 + hideBackground?: number; + // 是否隐藏视频 + hideVideo?: number; + // 背景图片透明度 + opacity?: string; + // 用户ID + userId?: number; + // 商户ID + merchantId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 表单设计表搜索条件 + */ +export interface CmsFormParam extends PageParam { + formId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsFormRecord/index.ts b/src/api/cms/cmsFormRecord/index.ts new file mode 100644 index 0000000..376bf44 --- /dev/null +++ b/src/api/cms/cmsFormRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsFormRecord, CmsFormRecordParam } from './model'; + + +/** + * 分页查询表单数据记录表 + */ +export async function pageCmsFormRecord(params: CmsFormRecordParam) { + const res = await request.get>>( + '/cms/cms-form-record/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询表单数据记录表列表 + */ +export async function listCmsFormRecord(params?: CmsFormRecordParam) { + const res = await request.get>( + '/cms/cms-form-record', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加表单数据记录表 + */ +export async function addCmsFormRecord(data: CmsFormRecord) { + const res = await request.post>( + '/cms/cms-form-record', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改表单数据记录表 + */ +export async function updateCmsFormRecord(data: CmsFormRecord) { + const res = await request.put>( + '/cms/cms-form-record', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除表单数据记录表 + */ +export async function removeCmsFormRecord(id?: number) { + const res = await request.del>( + '/cms/cms-form-record/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除表单数据记录表 + */ +export async function removeBatchCmsFormRecord(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-form-record/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询表单数据记录表 + */ +export async function getCmsFormRecord(id: number) { + const res = await request.get>( + '/cms/cms-form-record/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsFormRecord/model/index.ts b/src/api/cms/cmsFormRecord/model/index.ts new file mode 100644 index 0000000..87624d1 --- /dev/null +++ b/src/api/cms/cmsFormRecord/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api/index'; + +/** + * 表单数据记录表 + */ +export interface CmsFormRecord { + // ID + formRecordId?: number; + // 手机号 + phone?: string; + // 表单数据 + formData?: string; + // 表单ID + formId?: number; + // 用户ID + userId?: number; + // 商户ID + merchantId?: number; + // 姓名 + name?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 表单数据记录表搜索条件 + */ +export interface CmsFormRecordParam extends PageParam { + formRecordId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsLang/index.ts b/src/api/cms/cmsLang/index.ts new file mode 100644 index 0000000..bda1b17 --- /dev/null +++ b/src/api/cms/cmsLang/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsLang, CmsLangParam } from './model'; + +/** + * 分页查询国际化 + */ +export async function pageCmsLang(params: CmsLangParam) { + const res = await request.get>>( + '/cms/cms-lang/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询国际化列表 + */ +export async function listCmsLang(params?: CmsLangParam) { + const res = await request.get>( + '/cms/cms-lang', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加国际化 + */ +export async function addCmsLang(data: CmsLang) { + const res = await request.post>( + '/cms/cms-lang', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改国际化 + */ +export async function updateCmsLang(data: CmsLang) { + const res = await request.put>( + '/cms/cms-lang', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除国际化 + */ +export async function removeCmsLang(id?: number) { + const res = await request.del>( + '/cms/cms-lang/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除国际化 + */ +export async function removeBatchCmsLang(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-lang/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询国际化 + */ +export async function getCmsLang(id: number) { + const res = await request.get>( + '/cms/cms-lang/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsLang/model/index.ts b/src/api/cms/cmsLang/model/index.ts new file mode 100644 index 0000000..2dae25f --- /dev/null +++ b/src/api/cms/cmsLang/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 国际化 + */ +export interface CmsLang { + // ID + id?: number; + // 名称 + name?: string; + // 菜单组件地址, 目录可为空 + code?: string; + // 启用语言 + lang?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 0禁用 1启用 + enable?: boolean; + // 状态, 0禁用 1启用 + status?: boolean; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 国际化搜索条件 + */ +export interface CmsLangParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsLangLog/index.ts b/src/api/cms/cmsLangLog/index.ts new file mode 100644 index 0000000..056858b --- /dev/null +++ b/src/api/cms/cmsLangLog/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsLangLog, CmsLangLogParam } from './model'; + +/** + * 分页查询国际化记录启用 + */ +export async function pageCmsLangLog(params: CmsLangLogParam) { + const res = await request.get>>( + '/cms/cms-lang-log/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询国际化记录启用列表 + */ +export async function listCmsLangLog(params?: CmsLangLogParam) { + const res = await request.get>( + '/cms/cms-lang-log', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加国际化记录启用 + */ +export async function addCmsLangLog(data: CmsLangLog) { + const res = await request.post>( + '/cms/cms-lang-log', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改国际化记录启用 + */ +export async function updateCmsLangLog(data: CmsLangLog) { + const res = await request.put>( + '/cms/cms-lang-log', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除国际化记录启用 + */ +export async function removeCmsLangLog(id?: number) { + const res = await request.del>( + '/cms/cms-lang-log/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除国际化记录启用 + */ +export async function removeBatchCmsLangLog(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-lang-log/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询国际化记录启用 + */ +export async function getCmsLangLog(id: number) { + const res = await request.get>( + '/cms/cms-lang-log/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsLangLog/model/index.ts b/src/api/cms/cmsLangLog/model/index.ts new file mode 100644 index 0000000..0d1cc29 --- /dev/null +++ b/src/api/cms/cmsLangLog/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 国际化记录启用 + */ +export interface CmsLangLog { + // ID + id?: number; + // 关联ID + langId?: number; + // 编码 + code?: string; + // 名称 + lang?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 国际化记录启用搜索条件 + */ +export interface CmsLangLogParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsLink/index.ts b/src/api/cms/cmsLink/index.ts new file mode 100644 index 0000000..1d6def0 --- /dev/null +++ b/src/api/cms/cmsLink/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsLink, CmsLinkParam } from './model'; + + +/** + * 分页查询常用链接 + */ +export async function pageCmsLink(params: CmsLinkParam) { + const res = await request.get>>( + '/cms/cms-link/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询常用链接列表 + */ +export async function listCmsLink(params?: CmsLinkParam) { + const res = await request.get>( + '/cms/cms-link', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加常用链接 + */ +export async function addCmsLink(data: CmsLink) { + const res = await request.post>( + '/cms/cms-link', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改常用链接 + */ +export async function updateCmsLink(data: CmsLink) { + const res = await request.put>( + '/cms/cms-link', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除常用链接 + */ +export async function removeCmsLink(id?: number) { + const res = await request.del>( + '/cms/cms-link/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除常用链接 + */ +export async function removeBatchCmsLink(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-link/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询常用链接 + */ +export async function getCmsLink(id: number) { + const res = await request.get>( + '/cms/cms-link/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsLink/model/index.ts b/src/api/cms/cmsLink/model/index.ts new file mode 100644 index 0000000..1258a5c --- /dev/null +++ b/src/api/cms/cmsLink/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 常用链接 + */ +export interface CmsLink { + // 自增ID + id?: number; + // 链接名称 + name?: string; + // 图标 + icon?: string; + // 链接地址 + url?: string; + // 链接分类 + linkType?: string; + // 应用ID + appId?: number; + // 用户ID + userId?: number; + // 是否推荐 + recommend?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 常用链接搜索条件 + */ +export interface CmsLinkParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsModel/index.ts b/src/api/cms/cmsModel/index.ts new file mode 100644 index 0000000..77bee6d --- /dev/null +++ b/src/api/cms/cmsModel/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsModel, CmsModelParam } from './model'; + + +/** + * 分页查询模型 + */ +export async function pageCmsModel(params: CmsModelParam) { + const res = await request.get>>( + '/cms/cms-model/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询模型列表 + */ +export async function listCmsModel(params?: CmsModelParam) { + const res = await request.get>( + '/cms/cms-model', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加模型 + */ +export async function addCmsModel(data: CmsModel) { + const res = await request.post>( + '/cms/cms-model', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改模型 + */ +export async function updateCmsModel(data: CmsModel) { + const res = await request.put>( + '/cms/cms-model', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除模型 + */ +export async function removeCmsModel(id?: number) { + const res = await request.del>( + '/cms/cms-model/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除模型 + */ +export async function removeBatchCmsModel(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-model/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询模型 + */ +export async function getCmsModel(id: number) { + const res = await request.get>( + '/cms/cms-model/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsModel/model/index.ts b/src/api/cms/cmsModel/model/index.ts new file mode 100644 index 0000000..4c1c7f7 --- /dev/null +++ b/src/api/cms/cmsModel/model/index.ts @@ -0,0 +1,57 @@ +import type { PageParam } from '@/api/index'; + +/** + * 模型 + */ +export interface CmsModel { + // ID + modelId?: number; + // 模型名称 + name?: string; + // 唯一标识 + model?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址, 目录可为空 + component?: string; + // 模型banner图片 + banner?: string; + // 缩列图 + thumb?: string; + // 封面图宽 + imageWidth?: string; + // 封面图高 + imageHeight?: string; + // 样式 + style?: string; + // Banner上的标题 + title?: string; + // Banner上的描述 + desc?: string; + // 列表显示方式(10小图展示 20大图展示) + showType?: number; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 模型搜索条件 + */ +export interface CmsModelParam extends PageParam { + modelId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMp/index.ts b/src/api/cms/cmsMp/index.ts new file mode 100644 index 0000000..4004efe --- /dev/null +++ b/src/api/cms/cmsMp/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMp, CmsMpParam } from './model'; + + +/** + * 分页查询小程序信息 + */ +export async function pageCmsMp(params: CmsMpParam) { + const res = await request.get>>( + '/cms/cms-mp/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询小程序信息列表 + */ +export async function listCmsMp(params?: CmsMpParam) { + const res = await request.get>( + '/cms/cms-mp', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加小程序信息 + */ +export async function addCmsMp(data: CmsMp) { + const res = await request.post>( + '/cms/cms-mp', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改小程序信息 + */ +export async function updateCmsMp(data: CmsMp) { + const res = await request.put>( + '/cms/cms-mp', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除小程序信息 + */ +export async function removeCmsMp(id?: number) { + const res = await request.del>( + '/cms/cms-mp/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除小程序信息 + */ +export async function removeBatchCmsMp(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-mp/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询小程序信息 + */ +export async function getCmsMp(id: number) { + const res = await request.get>( + '/cms/cms-mp/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsMp/model/index.ts b/src/api/cms/cmsMp/model/index.ts new file mode 100644 index 0000000..b3eafe1 --- /dev/null +++ b/src/api/cms/cmsMp/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序信息 + */ +export interface CmsMp { + // ID + mpId?: number; + // 是否主账号 + type?: number; + // 小程序ID + appId?: string; + // 小程序密钥 + appSecret?: string; + // 小程序名称 + mpName?: string; + // 小程序简称 + shortName?: string; + // 头像 + avatar?: string; + // 小程序码 + mpQrcode?: string; + // 微信认证 + authentication?: number; + // 主体信息 + companyName?: string; + // 小程序备案 + icpNo?: string; + // 登录邮箱 + email?: string; + // 登录密码 + password?: string; + // 原始ID + ghId?: string; + // 入口页面 + mainPath?: string; + // 过期时间 + expirationTime?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 介绍 + comments?: string; + // 用户ID + userId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序信息搜索条件 + */ +export interface CmsMpParam extends PageParam { + mpId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpAd/index.ts b/src/api/cms/cmsMpAd/index.ts new file mode 100644 index 0000000..563d06c --- /dev/null +++ b/src/api/cms/cmsMpAd/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpAd, CmsMpAdParam } from './model'; + + +/** + * 分页查询小程序广告位 + */ +export async function pageCmsMpAd(params: CmsMpAdParam) { + const res = await request.get>>( + '/cms/cms-mp-ad/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询小程序广告位列表 + */ +export async function listCmsMpAd(params?: CmsMpAdParam) { + const res = await request.get>( + '/cms/cms-mp-ad', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加小程序广告位 + */ +export async function addCmsMpAd(data: CmsMpAd) { + const res = await request.post>( + '/cms/cms-mp-ad', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改小程序广告位 + */ +export async function updateCmsMpAd(data: CmsMpAd) { + const res = await request.put>( + '/cms/cms-mp-ad', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除小程序广告位 + */ +export async function removeCmsMpAd(id?: number) { + const res = await request.del>( + '/cms/cms-mp-ad/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除小程序广告位 + */ +export async function removeBatchCmsMpAd(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-mp-ad/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询小程序广告位 + */ +export async function getCmsMpAd(id: number) { + const res = await request.get>( + '/cms/cms-mp-ad/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsMpAd/model/index.ts b/src/api/cms/cmsMpAd/model/index.ts new file mode 100644 index 0000000..3d061d6 --- /dev/null +++ b/src/api/cms/cmsMpAd/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序广告位 + */ +export interface CmsMpAd { + // ID + adId?: number; + // 页面ID + pageId?: number; + // 广告类型 + adType?: string; + // 广告位名称 + name?: string; + // 宽 + width?: string; + // 高 + height?: string; + // 广告图片 + images?: string; + // 路由/链接地址 + path?: string; + // 页面名称 + pageName?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序广告位搜索条件 + */ +export interface CmsMpAdParam extends PageParam { + adId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpField/index.ts b/src/api/cms/cmsMpField/index.ts new file mode 100644 index 0000000..1eb216b --- /dev/null +++ b/src/api/cms/cmsMpField/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpField, CmsMpFieldParam } from './model'; + + +/** + * 分页查询小程序配置 + */ +export async function pageCmsMpField(params: CmsMpFieldParam) { + const res = await request.get>>( + '/cms/cms-mp-field/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询小程序配置列表 + */ +export async function listCmsMpField(params?: CmsMpFieldParam) { + const res = await request.get>( + '/cms/cms-mp-field', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加小程序配置 + */ +export async function addCmsMpField(data: CmsMpField) { + const res = await request.post>( + '/cms/cms-mp-field', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改小程序配置 + */ +export async function updateCmsMpField(data: CmsMpField) { + const res = await request.put>( + '/cms/cms-mp-field', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除小程序配置 + */ +export async function removeCmsMpField(id?: number) { + const res = await request.del>( + '/cms/cms-mp-field/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除小程序配置 + */ +export async function removeBatchCmsMpField(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-mp-field/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询小程序配置 + */ +export async function getCmsMpField(id: number) { + const res = await request.get>( + '/cms/cms-mp-field/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsMpField/model/index.ts b/src/api/cms/cmsMpField/model/index.ts new file mode 100644 index 0000000..f573edb --- /dev/null +++ b/src/api/cms/cmsMpField/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序配置 + */ +export interface CmsMpField { + // 自增ID + id?: number; + // 类型,0文本 1图片 2其他 + type?: number; + // 名称 + name?: string; + // 备注 + comments?: string; + // 名称 + value?: string; + // 页面ID + pageId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序配置搜索条件 + */ +export interface CmsMpFieldParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpMenu/index.ts b/src/api/cms/cmsMpMenu/index.ts new file mode 100644 index 0000000..91554af --- /dev/null +++ b/src/api/cms/cmsMpMenu/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpMenu, CmsMpMenuParam } from './model'; + + +/** + * 分页查询小程序端菜单 + */ +export async function pageCmsMpMenu(params: CmsMpMenuParam) { + const res = await request.get>>( + '/cms/cms-mp-menu/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询小程序端菜单列表 + */ +export async function listCmsMpMenu(params?: CmsMpMenuParam) { + const res = await request.get>( + '/cms/cms-mp-menu', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加小程序端菜单 + */ +export async function addCmsMpMenu(data: CmsMpMenu) { + const res = await request.post>( + '/cms/cms-mp-menu', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改小程序端菜单 + */ +export async function updateCmsMpMenu(data: CmsMpMenu) { + const res = await request.put>( + '/cms/cms-mp-menu', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除小程序端菜单 + */ +export async function removeCmsMpMenu(id?: number) { + const res = await request.del>( + '/cms/cms-mp-menu/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除小程序端菜单 + */ +export async function removeBatchCmsMpMenu(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-mp-menu/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询小程序端菜单 + */ +export async function getCmsMpMenu(id: number) { + const res = await request.get>( + '/cms/cms-mp-menu/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsMpMenu/model/index.ts b/src/api/cms/cmsMpMenu/model/index.ts new file mode 100644 index 0000000..7019e58 --- /dev/null +++ b/src/api/cms/cmsMpMenu/model/index.ts @@ -0,0 +1,79 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序端菜单 + */ +export interface CmsMpMenu { + // ID + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title?: string; + // 类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标 + type?: number; + // 是否微信小程序菜单 + isMpWeixin?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址, 目录可为空 + component?: string; + // 打开位置 + target?: string; + // 菜单图标 + avatar?: string; + // 图标颜色 + color?: string; + // 上传图标 + icon?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 位置 0不限 1顶部 2底部 + position?: number; + // 0 第一行 1第二行 + rows?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // 绑定的页面 + pageId?: number; + // 绑定的文章分类ID + articleCategoryId?: number; + // 绑定的文章ID + articleId?: number; + // 绑定的表单ID + formId?: number; + // 绑定的书籍标识 + bookCode?: string; + // 绑定的商品分类ID + goodsCategoryId?: number; + // 绑定的商品ID + goodsId?: number; + // 用户ID + userId?: number; + // 是否管理人员可见 + adminShow?: number; + // 设为首页 + home?: number; + // 分组名称 + groupName?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序端菜单搜索条件 + */ +export interface CmsMpMenuParam extends PageParam { + menuId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpPages/index.ts b/src/api/cms/cmsMpPages/index.ts new file mode 100644 index 0000000..da3fd65 --- /dev/null +++ b/src/api/cms/cmsMpPages/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpPages, CmsMpPagesParam } from './model'; + + +/** + * 分页查询小程序页面 + */ +export async function pageCmsMpPages(params: CmsMpPagesParam) { + const res = await request.get>>( + '/cms/cms-mp-pages/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询小程序页面列表 + */ +export async function listCmsMpPages(params?: CmsMpPagesParam) { + const res = await request.get>( + '/cms/cms-mp-pages', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加小程序页面 + */ +export async function addCmsMpPages(data: CmsMpPages) { + const res = await request.post>( + '/cms/cms-mp-pages', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改小程序页面 + */ +export async function updateCmsMpPages(data: CmsMpPages) { + const res = await request.put>( + '/cms/cms-mp-pages', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除小程序页面 + */ +export async function removeCmsMpPages(id?: number) { + const res = await request.del>( + '/cms/cms-mp-pages/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除小程序页面 + */ +export async function removeBatchCmsMpPages(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-mp-pages/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询小程序页面 + */ +export async function getCmsMpPages(id: number) { + const res = await request.get>( + '/cms/cms-mp-pages/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsMpPages/model/index.ts b/src/api/cms/cmsMpPages/model/index.ts new file mode 100644 index 0000000..8b08ae1 --- /dev/null +++ b/src/api/cms/cmsMpPages/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序页面 + */ +export interface CmsMpPages { + // ID + id?: number; + // 上级id, 0是顶级 + parentId?: number; + // 页面名称 + title?: string; + // 页面路径 + path?: string; + // 设为首页 + home?: number; + // 分包 + subpackage?: string; + // 图标 + icon?: string; + // 未选中图标 + iconPath?: string; + // 选中的图标 + selectedIconPath?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 用户ID + userId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序页面搜索条件 + */ +export interface CmsMpPagesParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsNavigation/index.ts b/src/api/cms/cmsNavigation/index.ts new file mode 100644 index 0000000..7eb316f --- /dev/null +++ b/src/api/cms/cmsNavigation/index.ts @@ -0,0 +1,138 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsNavigation, CmsNavigationParam } from './model'; + +/** + * 分页查询网站导航记录表 + */ +export async function pageCmsNavigation(params: CmsNavigationParam) { + const res = await request.get>>( + '/cms/cms-navigation/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询网站导航记录表列表 + */ +export async function listCmsNavigation(params?: CmsNavigationParam) { + const res = await request.get>( + '/cms/cms-navigation', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询导航列表(树形结构) + */ +export async function treeNavigation(params?: CmsNavigationParam) { + const res = await request.get>( + '/cms/cms-navigation/tree', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} +/** + * 添加网站导航记录表 + */ +export async function addCmsNavigation(data: CmsNavigation) { + const res = await request.post>( + '/cms/cms-navigation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改网站导航记录表 + */ +export async function updateCmsNavigation(data: CmsNavigation) { + const res = await request.put>( + '/cms/cms-navigation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除网站导航记录表 + */ +export async function removeCmsNavigation(id?: number) { + const res = await request.del>( + '/cms/cms-navigation/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除网站导航记录表 + */ +export async function removeBatchCmsNavigation(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-navigation/batch', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询网站导航记录表 + */ +export async function getCmsNavigation(id: number) { + const res = await request.get>( + '/cms/cms-navigation/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function getNavigationByPath(params: CmsNavigationParam) { + const res = await request.get>( + '/cms/cms-navigation/getNavigationByPath', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + + +/** + * 根据code查询导航 + */ +export async function getByCode(code: string) { + const res = await request.get>( + '/cms/cms-navigation/getByCode/' + code + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + diff --git a/src/api/cms/cmsNavigation/model/index.ts b/src/api/cms/cmsNavigation/model/index.ts new file mode 100644 index 0000000..cdd4f0c --- /dev/null +++ b/src/api/cms/cmsNavigation/model/index.ts @@ -0,0 +1,117 @@ +import type {PageParam} from '@/api/index'; +import type {CmsDesign} from "@/api/cms/cmsDesign/model"; +import type {CmsModel} from "@/api/cms/cmsModel/model"; +import {CmsArticle} from "@/api/cms/cmsArticle/model"; + +/** + * 网站导航记录表 + */ +export interface CmsNavigation { + // ID + navigationId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title?: string; + // 模型 + model?: string; + // 标识 + code?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址, 目录可为空 + component?: string; + // 组件路径 + componentPath?: string; + // 打开位置 + target?: string; + // 菜单图标 + icon?: string; + // banner图片 + banner?: string; + // 图标颜色 + color?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 可见类型 0所有人 1登录可见 2密码可见 + permission?: number; + // 访问密码 + password?: string; + // 位置 0不限 1顶部 2底部 + position?: number; + // 仅在顶部显示 + top?: number; + // 仅在底部显示 + bottom?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // css样式 + style?: string; + // 父级栏目路由 + parentPath?: string; + // 父级栏目名称 + parentName?: string; + // 模型名称 + modelName?: string; + // 类型(模型) + type?: string; + // 绑定的页面(已废弃) + pageId?: number; + // 项目ID + itemId?: number; + // 是否微信小程序菜单 + isMpWeixin?: string; + // 用户ID + userId?: number; + // 设为首页 + home?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 父级栏目 + parent?: CmsNavigation; + // 子级栏目 + children?: CmsNavigation[]; + // 模型信息 + modelInfo?: CmsModel; + // 栏目名称 + categoryName?: string; + // 是否禁用 + disabled?: boolean; + // 链接地址 + design?: CmsDesign; + // 子级数量 + childHeight?: number, + // 是否展开 + showChild?: boolean + // 布局 + layout?: any; + // 标题 + label?: string; + // 值 + value?: number; + // 文章列表 + articles?: CmsArticle[]; +} + +/** + * 网站导航记录表搜索条件 + */ +export interface CmsNavigationParam extends PageParam { + navigationId?: number; + parentId?: number; + hide?: number; + model?: string; + keywords?: string; +} diff --git a/src/api/cms/cmsOrder/index.ts b/src/api/cms/cmsOrder/index.ts new file mode 100644 index 0000000..8224ddd --- /dev/null +++ b/src/api/cms/cmsOrder/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsOrder, CmsOrderParam } from './model'; + + +/** + * 分页查询订单 + */ +export async function pageCmsOrder(params: CmsOrderParam) { + const res = await request.get>>( + '/cms/cms-order/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询订单列表 + */ +export async function listCmsOrder(params?: CmsOrderParam) { + const res = await request.get>( + '/cms/cms-order', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加订单 + */ +export async function addCmsOrder(data: CmsOrder) { + const res = await request.post>( + '/cms/cms-order', + data + ); + if (res.code === 0) { + return res; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改订单 + */ +export async function updateCmsOrder(data: CmsOrder) { + const res = await request.put>( + '/cms/cms-order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除订单 + */ +export async function removeCmsOrder(id?: number) { + const res = await request.del>( + '/cms/cms-order/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchCmsOrder(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-order/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询订单 + */ +export async function getCmsOrder(id: number) { + const res = await request.get>( + '/cms/cms-order/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsOrder/model/index.ts b/src/api/cms/cmsOrder/model/index.ts new file mode 100644 index 0000000..bde0439 --- /dev/null +++ b/src/api/cms/cmsOrder/model/index.ts @@ -0,0 +1,69 @@ +import type { PageParam } from '@/api/index'; + +/** + * 订单 + */ +export interface CmsOrder { + // 订单号 + orderId?: number; + // 关联模型 + model?: string; + // 订单标题 + title?: string; + // 订单编号 + orderNo?: string; + // 订单类型,0商城 1询价 2留言 + type?: number; + // 关联文章ID + articleId?: number; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 电子邮箱 + email?: string; + // 收货地址 + address?: string; + // 订单内容 + content?: string; + // 订单总额 + totalPrice?: string; + // 实际付款 + payPrice?: string; + // 报价询价 + price?: string; + // 购买数量 + totalNum?: number; + // 二维码地址,保存订单号,支付成功后才生成 + qrcode?: string; + // 下单渠道,0网站 1小程序 2其他 + channel?: number; + // 过期时间 + expirationTime?: string; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 图像验证码 + code?: string; + // 图像验证码内容 + text?: string; +} + +/** + * 订单搜索条件 + */ +export interface CmsOrderParam extends PageParam { + orderId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsSpec/index.ts b/src/api/cms/cmsSpec/index.ts new file mode 100644 index 0000000..145b031 --- /dev/null +++ b/src/api/cms/cmsSpec/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsSpec, CmsSpecParam } from './model'; + + +/** + * 分页查询规格 + */ +export async function pageCmsSpec(params: CmsSpecParam) { + const res = await request.get>>( + '/cms/cms-spec/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询规格列表 + */ +export async function listCmsSpec(params?: CmsSpecParam) { + const res = await request.get>( + '/cms/cms-spec', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加规格 + */ +export async function addCmsSpec(data: CmsSpec) { + const res = await request.post>( + '/cms/cms-spec', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改规格 + */ +export async function updateCmsSpec(data: CmsSpec) { + const res = await request.put>( + '/cms/cms-spec', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除规格 + */ +export async function removeCmsSpec(id?: number) { + const res = await request.del>( + '/cms/cms-spec/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除规格 + */ +export async function removeBatchCmsSpec(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-spec/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询规格 + */ +export async function getCmsSpec(id: number) { + const res = await request.get>( + '/cms/cms-spec/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsSpec/model/index.ts b/src/api/cms/cmsSpec/model/index.ts new file mode 100644 index 0000000..3a7913a --- /dev/null +++ b/src/api/cms/cmsSpec/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 规格 + */ +export interface CmsSpec { + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 创建用户 + userId?: number; + // 更新者 + updater?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1待修,2异常已修,3异常未修 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格搜索条件 + */ +export interface CmsSpecParam extends PageParam { + specId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsSpecValue/index.ts b/src/api/cms/cmsSpecValue/index.ts new file mode 100644 index 0000000..0983b22 --- /dev/null +++ b/src/api/cms/cmsSpecValue/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsSpecValue, CmsSpecValueParam } from './model'; + + +/** + * 分页查询规格值 + */ +export async function pageCmsSpecValue(params: CmsSpecValueParam) { + const res = await request.get>>( + '/cms/cms-spec-value/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询规格值列表 + */ +export async function listCmsSpecValue(params?: CmsSpecValueParam) { + const res = await request.get>( + '/cms/cms-spec-value', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加规格值 + */ +export async function addCmsSpecValue(data: CmsSpecValue) { + const res = await request.post>( + '/cms/cms-spec-value', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改规格值 + */ +export async function updateCmsSpecValue(data: CmsSpecValue) { + const res = await request.put>( + '/cms/cms-spec-value', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除规格值 + */ +export async function removeCmsSpecValue(id?: number) { + const res = await request.del>( + '/cms/cms-spec-value/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除规格值 + */ +export async function removeBatchCmsSpecValue(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-spec-value/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询规格值 + */ +export async function getCmsSpecValue(id: number) { + const res = await request.get>( + '/cms/cms-spec-value/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsSpecValue/model/index.ts b/src/api/cms/cmsSpecValue/model/index.ts new file mode 100644 index 0000000..697279d --- /dev/null +++ b/src/api/cms/cmsSpecValue/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 规格值 + */ +export interface CmsSpecValue { + // 规格值ID + specValueId?: number; + // 规格组ID + specId?: number; + // 规格值 + specValue?: string; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格值搜索条件 + */ +export interface CmsSpecValueParam extends PageParam { + specValueId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsWebsite/index.ts b/src/api/cms/cmsWebsite/index.ts new file mode 100644 index 0000000..0679bcf --- /dev/null +++ b/src/api/cms/cmsWebsite/index.ts @@ -0,0 +1,147 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsWebsite, CmsWebsiteParam } from './model'; + + +/** + * 分页查询网站信息记录表 + */ +export async function pageCmsWebsite(params: CmsWebsiteParam) { + const res = await request.get>>( + '/cms/cms-website/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询网站 + */ +export async function getCmsWebsiteAll(id: number) { + const res = await request.get>( + '/cms/cms-website/getAll/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询网站信息记录表列表 + */ +export async function listCmsWebsite(params?: CmsWebsiteParam) { + const res = await request.get>( + '/cms/cms-website', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加网站信息记录表 + */ +export async function addCmsWebsite(data: CmsWebsite) { + const res = await request.post>( + '/cms/cms-website', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改网站信息记录表 + */ +export async function updateCmsWebsite(data: CmsWebsite) { + const res = await request.put>( + '/cms/cms-website', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除网站信息记录表 + */ +export async function removeCmsWebsite(id?: number) { + const res = await request.del>( + '/cms/cms-website/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除网站信息记录表 + */ +export async function removeBatchCmsWebsite(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-website/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询网站信息记录表 + */ +export async function getCmsWebsite(id: number) { + const res = await request.get>( + '/cms/cms-website/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 清除缓存 + */ +export async function removeSiteInfoCache(key?: string) { + const res = await request.del>( + '/cms/cms-website/clearSiteInfo/' + key + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 分页查询网站信息记录表 + * @param params + */ +export async function pageCmsWebsiteAll(params: CmsWebsiteParam) { + const res = await request.get>>( + '/cms/cms-website/pageAll', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsWebsite/model/index.ts b/src/api/cms/cmsWebsite/model/index.ts new file mode 100644 index 0000000..e12d132 --- /dev/null +++ b/src/api/cms/cmsWebsite/model/index.ts @@ -0,0 +1,138 @@ +import type { PageParam } from '@/api/index'; +import type {CmsNavigation} from "@/api/cms/cmsNavigation/model"; + +/** + * 网站信息记录表 + */ +export interface CmsWebsite { + // 站点ID + websiteId?: number; + // 网站名称 + websiteName?: string; + // 网站标识 + websiteCode?: string; + // 网站LOGO + websiteIcon?: string; + // 网站LOGO + websiteLogo?: string; + // 网站LOGO(深色模式) + websiteDarkLogo?: string; + // 网站类型 + websiteType?: string; + // 网站关键词 + keywords?: string; + // 域名前缀 + prefix?: string; + // 绑定域名 + domain?: string; + // 全局样式 + style?: string; + // 后台管理地址 + adminUrl?: string; + // 应用版本 10免费版 20专业版 30永久授权 + version?: number; + // 服务到期时间 + expirationTime?: string; + // 模版ID + templateId?: number; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 企业ID + companyId?: number; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 街道地址 + address?: string; + // 联系电话 + phone?: string; + // 电子邮箱 + email?: string; + // ICP备案号 + icpNo?: string; + // 公安备案 + policeNo?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 运行状态 + running?: number; + // 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 + status?: number; + // 维护说明 + statusText?: string; + // 关闭说明 + statusClose?: string; + // 状态图标 + statusIcon?: string; + // 全局样式 + styles?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 网站配置 + config?: any; + topNavs?: CmsNavigation[]; + bottomNavs?: CmsNavigation[]; + loginUser?: any; + search?: boolean; +} + + +export interface AppInfo { + appId?: number; + appName?: string; + description?: string; + keywords?: string; + appCode?: string; + mpQrCode?: string; + title?: string; + logo?: string; + icon?: string; + domain?: string; + running?: number; + version?: number; + expirationTime?: string; + expired?: boolean; + expiredDays?: number; + soon?: number; + statusIcon?: string; + statusText?: string; + config?: Object; + serverTime?: Object; + topNavs?: CmsNavigation[]; + bottomNavs?: CmsNavigation[]; + setting?: Object; + createTime?: string; +} + +/** + * 网站信息记录表搜索条件 + */ +export interface CmsWebsiteParam extends PageParam { + websiteId?: number; + status?: number; + phone?: string; + keywords?: string; +} diff --git a/src/api/cms/cmsWebsiteField/index.ts b/src/api/cms/cmsWebsiteField/index.ts new file mode 100644 index 0000000..65644c6 --- /dev/null +++ b/src/api/cms/cmsWebsiteField/index.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type {CmsWebsiteField, CmsWebsiteFieldParam, Config} from './model'; + +/** + * 分页查询应用参数 + */ +export async function pageCmsWebsiteField(params: CmsWebsiteFieldParam) { + const res = await request.get>>( + '/cms/cms-website-field/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listCmsWebsiteField(params?: CmsWebsiteFieldParam) { + const res = await request.get>( + '/cms/cms-website-field', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加应用参数 + */ +export async function addCmsWebsiteField(data: CmsWebsiteField) { + const res = await request.post>( + '/cms/cms-website-field', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用参数 + */ +export async function updateCmsWebsiteField(data: CmsWebsiteField) { + const res = await request.put>( + '/cms/cms-website-field', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除应用参数 + */ +export async function removeCmsWebsiteField(id?: number) { + const res = await request.del>( + '/cms/cms-website-field/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchCmsWebsiteField(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/cms-website-field/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getCmsWebsiteField(id: number) { + const res = await request.get>( + '/cms/cms-website-field/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 恢复项目参数 + */ +export async function undeleteWebsiteField(id?: number) { + const res = await request.del>( + '/cms/website-field/undelete/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + + +/** + * 查询项目参数列表 + */ +export async function configWebsiteField(params?: CmsWebsiteFieldParam) { + const res = await request.get>( + '/cms/cms-website-field/config', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/cmsWebsiteField/model/index.ts b/src/api/cms/cmsWebsiteField/model/index.ts new file mode 100644 index 0000000..ec5967c --- /dev/null +++ b/src/api/cms/cmsWebsiteField/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api/index'; + +/** + * 应用参数 + */ +export interface CmsWebsiteField { + // 自增ID + id?: number; + // 类型,0文本 1图片 2其他 + type?: number; + // 名称 + name?: string; + // 默认值 + defaultValue?: string; + // 可修改的值 [on|off] + modifyRange?: string; + // 备注 + comments?: string; + // css样式 + style?: string; + // 名称 + value?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用参数搜索条件 + */ +export interface CmsWebsiteFieldParam extends PageParam { + id?: number; + name?: string; + keywords?: string; +} + +export interface Config { + siteName?: string; + siteLogo?: string; + domain?: string; + icpNo?: string; + copyright?: string; + loginBgImg?: string; + address?: string; + tel?: string; + theme?: string; + workDay?: string; + kefu2?: string; + kefu1?: string; + email?: string; + loginTitle?: string; + sysLogo?: string; + vipText?: string; + vipComments?: string; + deliveryText?: string; + guaranteeText?: string; + openComments?: string; +} diff --git a/src/api/cms/link/index.ts b/src/api/cms/link/index.ts new file mode 100644 index 0000000..5ffcb84 --- /dev/null +++ b/src/api/cms/link/index.ts @@ -0,0 +1,113 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Link, LinkParam } from './model'; + + +/** + * 分页查询链接 + */ +export async function pageLink(params: LinkParam) { + const res = await request.get>>( + '/oa/link/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询链接列表 + */ +export async function listLink(params?: LinkParam) { + const res = await request.get>( + '/oa/link', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加链接 + */ +export async function addLink(data: Link) { + const res = await request.post>( + '/oa/link', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改链接 + */ +export async function updateLink(data: Link) { + const res = await request.put>( + '/oa/link', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除链接 + */ +export async function removeLink(id?: number) { + const res = await request.del>( + '/oa/link/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除链接 + */ +export async function removeBatchLink(data: (number | undefined)[]) { + const res = await request.del>( + '/oa/link/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + '/oa/link/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/link/model/index.ts b/src/api/cms/link/model/index.ts new file mode 100644 index 0000000..b22d9dc --- /dev/null +++ b/src/api/cms/link/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api/index'; + +/** + * 链接 + */ +export interface Link { + id?: number; + name?: string; + icon?: string; + url?: string; + linkType?: string; + appId?: number; + categoryId?: number; + userId?: number; + comments?: string; + recommend?: number; + sortNumber?: number; + deleted?: number; + status?: number; + createTime?: number; +} + +/** + * 链接搜索条件 + */ +export interface LinkParam extends PageParam { + id?: number; + linkType?: string; + categoryId?: number; + name?: string; +} diff --git a/src/api/cms/mpOfficialMenu/index.ts b/src/api/cms/mpOfficialMenu/index.ts new file mode 100644 index 0000000..396e464 --- /dev/null +++ b/src/api/cms/mpOfficialMenu/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { MpOfficialMenu, MpOfficialMenuParam } from './model'; + + +/** + * 分页查询小程序端菜单 + */ +export async function pageMpOfficialMenu(params: MpOfficialMenuParam) { + const res = await request.get>>( + '/cms/mp-official-menu/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询小程序端菜单列表 + */ +export async function listMpOfficialMenu(params?: MpOfficialMenuParam) { + const res = await request.get>( + '/cms/mp-official-menu', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加小程序端菜单 + */ +export async function addMpOfficialMenu(data: MpOfficialMenu) { + const res = await request.post>( + '/cms/mp-official-menu', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改小程序端菜单 + */ +export async function updateMpOfficialMenu(data: MpOfficialMenu) { + const res = await request.put>( + '/cms/mp-official-menu', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除小程序端菜单 + */ +export async function removeMpOfficialMenu(id?: number) { + const res = await request.del>( + '/cms/mp-official-menu/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除小程序端菜单 + */ +export async function removeBatchMpOfficialMenu(data: (number | undefined)[]) { + const res = await request.del>( + '/cms/mp-official-menu/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询小程序端菜单 + */ +export async function getMpOfficialMenu(id: number) { + const res = await request.get>( + '/cms/mp-official-menu/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/cms/mpOfficialMenu/model/index.ts b/src/api/cms/mpOfficialMenu/model/index.ts new file mode 100644 index 0000000..dc4cd02 --- /dev/null +++ b/src/api/cms/mpOfficialMenu/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序端菜单 + */ +export interface MpOfficialMenu { + // ID + id?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + name?: string; + // 类型 + type?: string; + // 菜单值 + key?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序端菜单搜索条件 + */ +export interface MpOfficialMenuParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..981f63c --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,61 @@ +/** + * 接口统一返回结果 + */ +export interface ApiResult { + // 状态码 + code: number; + // 状态信息 + message?: string; + // 返回数据 + data?: T; +} + +/** + * 分页查询统一结果 + */ +export interface PageResult { + // 返回数据 + list: T[]; + // 总数量 + count: number; +} + +/** + * 分页查询基本参数 + */ +export interface PageParam { + // 第几页 + page?: number; + // 每页多少条 + limit?: number; + // 排序字段 + sort?: string; + sortNum?: string; + // 排序方式, asc升序, desc降序 + order?: string; + // 租户ID + tenantId?: number; + // 企业ID + companyId?: number; + // 商户ID + merchantId?: number; + merchantName?: string; + categoryIds?: any; + // 商品分类 + categoryId?: number; + categoryName?: string; + // 搜素关键词 + keywords?: string; + // 起始时间 + createTimeStart?: string; + // 结束时间 + createTimeEnd?: string; + timeStart?: number; + timeEnd?: number; + isExpireTime?: number; + showSoldStatus?: boolean; + dateTime?: string; + lang?: string; + model?: string; + BaseUrl?: string; +} diff --git a/src/api/json/china-provinces.geo.json b/src/api/json/china-provinces.geo.json new file mode 100644 index 0000000..be70ca7 --- /dev/null +++ b/src/api/json/china-provinces.geo.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"id":"65","size":"550","name":"新疆","cp":[84.9023,42.148],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[96.416,42.7588],[96.416,42.7148],[95.9766,42.4951],[96.0645,42.3193],[96.2402,42.2314],[95.9766,41.9238],[95.2734,41.6162],[95.1855,41.792],[94.5703,41.4844],[94.043,41.0889],[93.8672,40.6934],[93.0762,40.6494],[92.6367,39.6387],[92.373,39.3311],[92.373,39.1113],[92.373,39.0234],[90.1758,38.4961],[90.3516,38.2324],[90.6152,38.3203],[90.5273,37.8369],[91.0547,37.4414],[91.3184,37.0898],[90.7031,36.7822],[90.791,36.6064],[91.0547,36.5186],[91.0547,36.0791],[90.8789,36.0352],[90,36.2549],[89.9121,36.0791],[89.7363,36.0791],[89.209,36.2988],[88.7695,36.3428],[88.5938,36.4746],[87.3633,36.4307],[86.2207,36.167],[86.1328,35.8594],[85.6055,35.6836],[85.0781,35.7275],[84.1992,35.376],[83.1445,35.4199],[82.8809,35.6836],[82.4414,35.7275],[82.002,35.332],[81.6504,35.2441],[80.4199,35.4199],[80.2441,35.2881],[80.332,35.1563],[80.2441,35.2002],[79.8926,34.8047],[79.8047,34.4971],[79.1016,34.4531],[79.0137,34.3213],[78.2227,34.7168],[78.0469,35.2441],[78.0469,35.5078],[77.4316,35.4639],[76.8164,35.6396],[76.5527,35.8594],[76.2012,35.8154],[75.9375,36.0352],[76.0254,36.4746],[75.8496,36.6943],[75.498,36.7383],[75.4102,36.958],[75.0586,37.002],[74.8828,36.9141],[74.7949,37.0459],[74.5313,37.0898],[74.5313,37.2217],[74.8828,37.2217],[75.1465,37.4414],[74.8828,37.5732],[74.9707,37.749],[74.8828,38.4521],[74.3555,38.6719],[74.1797,38.6719],[74.0918,38.54],[73.8281,38.584],[73.7402,38.8477],[73.8281,38.9795],[73.4766,39.375],[73.916,39.5068],[73.916,39.6826],[73.8281,39.7705],[74.0039,40.0342],[74.8828,40.3418],[74.7949,40.5176],[75.2344,40.4297],[75.5859,40.6494],[75.7617,40.2979],[76.377,40.3857],[76.9043,41.001],[77.6074,41.001],[78.1348,41.2207],[78.1348,41.3965],[80.1563,42.0557],[80.2441,42.2754],[80.1563,42.627],[80.2441,42.8467],[80.5078,42.8906],[80.4199,43.0664],[80.7715,43.1982],[80.4199,44.165],[80.4199,44.6045],[79.9805,44.8242],[79.9805,44.9561],[81.7383,45.3955],[82.0898,45.2197],[82.5293,45.2197],[82.2656,45.6592],[83.0566,47.2412],[83.6719,47.0215],[84.7266,47.0215],[84.9023,46.8896],[85.5176,47.0654],[85.6934,47.2852],[85.5176,48.1201],[85.7813,48.4277],[86.5723,48.5596],[86.8359,48.8232],[86.748,48.9551],[86.8359,49.1309],[87.8027,49.1748],[87.8906,48.999],[87.7148,48.9111],[88.0664,48.7354],[87.9785,48.6035],[88.5059,48.3838],[88.6816,48.1641],[89.1211,47.9883],[89.5605,48.0322],[89.7363,47.8564],[90.0879,47.8564],[90.3516,47.6807],[90.5273,47.2412],[90.8789,46.9775],[91.0547,46.582],[90.8789,46.3184],[91.0547,46.0107],[90.7031,45.7471],[90.7031,45.5273],[90.8789,45.2197],[91.582,45.0879],[93.5156,44.9561],[94.7461,44.3408],[95.3613,44.2969],[95.3613,44.0332],[95.5371,43.9014],[95.8887,43.2422],[96.3281,42.9346],[96.416,42.7588]]]}},{"type":"Feature","properties":{"id":"54","size":"550","name":"西藏","cp":[87.8695,31.6846],"childNum":7},"geometry":{"type":"Polygon","coordinates":[[[79.0137,34.3213],[79.1016,34.4531],[79.8047,34.4971],[79.8926,34.8047],[80.2441,35.2002],[80.332,35.1563],[80.2441,35.2881],[80.4199,35.4199],[81.6504,35.2441],[82.002,35.332],[82.4414,35.7275],[82.8809,35.6836],[83.1445,35.4199],[84.1992,35.376],[85.0781,35.7275],[85.6055,35.6836],[86.1328,35.8594],[86.2207,36.167],[87.3633,36.4307],[88.5938,36.4746],[88.7695,36.3428],[89.209,36.2988],[89.7363,36.0791],[89.3848,36.0352],[89.4727,35.9033],[89.7363,35.7715],[89.7363,35.4199],[89.4727,35.376],[89.4727,35.2441],[89.5605,34.8926],[89.8242,34.8486],[89.7363,34.6729],[89.8242,34.3652],[89.6484,34.0137],[90.0879,33.4863],[90.7031,33.1348],[91.4063,33.1348],[91.9336,32.8271],[92.1973,32.8271],[92.2852,32.7393],[92.9883,32.7393],[93.5156,32.4756],[93.7793,32.5635],[94.1309,32.4316],[94.6582,32.6074],[95.1855,32.4316],[95.0098,32.2998],[95.1855,32.3438],[95.2734,32.2119],[95.3613,32.168],[95.3613,31.9922],[95.4492,31.8164],[95.8008,31.6846],[95.9766,31.8164],[96.1523,31.5967],[96.2402,31.9482],[96.5039,31.7285],[96.8555,31.6846],[96.7676,31.9922],[97.2949,32.0801],[97.3828,32.5635],[97.7344,32.5195],[98.1738,32.3438],[98.4375,31.8604],[98.877,31.4209],[98.6133,31.2012],[98.9648,30.7617],[99.1406,29.2676],[98.9648,29.1357],[98.9648,28.8281],[98.7891,28.8721],[98.7891,29.0039],[98.7012,28.916],[98.6133,28.5205],[98.7891,28.3447],[98.7012,28.2129],[98.3496,28.125],[98.2617,28.3887],[98.1738,28.125],[97.5586,28.5205],[97.2949,28.0811],[97.3828,27.9053],[97.0313,27.7295],[96.5039,28.125],[95.7129,28.2568],[95.3613,28.125],[95.2734,27.9492],[94.2188,27.5537],[93.8672,27.0264],[93.6035,26.9385],[92.1094,26.8506],[92.0215,27.4658],[91.582,27.5537],[91.582,27.9053],[91.4063,28.0371],[91.0547,27.8613],[90.7031,28.0811],[89.8242,28.2129],[89.6484,28.1689],[89.1211,27.5977],[89.1211,27.334],[89.0332,27.2021],[88.7695,27.4219],[88.8574,27.9932],[88.6816,28.125],[88.1543,27.9053],[87.8906,27.9492],[87.7148,27.8174],[87.0996,27.8174],[86.748,28.125],[86.5723,28.125],[86.4844,27.9053],[86.1328,28.125],[86.0449,27.9053],[85.6934,28.3447],[85.6055,28.2568],[85.166,28.3447],[85.166,28.6523],[84.9023,28.5645],[84.4629,28.7402],[84.2871,28.8721],[84.1992,29.2236],[84.1113,29.2676],[83.584,29.1797],[83.2324,29.5752],[82.1777,30.0586],[82.0898,30.3223],[81.3867,30.3662],[81.2109,30.0146],[81.0352,30.2344],[80.0684,30.5859],[79.7168,30.9375],[79.0137,31.0693],[78.75,31.333],[78.8379,31.5967],[78.6621,31.8164],[78.75,31.9043],[78.4863,32.124],[78.3984,32.5195],[78.75,32.6953],[78.9258,32.3438],[79.2773,32.5635],[79.1016,33.1787],[78.6621,33.6621],[78.6621,34.1016],[78.9258,34.1455],[79.0137,34.3213]]]}},{"type":"Feature","properties":{"id":"15","size":"450","name":"内蒙古","cp":[111.670801,41.818311],"childNum":12},"geometry":{"type":"Polygon","coordinates":[[[97.207,42.8027],[99.4922,42.583],[100.8105,42.6709],[101.7773,42.4951],[102.041,42.2314],[102.7441,42.1436],[103.3594,41.8799],[103.8867,41.792],[104.502,41.8799],[104.502,41.6602],[105.0293,41.5723],[105.7324,41.9238],[107.4023,42.4512],[109.4238,42.4512],[110.3906,42.7588],[111.0059,43.3301],[111.9727,43.6816],[111.9727,43.8135],[111.4453,44.3848],[111.7969,45],[111.9727,45.0879],[113.6426,44.7363],[114.1699,44.9561],[114.5215,45.3955],[115.6641,45.4395],[116.1914,45.7031],[116.2793,45.9668],[116.543,46.2744],[117.334,46.3623],[117.4219,46.582],[117.7734,46.5381],[118.3008,46.7578],[118.7402,46.7139],[118.916,46.7578],[119.0918,46.6699],[119.707,46.626],[119.9707,46.7139],[119.707,47.1973],[118.4766,47.9883],[117.8613,48.0322],[117.334,47.6807],[116.8066,47.9004],[116.1914,47.8564],[115.9277,47.6807],[115.5762,47.9004],[115.4883,48.1641],[115.8398,48.252],[115.8398,48.5596],[116.7188,49.834],[117.7734,49.5264],[118.5645,49.9219],[119.2676,50.0977],[119.3555,50.3174],[119.1797,50.3613],[119.5313,50.7568],[119.5313,50.8887],[119.707,51.0645],[120.1465,51.6797],[120.6738,51.9434],[120.7617,52.1191],[120.7617,52.251],[120.5859,52.3389],[120.6738,52.5146],[120.4102,52.6465],[120.0586,52.6025],[120.0586,52.7344],[120.8496,53.2617],[121.4648,53.3496],[121.8164,53.042],[121.2012,52.5586],[121.6406,52.4268],[121.7285,52.2949],[121.9922,52.2949],[122.168,52.5146],[122.6953,52.251],[122.6074,52.0752],[122.959,51.3281],[123.3105,51.2402],[123.6621,51.3721],[124.3652,51.2842],[124.541,51.3721],[124.8926,51.3721],[125.0684,51.6357],[125.332,51.6357],[126.0352,51.0205],[125.7715,50.7568],[125.7715,50.5371],[125.332,50.1416],[125.1563,49.834],[125.2441,49.1748],[124.8047,49.1309],[124.4531,48.1201],[124.2773,48.5156],[122.4316,47.373],[123.0469,46.7139],[123.3984,46.8896],[123.3984,46.9775],[123.4863,46.9775],[123.5742,46.8457],[123.5742,46.8896],[123.5742,46.6699],[123.0469,46.582],[123.2227,46.2305],[122.7832,46.0107],[122.6953,45.7031],[122.4316,45.8789],[122.2559,45.791],[121.8164,46.0107],[121.7285,45.7471],[121.9043,45.7031],[122.2559,45.2637],[122.0801,44.8682],[122.3438,44.2529],[123.1348,44.4727],[123.4863,43.7256],[123.3105,43.5059],[123.6621,43.374],[123.5742,43.0225],[123.3105,42.9785],[123.1348,42.8027],[122.7832,42.7148],[122.3438,42.8467],[122.3438,42.6709],[121.9922,42.7148],[121.7285,42.4512],[121.4648,42.4951],[120.498,42.0996],[120.1465,41.7041],[119.8828,42.1875],[119.5313,42.3633],[119.3555,42.2754],[119.2676,41.7041],[119.4434,41.6162],[119.2676,41.3086],[118.3887,41.3086],[118.125,41.748],[118.3008,41.792],[118.3008,42.0996],[118.125,42.0557],[117.9492,42.2314],[118.0371,42.4072],[117.7734,42.627],[117.5098,42.583],[117.334,42.4512],[116.8945,42.4072],[116.8066,42.0117],[116.2793,42.0117],[116.0156,41.792],[115.9277,41.9238],[115.2246,41.5723],[114.9609,41.6162],[114.873,42.0996],[114.5215,42.1436],[114.1699,41.792],[114.2578,41.5723],[113.9063,41.4404],[113.9941,41.2207],[113.9063,41.1328],[114.082,40.7373],[114.082,40.5176],[113.8184,40.5176],[113.5547,40.3418],[113.2031,40.3857],[112.7637,40.166],[112.3242,40.2539],[111.9727,39.5947],[111.4453,39.6387],[111.3574,39.4189],[111.0938,39.375],[111.0938,39.5947],[110.6543,39.2871],[110.127,39.4629],[110.2148,39.2871],[109.8633,39.2432],[109.9512,39.1553],[108.9844,38.3203],[109.0723,38.0127],[108.8965,37.9688],[108.8086,38.0127],[108.7207,37.7051],[108.1934,37.6172],[107.666,37.8809],[107.3145,38.1006],[106.7871,38.1885],[106.5234,38.3203],[106.9629,38.9795],[106.7871,39.375],[106.3477,39.2871],[105.9082,38.7158],[105.8203,37.793],[104.3262,37.4414],[103.4473,37.8369],[103.3594,38.0127],[103.5352,38.1445],[103.4473,38.3643],[104.2383,38.9795],[104.0625,39.4189],[103.3594,39.3311],[103.0078,39.1113],[102.4805,39.2432],[101.8652,39.1113],[102.041,38.8916],[101.7773,38.6719],[101.3379,38.7598],[101.25,39.0234],[100.9863,38.9355],[100.8105,39.4189],[100.5469,39.4189],[100.0195,39.7705],[99.4922,39.8584],[100.1074,40.2539],[100.1953,40.6494],[99.9316,41.001],[99.2285,40.8691],[99.0527,40.6934],[98.9648,40.7813],[98.7891,40.6055],[98.5254,40.7373],[98.6133,40.6494],[98.3496,40.5615],[98.3496,40.9131],[97.4707,41.4844],[97.8223,41.6162],[97.8223,41.748],[97.207,42.8027]]]}},{"type":"Feature","properties":{"id":"63","size":"800","name":"青海","cp":[95.2402,35.4199],"childNum":8},"geometry":{"type":"Polygon","coordinates":[[[89.7363,36.0791],[89.9121,36.0791],[90,36.2549],[90.8789,36.0352],[91.0547,36.0791],[91.0547,36.5186],[90.791,36.6064],[90.7031,36.7822],[91.3184,37.0898],[91.0547,37.4414],[90.5273,37.8369],[90.6152,38.3203],[90.3516,38.2324],[90.1758,38.4961],[92.373,39.0234],[92.373,39.1113],[93.1641,39.1992],[93.1641,38.9795],[93.6914,38.9355],[93.8672,38.7158],[94.3066,38.7598],[94.5703,38.3643],[95.0098,38.4082],[95.4492,38.2764],[95.7129,38.3643],[96.2402,38.1006],[96.416,38.2324],[96.6797,38.1885],[96.6797,38.4521],[97.1191,38.584],[97.0313,39.1992],[98.1738,38.8037],[98.3496,39.0234],[98.6133,38.9355],[98.7891,39.0674],[99.1406,38.9355],[99.8438,38.3643],[100.1953,38.2764],[100.0195,38.4521],[100.1074,38.4961],[100.459,38.2764],[100.7227,38.2324],[101.1621,37.8369],[101.5137,37.8809],[101.7773,37.6172],[101.9531,37.7051],[102.1289,37.4414],[102.5684,37.1777],[102.4805,36.958],[102.6563,36.8262],[102.5684,36.7383],[102.832,36.3428],[103.0078,36.2549],[102.9199,36.0791],[102.9199,35.9033],[102.6563,35.7715],[102.832,35.5957],[102.4805,35.5957],[102.3047,35.4199],[102.3926,35.2002],[101.9531,34.8486],[101.9531,34.6289],[102.2168,34.4092],[102.1289,34.2773],[101.6895,34.1016],[100.9863,34.3652],[100.8105,34.2773],[101.25,33.6621],[101.5137,33.7061],[101.6016,33.5303],[101.7773,33.5303],[101.6895,33.3105],[101.7773,33.2227],[101.6016,33.1348],[101.1621,33.2227],[101.25,32.6953],[100.7227,32.6514],[100.7227,32.5195],[100.3711,32.7393],[100.1074,32.6514],[100.1074,32.8711],[99.8438,33.0029],[99.7559,32.7393],[99.2285,32.915],[99.2285,33.0469],[98.877,33.1787],[98.4375,34.0576],[97.8223,34.1895],[97.6465,34.1016],[97.7344,33.9258],[97.3828,33.8818],[97.4707,33.5742],[97.7344,33.3984],[97.3828,32.8711],[97.4707,32.6953],[97.7344,32.5195],[97.3828,32.5635],[97.2949,32.0801],[96.7676,31.9922],[96.8555,31.6846],[96.5039,31.7285],[96.2402,31.9482],[96.1523,31.5967],[95.9766,31.8164],[95.8008,31.6846],[95.4492,31.8164],[95.3613,31.9922],[95.3613,32.168],[95.2734,32.2119],[95.1855,32.3438],[95.0098,32.2998],[95.1855,32.4316],[94.6582,32.6074],[94.1309,32.4316],[93.7793,32.5635],[93.5156,32.4756],[92.9883,32.7393],[92.2852,32.7393],[92.1973,32.8271],[91.9336,32.8271],[91.4063,33.1348],[90.7031,33.1348],[90.0879,33.4863],[89.6484,34.0137],[89.8242,34.3652],[89.7363,34.6729],[89.8242,34.8486],[89.5605,34.8926],[89.4727,35.2441],[89.4727,35.376],[89.7363,35.4199],[89.7363,35.7715],[89.4727,35.9033],[89.3848,36.0352],[89.7363,36.0791]]]}},{"type":"Feature","properties":{"id":"51","size":"900","name":"四川","cp":[101.9199,30.1904],"childNum":21},"geometry":{"type":"Polygon","coordinates":[[[101.7773,33.5303],[101.8652,33.5742],[101.9531,33.4424],[101.8652,33.0908],[102.4805,33.4424],[102.2168,33.9258],[102.9199,34.3213],[103.0957,34.1895],[103.1836,33.7939],[104.1504,33.6182],[104.2383,33.3984],[104.4141,33.3105],[104.3262,33.2227],[104.4141,33.0469],[104.3262,32.8711],[104.4141,32.7393],[105.2051,32.6074],[105.3809,32.7393],[105.3809,32.8711],[105.4688,32.915],[105.5566,32.7393],[106.084,32.8711],[106.084,32.7393],[106.3477,32.6514],[107.0508,32.6953],[107.1387,32.4756],[107.2266,32.4316],[107.4023,32.5195],[108.0176,32.168],[108.2813,32.2559],[108.5449,32.2119],[108.3691,32.168],[108.2813,31.9043],[108.5449,31.6846],[108.1934,31.5088],[107.9297,30.8496],[107.4902,30.8496],[107.4023,30.7617],[107.4902,30.6299],[107.0508,30.0146],[106.7871,30.0146],[106.6113,30.3223],[106.2598,30.1904],[105.8203,30.4541],[105.6445,30.2783],[105.5566,30.1025],[105.7324,29.8828],[105.293,29.5313],[105.4688,29.3115],[105.7324,29.2676],[105.8203,28.96],[106.2598,28.8721],[106.3477,28.5205],[105.9961,28.7402],[105.6445,28.4326],[105.9082,28.125],[106.1719,28.125],[106.3477,27.8174],[105.6445,27.6416],[105.5566,27.7734],[105.293,27.7295],[105.2051,27.9932],[105.0293,28.0811],[104.8535,27.9053],[104.4141,27.9492],[104.3262,28.0371],[104.4141,28.125],[104.4141,28.2568],[104.2383,28.4326],[104.4141,28.6084],[103.8867,28.6523],[103.7988,28.3008],[103.4473,28.125],[103.4473,27.7734],[102.9199,27.29],[103.0078,26.3672],[102.6563,26.1914],[102.5684,26.3672],[102.1289,26.1035],[101.8652,26.0596],[101.6016,26.2354],[101.6895,26.3672],[101.4258,26.5869],[101.4258,26.8066],[101.4258,26.7188],[101.1621,27.0264],[101.1621,27.1582],[100.7227,27.8613],[100.3711,27.8174],[100.2832,27.7295],[100.0195,28.125],[100.1953,28.3447],[99.668,28.8281],[99.4043,28.5205],[99.4043,28.1689],[99.2285,28.3008],[99.1406,29.2676],[98.9648,30.7617],[98.6133,31.2012],[98.877,31.4209],[98.4375,31.8604],[98.1738,32.3438],[97.7344,32.5195],[97.4707,32.6953],[97.3828,32.8711],[97.7344,33.3984],[97.4707,33.5742],[97.3828,33.8818],[97.7344,33.9258],[97.6465,34.1016],[97.8223,34.1895],[98.4375,34.0576],[98.877,33.1787],[99.2285,33.0469],[99.2285,32.915],[99.7559,32.7393],[99.8438,33.0029],[100.1074,32.8711],[100.1074,32.6514],[100.3711,32.7393],[100.7227,32.5195],[100.7227,32.6514],[101.25,32.6953],[101.1621,33.2227],[101.6016,33.1348],[101.7773,33.2227],[101.6895,33.3105],[101.7773,33.5303]]]}},{"type":"Feature","properties":{"id":"23","size":"700","name":"黑龙江","cp":[128.642464,46.756967],"childNum":13},"geometry":{"type":"Polygon","coordinates":[[[121.4648,53.3496],[123.6621,53.5693],[124.8926,53.0859],[125.0684,53.2178],[125.5957,53.0859],[125.6836,52.9102],[126.123,52.7783],[126.0352,52.6025],[126.2109,52.5146],[126.3867,52.2949],[126.3867,52.207],[126.5625,52.1631],[126.4746,51.9434],[126.9141,51.3721],[126.8262,51.2842],[127.002,51.3281],[126.9141,51.1084],[127.2656,50.7568],[127.3535,50.2734],[127.6172,50.2295],[127.5293,49.8779],[127.793,49.6143],[128.7598,49.5703],[129.1113,49.3506],[129.4629,49.4385],[130.2539,48.8672],[130.6934,48.8672],[130.5176,48.6475],[130.8691,48.2959],[130.6934,48.1201],[131.0449,47.6807],[132.5391,47.7246],[132.627,47.9443],[133.0664,48.1201],[133.5059,48.1201],[134.209,48.3838],[135.0879,48.4277],[134.7363,48.252],[134.5605,47.9883],[134.7363,47.6807],[134.5605,47.4609],[134.3848,47.4609],[134.209,47.2852],[134.209,47.1533],[133.8574,46.5381],[133.9453,46.2744],[133.5059,45.835],[133.418,45.5713],[133.2422,45.5273],[133.0664,45.1318],[132.8906,45.0439],[131.9238,45.3516],[131.5723,45.0439],[131.0449,44.8682],[131.3086,44.0771],[131.2207,43.7256],[131.3086,43.4619],[130.8691,43.418],[130.5176,43.6377],[130.3418,43.9893],[129.9902,43.8574],[129.9023,44.0332],[129.8145,43.9014],[129.2871,43.8135],[129.1992,43.5938],[128.8477,43.5498],[128.4961,44.165],[128.4082,44.4727],[128.0566,44.3408],[128.0566,44.1211],[127.7051,44.1211],[127.5293,44.6045],[127.0898,44.6045],[127.002,44.7803],[127.0898,45],[126.9141,45.1318],[126.5625,45.2637],[126.0352,45.1758],[125.7715,45.3076],[125.6836,45.5273],[125.0684,45.3955],[124.8926,45.5273],[124.3652,45.4395],[124.0137,45.7471],[123.9258,46.2305],[123.2227,46.2305],[123.0469,46.582],[123.5742,46.6699],[123.5742,46.8896],[123.5742,46.8457],[123.4863,46.9775],[123.3984,46.9775],[123.3984,46.8896],[123.0469,46.7139],[122.4316,47.373],[124.2773,48.5156],[124.4531,48.1201],[124.8047,49.1309],[125.2441,49.1748],[125.1563,49.834],[125.332,50.1416],[125.7715,50.5371],[125.7715,50.7568],[126.0352,51.0205],[125.332,51.6357],[125.0684,51.6357],[124.8926,51.3721],[124.541,51.3721],[124.3652,51.2842],[123.6621,51.3721],[123.3105,51.2402],[122.959,51.3281],[122.6074,52.0752],[122.6953,52.251],[122.168,52.5146],[121.9922,52.2949],[121.7285,52.2949],[121.6406,52.4268],[121.2012,52.5586],[121.8164,53.042],[121.4648,53.3496]]]}},{"type":"Feature","properties":{"id":"62","size":"690","name":"甘肃","cp":[103.823557,36.058039],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[96.416,42.7148],[97.207,42.8027],[97.8223,41.748],[97.8223,41.6162],[97.4707,41.4844],[98.3496,40.9131],[98.3496,40.5615],[98.6133,40.6494],[98.5254,40.7373],[98.7891,40.6055],[98.9648,40.7813],[99.0527,40.6934],[99.2285,40.8691],[99.9316,41.001],[100.1953,40.6494],[100.1074,40.2539],[99.4922,39.8584],[100.0195,39.7705],[100.5469,39.4189],[100.8105,39.4189],[100.9863,38.9355],[101.25,39.0234],[101.3379,38.7598],[101.7773,38.6719],[102.041,38.8916],[101.8652,39.1113],[102.4805,39.2432],[103.0078,39.1113],[103.3594,39.3311],[104.0625,39.4189],[104.2383,38.9795],[103.4473,38.3643],[103.5352,38.1445],[103.3594,38.0127],[103.4473,37.8369],[104.3262,37.4414],[104.5898,37.4414],[104.5898,37.2217],[104.8535,37.2217],[105.293,36.8262],[105.2051,36.6943],[105.4688,36.123],[105.293,35.9912],[105.3809,35.7715],[105.7324,35.7275],[105.8203,35.5518],[105.9961,35.4639],[105.9082,35.4199],[105.9961,35.4199],[106.084,35.376],[106.2598,35.4199],[106.3477,35.2441],[106.5234,35.332],[106.4355,35.6836],[106.6992,35.6836],[106.9629,35.8154],[106.875,36.123],[106.5234,36.2549],[106.5234,36.4746],[106.4355,36.5625],[106.6113,36.7822],[106.6113,37.0898],[107.3145,37.0898],[107.3145,36.9141],[108.7207,36.3428],[108.6328,35.9912],[108.5449,35.8594],[108.6328,35.5518],[108.5449,35.2881],[107.7539,35.2881],[107.7539,35.1123],[107.8418,35.0244],[107.666,34.9365],[107.2266,34.8926],[106.9629,35.0684],[106.6113,35.0684],[106.5234,34.7607],[106.3477,34.585],[106.6992,34.3213],[106.5234,34.2773],[106.6113,34.1455],[106.4355,33.9258],[106.5234,33.5303],[105.9961,33.6182],[105.7324,33.3984],[105.9961,33.1787],[105.9082,33.0029],[105.4688,32.915],[105.3809,32.8711],[105.3809,32.7393],[105.2051,32.6074],[104.4141,32.7393],[104.3262,32.8711],[104.4141,33.0469],[104.3262,33.2227],[104.4141,33.3105],[104.2383,33.3984],[104.1504,33.6182],[103.1836,33.7939],[103.0957,34.1895],[102.9199,34.3213],[102.2168,33.9258],[102.4805,33.4424],[101.8652,33.0908],[101.9531,33.4424],[101.8652,33.5742],[101.7773,33.5303],[101.6016,33.5303],[101.5137,33.7061],[101.25,33.6621],[100.8105,34.2773],[100.9863,34.3652],[101.6895,34.1016],[102.1289,34.2773],[102.2168,34.4092],[101.9531,34.6289],[101.9531,34.8486],[102.3926,35.2002],[102.3047,35.4199],[102.4805,35.5957],[102.832,35.5957],[102.6563,35.7715],[102.9199,35.9033],[102.9199,36.0791],[103.0078,36.2549],[102.832,36.3428],[102.5684,36.7383],[102.6563,36.8262],[102.4805,36.958],[102.5684,37.1777],[102.1289,37.4414],[101.9531,37.7051],[101.7773,37.6172],[101.5137,37.8809],[101.1621,37.8369],[100.7227,38.2324],[100.459,38.2764],[100.1074,38.4961],[100.0195,38.4521],[100.1953,38.2764],[99.8438,38.3643],[99.1406,38.9355],[98.7891,39.0674],[98.6133,38.9355],[98.3496,39.0234],[98.1738,38.8037],[97.0313,39.1992],[97.1191,38.584],[96.6797,38.4521],[96.6797,38.1885],[96.416,38.2324],[96.2402,38.1006],[95.7129,38.3643],[95.4492,38.2764],[95.0098,38.4082],[94.5703,38.3643],[94.3066,38.7598],[93.8672,38.7158],[93.6914,38.9355],[93.1641,38.9795],[93.1641,39.1992],[92.373,39.1113],[92.373,39.3311],[92.6367,39.6387],[93.0762,40.6494],[93.8672,40.6934],[94.043,41.0889],[94.5703,41.4844],[95.1855,41.792],[95.2734,41.6162],[95.9766,41.9238],[96.2402,42.2314],[96.0645,42.3193],[95.9766,42.4951],[96.416,42.7148]]]}},{"type":"Feature","properties":{"id":"53","size":"1200","name":"云南","cp":[101.512251,24.740609],"childNum":16},"geometry":{"type":"Polygon","coordinates":[[[98.1738,28.125],[98.2617,28.3887],[98.3496,28.125],[98.7012,28.2129],[98.7891,28.3447],[98.6133,28.5205],[98.7012,28.916],[98.7891,29.0039],[98.7891,28.8721],[98.9648,28.8281],[98.9648,29.1357],[99.1406,29.2676],[99.2285,28.3008],[99.4043,28.1689],[99.4043,28.5205],[99.668,28.8281],[100.1953,28.3447],[100.0195,28.125],[100.2832,27.7295],[100.3711,27.8174],[100.7227,27.8613],[101.1621,27.1582],[101.1621,27.0264],[101.4258,26.7188],[101.4258,26.8066],[101.4258,26.5869],[101.6895,26.3672],[101.6016,26.2354],[101.8652,26.0596],[102.1289,26.1035],[102.5684,26.3672],[102.6563,26.1914],[103.0078,26.3672],[102.9199,27.29],[103.4473,27.7734],[103.4473,28.125],[103.7988,28.3008],[103.8867,28.6523],[104.4141,28.6084],[104.2383,28.4326],[104.4141,28.2568],[104.4141,28.125],[104.3262,28.0371],[104.4141,27.9492],[104.8535,27.9053],[105.0293,28.0811],[105.2051,27.9932],[105.293,27.7295],[105.2051,27.3779],[104.5898,27.334],[104.4141,27.4658],[104.1504,27.2461],[103.8867,27.4219],[103.623,27.0264],[103.7109,26.9824],[103.7109,26.7627],[103.8867,26.543],[104.4141,26.6748],[104.6777,26.4111],[104.3262,25.708],[104.8535,25.2246],[104.5898,25.0488],[104.6777,24.9609],[104.502,24.7412],[104.6777,24.3457],[104.7656,24.4775],[105.0293,24.4336],[105.2051,24.082],[105.4688,24.0381],[105.5566,24.126],[105.9961,24.126],[106.1719,23.8184],[106.1719,23.5547],[105.6445,23.4229],[105.5566,23.2031],[105.293,23.3789],[104.8535,23.1592],[104.7656,22.8516],[104.3262,22.6758],[104.1504,22.8076],[103.9746,22.5439],[103.623,22.7637],[103.5352,22.5879],[103.3594,22.8076],[103.0957,22.4561],[102.4805,22.7637],[102.3047,22.4121],[101.8652,22.3682],[101.7773,22.5],[101.6016,22.1924],[101.8652,21.6211],[101.7773,21.1377],[101.6016,21.2256],[101.25,21.1816],[101.1621,21.7529],[100.6348,21.4453],[100.1074,21.4893],[99.9316,22.0605],[99.2285,22.1484],[99.4043,22.5879],[99.3164,22.7197],[99.4922,23.0713],[98.877,23.2031],[98.7012,23.9502],[98.877,24.126],[98.1738,24.082],[97.7344,23.8623],[97.5586,23.9063],[97.7344,24.126],[97.6465,24.4336],[97.5586,24.4336],[97.5586,24.7412],[97.7344,24.8291],[97.8223,25.2686],[98.1738,25.4004],[98.1738,25.6201],[98.3496,25.5762],[98.5254,25.8398],[98.7012,25.8838],[98.6133,26.0596],[98.7012,26.1475],[98.7891,26.5869],[98.7012,27.5098],[98.5254,27.6416],[98.3496,27.5098],[98.1738,28.125]]]}},{"type":"Feature","properties":{"id":"45","size":"1450","name":"广西","cp":[107.7813,23.6426],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[104.502,24.7412],[104.6777,24.6094],[105.2051,24.9609],[105.9961,24.6533],[106.1719,24.7852],[106.1719,24.9609],[106.875,25.1807],[107.0508,25.2686],[106.9629,25.4883],[107.2266,25.6201],[107.4902,25.2246],[107.7539,25.2246],[107.8418,25.1367],[108.1055,25.2246],[108.1934,25.4443],[108.3691,25.5322],[108.6328,25.3125],[108.6328,25.5762],[109.0723,25.5322],[108.9844,25.752],[109.3359,25.708],[109.5117,26.0156],[109.7754,25.8838],[109.9512,26.1914],[110.2148,25.9717],[110.5664,26.3232],[111.1816,26.3232],[111.2695,26.2354],[111.2695,25.8838],[111.4453,25.8398],[111.0059,25.0049],[111.0938,24.9609],[111.3574,25.1367],[111.5332,24.6533],[111.709,24.7852],[112.0605,24.7412],[111.8848,24.6533],[112.0605,24.3457],[111.8848,24.2139],[111.8848,23.9941],[111.7969,23.8184],[111.6211,23.8184],[111.6211,23.6865],[111.3574,23.4668],[111.4453,23.0273],[111.2695,22.8076],[110.7422,22.5439],[110.7422,22.2803],[110.6543,22.1484],[110.3027,22.1484],[110.3027,21.8848],[109.9512,21.8408],[109.8633,21.665],[109.7754,21.6211],[109.7754,21.4014],[109.5996,21.4453],[109.1602,21.3574],[109.248,20.874],[109.0723,20.9619],[109.0723,21.5332],[108.7207,21.5332],[108.6328,21.665],[108.2813,21.4893],[107.8418,21.6211],[107.4023,21.6211],[107.0508,21.7969],[107.0508,21.9287],[106.6992,22.0166],[106.6113,22.4121],[106.7871,22.7637],[106.6992,22.8955],[105.9082,22.9395],[105.5566,23.0713],[105.5566,23.2031],[105.6445,23.4229],[106.1719,23.5547],[106.1719,23.8184],[105.9961,24.126],[105.5566,24.126],[105.4688,24.0381],[105.2051,24.082],[105.0293,24.4336],[104.7656,24.4775],[104.6777,24.3457],[104.502,24.7412]]]}},{"type":"Feature","properties":{"id":"43","size":"1700","name":"湖南","cp":[111.782279,28.09409],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[109.248,28.4766],[109.248,29.1357],[109.5117,29.6191],[109.6875,29.6191],[109.7754,29.751],[110.4785,29.6631],[110.6543,29.751],[110.4785,30.0146],[110.8301,30.1465],[111.7969,29.9268],[112.2363,29.5313],[112.5,29.6191],[112.6758,29.5752],[112.9395,29.7949],[113.0273,29.751],[112.9395,29.4873],[113.0273,29.4434],[113.5547,29.8389],[113.5547,29.707],[113.7305,29.5752],[113.6426,29.3115],[113.7305,29.0918],[113.9063,29.0479],[114.1699,28.8281],[114.082,28.5645],[114.2578,28.3447],[113.7305,27.9492],[113.6426,27.5977],[113.6426,27.3779],[113.8184,27.29],[113.7305,27.1143],[113.9063,26.9385],[113.9063,26.6309],[114.082,26.5869],[113.9941,26.1914],[114.2578,26.1475],[113.9941,26.0596],[113.9063,25.4443],[113.6426,25.3125],[113.2031,25.5322],[112.8516,25.3564],[113.0273,25.2246],[113.0273,24.9609],[112.8516,24.917],[112.5879,25.1367],[112.2363,25.1807],[112.1484,24.873],[112.0605,24.7412],[111.709,24.7852],[111.5332,24.6533],[111.3574,25.1367],[111.0938,24.9609],[111.0059,25.0049],[111.4453,25.8398],[111.2695,25.8838],[111.2695,26.2354],[111.1816,26.3232],[110.5664,26.3232],[110.2148,25.9717],[109.9512,26.1914],[109.7754,25.8838],[109.5117,26.0156],[109.4238,26.2793],[109.248,26.3232],[109.4238,26.5869],[109.3359,26.7188],[109.5117,26.8066],[109.5117,27.0264],[109.3359,27.1582],[108.8965,27.0264],[108.8086,27.1143],[109.4238,27.5977],[109.3359,27.9053],[109.3359,28.2568],[109.248,28.4766]]]}},{"type":"Feature","properties":{"id":"61","size":"1150","name":"陕西","cp":[108.948024,34.263161],"childNum":10},"geometry":{"type":"Polygon","coordinates":[[[105.4688,32.915],[105.9082,33.0029],[105.9961,33.1787],[105.7324,33.3984],[105.9961,33.6182],[106.5234,33.5303],[106.4355,33.9258],[106.6113,34.1455],[106.5234,34.2773],[106.6992,34.3213],[106.3477,34.585],[106.5234,34.7607],[106.6113,35.0684],[106.9629,35.0684],[107.2266,34.8926],[107.666,34.9365],[107.8418,35.0244],[107.7539,35.1123],[107.7539,35.2881],[108.5449,35.2881],[108.6328,35.5518],[108.5449,35.8594],[108.6328,35.9912],[108.7207,36.3428],[107.3145,36.9141],[107.3145,37.0898],[107.3145,37.6172],[107.666,37.8809],[108.1934,37.6172],[108.7207,37.7051],[108.8086,38.0127],[108.8965,37.9688],[109.0723,38.0127],[108.9844,38.3203],[109.9512,39.1553],[109.8633,39.2432],[110.2148,39.2871],[110.127,39.4629],[110.6543,39.2871],[111.0938,39.5947],[111.0938,39.375],[111.1816,39.2432],[110.918,38.7158],[110.8301,38.4961],[110.4785,38.1885],[110.4785,37.9688],[110.8301,37.6611],[110.3906,37.002],[110.4785,36.123],[110.5664,35.6396],[110.2148,34.8926],[110.2148,34.6729],[110.3906,34.585],[110.4785,34.2334],[110.6543,34.1455],[110.6543,33.8379],[111.0059,33.5303],[111.0059,33.2666],[110.7422,33.1348],[110.5664,33.2666],[110.3027,33.1787],[109.5996,33.2666],[109.4238,33.1348],[109.7754,33.0469],[109.7754,32.915],[110.127,32.7393],[110.127,32.6074],[109.6875,32.6074],[109.5117,32.4316],[109.5996,31.7285],[109.248,31.7285],[109.0723,31.9482],[108.5449,32.2119],[108.2813,32.2559],[108.0176,32.168],[107.4023,32.5195],[107.2266,32.4316],[107.1387,32.4756],[107.0508,32.6953],[106.3477,32.6514],[106.084,32.7393],[106.084,32.8711],[105.5566,32.7393],[105.4688,32.915]]]}},{"type":"Feature","properties":{"id":"44","size":"1600","name":"广东","cp":[113.280637,23.125178],"childNum":21},"geometry":{"type":"Polygon","coordinates":[[[109.7754,21.4014],[109.7754,21.6211],[109.8633,21.665],[109.9512,21.8408],[110.3027,21.8848],[110.3027,22.1484],[110.6543,22.1484],[110.7422,22.2803],[110.7422,22.5439],[111.2695,22.8076],[111.4453,23.0273],[111.3574,23.4668],[111.6211,23.6865],[111.6211,23.8184],[111.7969,23.8184],[111.8848,23.9941],[111.8848,24.2139],[112.0605,24.3457],[111.8848,24.6533],[112.0605,24.7412],[112.1484,24.873],[112.2363,25.1807],[112.5879,25.1367],[112.8516,24.917],[113.0273,24.9609],[113.0273,25.2246],[112.8516,25.3564],[113.2031,25.5322],[113.6426,25.3125],[113.9063,25.4443],[113.9941,25.2686],[114.6094,25.4004],[114.7852,25.2686],[114.6973,25.1367],[114.4336,24.9609],[114.1699,24.6973],[114.4336,24.5215],[115.4004,24.7852],[115.8398,24.5654],[115.752,24.7852],[115.9277,24.917],[116.2793,24.7852],[116.3672,24.873],[116.543,24.6094],[116.7188,24.6533],[116.9824,24.1699],[116.9824,23.9063],[117.1582,23.5547],[117.334,23.2471],[116.8945,23.3789],[116.6309,23.1152],[116.543,22.8516],[115.9277,22.7197],[115.6641,22.7637],[115.5762,22.6318],[115.0488,22.6758],[114.6094,22.3682],[114.3457,22.5439],[113.9941,22.5],[113.8184,22.1924],[114.3457,22.1484],[114.4336,22.0166],[114.082,21.9287],[113.9941,21.7969],[113.5547,22.0166],[113.1152,21.8408],[112.9395,21.5771],[112.4121,21.4453],[112.2363,21.5332],[111.5332,21.4893],[111.2695,21.3574],[110.7422,21.3574],[110.6543,21.2256],[110.7422,20.918],[110.4785,20.874],[110.6543,20.2588],[110.5664,20.2588],[110.3906,20.127],[110.0391,20.127],[109.8633,20.127],[109.8633,20.3027],[109.5996,20.918],[109.7754,21.4014],[109.7754,21.4014]],[[113.5986,22.1649],[113.6096,22.1265],[113.5547,22.11],[113.5437,22.2034],[113.5767,22.2034],[113.5986,22.1649]]]}},{"type":"Feature","properties":{"id":"22","size":"1120","name":"吉林","cp":[125.7746,43.5938],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[123.2227,46.2305],[123.9258,46.2305],[124.0137,45.7471],[124.3652,45.4395],[124.8926,45.5273],[125.0684,45.3955],[125.6836,45.5273],[125.7715,45.3076],[126.0352,45.1758],[126.5625,45.2637],[126.9141,45.1318],[127.0898,45],[127.002,44.7803],[127.0898,44.6045],[127.5293,44.6045],[127.7051,44.1211],[128.0566,44.1211],[128.0566,44.3408],[128.4082,44.4727],[128.4961,44.165],[128.8477,43.5498],[129.1992,43.5938],[129.2871,43.8135],[129.8145,43.9014],[129.9023,44.0332],[129.9902,43.8574],[130.3418,43.9893],[130.5176,43.6377],[130.8691,43.418],[131.3086,43.4619],[131.3086,43.3301],[131.1328,42.9346],[130.4297,42.7148],[130.6055,42.6709],[130.6055,42.4512],[130.2539,42.7588],[130.2539,42.8906],[130.166,42.9785],[129.9023,43.0225],[129.7266,42.4951],[129.375,42.4512],[128.9355,42.0117],[128.0566,42.0117],[128.3203,41.5723],[128.1445,41.3525],[127.0898,41.5283],[127.1777,41.5723],[126.9141,41.792],[126.6504,41.6602],[126.4746,41.3965],[126.123,40.957],[125.6836,40.8691],[125.5957,40.9131],[125.7715,41.2207],[125.332,41.6602],[125.332,41.9678],[125.4199,42.0996],[125.332,42.1436],[124.8926,42.8027],[124.8926,43.0664],[124.7168,43.0664],[124.4531,42.8467],[124.2773,43.2422],[123.8379,43.4619],[123.6621,43.374],[123.3105,43.5059],[123.4863,43.7256],[123.1348,44.4727],[122.3438,44.2529],[122.0801,44.8682],[122.2559,45.2637],[121.9043,45.7031],[121.7285,45.7471],[121.8164,46.0107],[122.2559,45.791],[122.4316,45.8789],[122.6953,45.7031],[122.7832,46.0107],[123.2227,46.2305]]]}},{"type":"Feature","properties":{"id":"13","size":"1300","name":"河北","cp":[114.502461,38.045474],"childNum":11},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.5215,39.5068],[114.3457,39.8584],[113.9941,39.9902],[114.5215,40.3418],[114.3457,40.3857],[114.2578,40.6055],[114.082,40.7373],[113.9063,41.1328],[113.9941,41.2207],[113.9063,41.4404],[114.2578,41.5723],[114.1699,41.792],[114.5215,42.1436],[114.873,42.0996],[114.9609,41.6162],[115.2246,41.5723],[115.9277,41.9238],[116.0156,41.792],[116.2793,42.0117],[116.8066,42.0117],[116.8945,42.4072],[117.334,42.4512],[117.5098,42.583],[117.7734,42.627],[118.0371,42.4072],[117.9492,42.2314],[118.125,42.0557],[118.3008,42.0996],[118.3008,41.792],[118.125,41.748],[118.3887,41.3086],[119.2676,41.3086],[118.8281,40.8252],[119.2676,40.5176],[119.5313,40.5615],[119.707,40.1221],[119.8828,39.9463],[119.5313,39.6826],[119.4434,39.4189],[118.916,39.0674],[118.4766,38.9355],[118.125,39.0234],[118.0371,39.1992],[118.0371,39.2432],[117.8613,39.4189],[117.9492,39.5947],[117.6855,39.5947],[117.5098,39.7705],[117.5098,39.9902],[117.6855,39.9902],[117.6855,40.0781],[117.4219,40.21],[117.2461,40.5176],[117.4219,40.6494],[116.9824,40.6934],[116.6309,41.0449],[116.3672,40.9131],[116.4551,40.7813],[116.1914,40.7813],[116.1035,40.6055],[115.752,40.5615],[115.9277,40.2539],[115.4004,39.9463],[115.4883,39.6387],[115.752,39.5068],[116.1914,39.5947],[116.3672,39.4629],[116.543,39.5947],[116.8066,39.5947],[116.8945,39.1113],[116.7188,38.9355],[116.7188,38.8037],[117.2461,38.54],[117.5977,38.6279],[117.9492,38.3203],[117.4219,37.8369],[116.8066,37.8369],[116.4551,37.4854],[116.2793,37.5732],[116.2793,37.3535],[116.0156,37.3535],[115.752,36.9141],[115.3125,36.5186],[115.4883,36.167],[115.3125,36.0791],[115.1367,36.2109],[114.9609,36.0791],[114.873,36.123],[113.7305,36.3428],[113.4668,36.6504],[113.7305,36.8701],[113.7305,37.1338],[114.1699,37.6611],[113.9941,37.7051],[113.8184,38.1445],[113.5547,38.2764],[113.5547,38.54],[113.8184,38.8037],[113.8184,38.9355],[113.9063,39.0234],[114.3457,39.0674],[114.5215,39.5068]]],[[[117.2461,40.0781],[117.1582,39.8145],[117.1582,39.6387],[116.8945,39.6826],[116.8945,39.8145],[116.8066,39.9902],[117.2461,40.0781]]]]}},{"type":"Feature","properties":{"id":"42","size":"1500","name":"湖北","cp":[113.298572,30.684355],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[110.2148,31.1572],[110.127,31.377],[109.6875,31.5527],[109.7754,31.6846],[109.5996,31.7285],[109.5117,32.4316],[109.6875,32.6074],[110.127,32.6074],[110.127,32.7393],[109.7754,32.915],[109.7754,33.0469],[109.4238,33.1348],[109.5996,33.2666],[110.3027,33.1787],[110.5664,33.2666],[110.7422,33.1348],[111.0059,33.2666],[111.5332,32.6074],[112.3242,32.3438],[113.2031,32.4316],[113.4668,32.2998],[113.7305,32.4316],[113.8184,31.8604],[113.9941,31.7725],[114.1699,31.8604],[114.5215,31.7725],[114.6094,31.5527],[114.7852,31.4648],[115.1367,31.5967],[115.2246,31.4209],[115.4004,31.4209],[115.5762,31.2012],[116.0156,31.0254],[115.752,30.6738],[116.1035,30.1904],[116.1035,29.8389],[115.9277,29.707],[115.4883,29.7949],[114.873,29.3994],[114.2578,29.3555],[113.9063,29.0479],[113.7305,29.0918],[113.6426,29.3115],[113.7305,29.5752],[113.5547,29.707],[113.5547,29.8389],[113.0273,29.4434],[112.9395,29.4873],[113.0273,29.751],[112.9395,29.7949],[112.6758,29.5752],[112.5,29.6191],[112.2363,29.5313],[111.7969,29.9268],[110.8301,30.1465],[110.4785,30.0146],[110.6543,29.751],[110.4785,29.6631],[109.7754,29.751],[109.6875,29.6191],[109.5117,29.6191],[109.248,29.1357],[109.0723,29.3555],[108.9844,29.3115],[108.6328,29.8389],[108.457,29.7949],[108.5449,30.2344],[108.457,30.4102],[108.6328,30.5859],[108.8086,30.498],[109.0723,30.6299],[109.1602,30.542],[109.248,30.6299],[109.4238,30.542],[109.8633,30.8936],[110.0391,30.8057],[110.2148,31.1572]]]}},{"type":"Feature","properties":{"id":"52","size":"2000","name":"贵州","cp":[106.6113,26.9385],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[104.1504,27.2461],[104.4141,27.4658],[104.5898,27.334],[105.2051,27.3779],[105.293,27.7295],[105.5566,27.7734],[105.6445,27.6416],[106.3477,27.8174],[106.1719,28.125],[105.9082,28.125],[105.6445,28.4326],[105.9961,28.7402],[106.3477,28.5205],[106.5234,28.5645],[106.4355,28.7842],[106.5234,28.7842],[106.6113,28.6523],[106.6113,28.5205],[106.6992,28.4766],[106.875,28.7842],[107.4023,28.8721],[107.4023,29.1797],[107.5781,29.2236],[107.8418,29.1357],[107.8418,29.0039],[108.2813,29.0918],[108.3691,28.6523],[108.5449,28.6523],[108.5449,28.3887],[108.7207,28.4766],[108.7207,28.2129],[109.0723,28.2129],[109.248,28.4766],[109.3359,28.2568],[109.3359,27.9053],[109.4238,27.5977],[108.8086,27.1143],[108.8965,27.0264],[109.3359,27.1582],[109.5117,27.0264],[109.5117,26.8066],[109.3359,26.7188],[109.4238,26.5869],[109.248,26.3232],[109.4238,26.2793],[109.5117,26.0156],[109.3359,25.708],[108.9844,25.752],[109.0723,25.5322],[108.6328,25.5762],[108.6328,25.3125],[108.3691,25.5322],[108.1934,25.4443],[108.1055,25.2246],[107.8418,25.1367],[107.7539,25.2246],[107.4902,25.2246],[107.2266,25.6201],[106.9629,25.4883],[107.0508,25.2686],[106.875,25.1807],[106.1719,24.9609],[106.1719,24.7852],[105.9961,24.6533],[105.2051,24.9609],[104.6777,24.6094],[104.502,24.7412],[104.6777,24.9609],[104.5898,25.0488],[104.8535,25.2246],[104.3262,25.708],[104.6777,26.4111],[104.4141,26.6748],[103.8867,26.543],[103.7109,26.7627],[103.7109,26.9824],[103.623,27.0264],[103.8867,27.4219],[104.1504,27.2461]]]}},{"type":"Feature","properties":{"id":"37","size":"1500","name":"山东","cp":[118.7402,36.4307],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[115.4883,36.167],[115.3125,36.5186],[115.752,36.9141],[116.0156,37.3535],[116.2793,37.3535],[116.2793,37.5732],[116.4551,37.4854],[116.8066,37.8369],[117.4219,37.8369],[117.9492,38.3203],[118.125,38.1445],[118.916,38.1445],[119.3555,37.6611],[119.0039,37.5293],[119.0039,37.3535],[119.3555,37.1338],[119.707,37.1338],[119.8828,37.3975],[120.498,37.8369],[120.5859,38.1445],[120.9375,38.4521],[121.0254,37.8369],[121.2012,37.6611],[121.9043,37.4854],[122.168,37.6172],[122.2559,37.4854],[122.6074,37.4854],[122.6953,37.3535],[122.6074,36.9141],[122.4316,36.7822],[121.8164,36.8701],[121.7285,36.6943],[121.1133,36.6064],[121.1133,36.4307],[121.377,36.2549],[120.7617,36.167],[120.9375,35.8594],[120.6738,36.0352],[119.707,35.4639],[119.9707,34.9805],[119.3555,35.0244],[119.2676,35.1123],[118.916,35.0244],[118.7402,34.7168],[118.4766,34.6729],[118.3887,34.4092],[118.2129,34.4092],[118.125,34.6289],[117.9492,34.6729],[117.5977,34.4531],[117.334,34.585],[117.2461,34.4531],[116.8066,34.9365],[116.4551,34.8926],[116.3672,34.6289],[116.1914,34.585],[115.5762,34.585],[115.4004,34.8486],[114.7852,35.0684],[115.0488,35.376],[115.2246,35.4199],[115.4883,35.7275],[116.1035,36.0791],[115.3125,35.8154],[115.4883,36.167]]]}},{"type":"Feature","properties":{"id":"36","size":"1700","name":"江西","cp":[115.592151,27.676493],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[114.2578,28.3447],[114.082,28.5645],[114.1699,28.8281],[113.9063,29.0479],[114.2578,29.3555],[114.873,29.3994],[115.4883,29.7949],[115.9277,29.707],[116.1035,29.8389],[116.2793,29.7949],[116.7188,30.0586],[116.8945,29.9268],[116.7188,29.751],[116.7188,29.6191],[117.1582,29.707],[117.0703,29.8389],[117.1582,29.9268],[117.5098,29.6191],[118.0371,29.5752],[118.2129,29.3994],[118.0371,29.1797],[118.0371,29.0479],[118.3887,28.7842],[118.4766,28.3447],[118.4766,28.3008],[118.3008,28.0811],[117.7734,27.8174],[117.5098,27.9932],[116.9824,27.6416],[117.1582,27.29],[117.0703,27.1143],[116.543,26.8066],[116.6309,26.4551],[116.3672,26.2354],[116.4551,26.1035],[116.1914,25.8838],[116.0156,25.2686],[115.8398,25.2246],[115.9277,24.917],[115.752,24.7852],[115.8398,24.5654],[115.4004,24.7852],[114.4336,24.5215],[114.1699,24.6973],[114.4336,24.9609],[114.6973,25.1367],[114.7852,25.2686],[114.6094,25.4004],[113.9941,25.2686],[113.9063,25.4443],[113.9941,26.0596],[114.2578,26.1475],[113.9941,26.1914],[114.082,26.5869],[113.9063,26.6309],[113.9063,26.9385],[113.7305,27.1143],[113.8184,27.29],[113.6426,27.3779],[113.6426,27.5977],[113.7305,27.9492],[114.2578,28.3447]]]}},{"type":"Feature","properties":{"id":"41","size":"1700","name":"河南","cp":[113.0668,33.8818],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[110.3906,34.585],[110.8301,34.6289],[111.1816,34.8047],[111.5332,34.8486],[111.7969,35.0684],[112.0605,35.0684],[112.0605,35.2881],[112.7637,35.2002],[113.1152,35.332],[113.6426,35.6836],[113.7305,36.3428],[114.873,36.123],[114.9609,36.0791],[115.1367,36.2109],[115.3125,36.0791],[115.4883,36.167],[115.3125,35.8154],[116.1035,36.0791],[115.4883,35.7275],[115.2246,35.4199],[115.0488,35.376],[114.7852,35.0684],[115.4004,34.8486],[115.5762,34.585],[116.1914,34.585],[116.1914,34.4092],[116.543,34.2773],[116.6309,33.9258],[116.1914,33.7061],[116.0156,33.9697],[115.6641,34.0576],[115.5762,33.9258],[115.5762,33.6621],[115.4004,33.5303],[115.3125,33.1787],[114.873,33.1348],[114.873,33.0029],[115.1367,32.8711],[115.2246,32.6074],[115.5762,32.4316],[115.8398,32.5195],[115.9277,31.7725],[115.4883,31.6846],[115.4004,31.4209],[115.2246,31.4209],[115.1367,31.5967],[114.7852,31.4648],[114.6094,31.5527],[114.5215,31.7725],[114.1699,31.8604],[113.9941,31.7725],[113.8184,31.8604],[113.7305,32.4316],[113.4668,32.2998],[113.2031,32.4316],[112.3242,32.3438],[111.5332,32.6074],[111.0059,33.2666],[111.0059,33.5303],[110.6543,33.8379],[110.6543,34.1455],[110.4785,34.2334],[110.3906,34.585]]]}},{"type":"Feature","properties":{"id":"21","size":"1500","name":"辽宁","cp":[122.0438,41.0889],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[119.2676,41.3086],[119.4434,41.6162],[119.2676,41.7041],[119.3555,42.2754],[119.5313,42.3633],[119.8828,42.1875],[120.1465,41.7041],[120.498,42.0996],[121.4648,42.4951],[121.7285,42.4512],[121.9922,42.7148],[122.3438,42.6709],[122.3438,42.8467],[122.7832,42.7148],[123.1348,42.8027],[123.3105,42.9785],[123.5742,43.0225],[123.6621,43.374],[123.8379,43.4619],[124.2773,43.2422],[124.4531,42.8467],[124.7168,43.0664],[124.8926,43.0664],[124.8926,42.8027],[125.332,42.1436],[125.4199,42.0996],[125.332,41.9678],[125.332,41.6602],[125.7715,41.2207],[125.5957,40.9131],[125.6836,40.8691],[124.541,40.21],[124.1016,39.6826],[123.3984,39.6826],[123.1348,39.4189],[123.1348,39.0234],[122.0801,39.0234],[121.5527,38.7158],[121.1133,38.6719],[120.9375,38.9795],[121.377,39.1992],[121.2012,39.5508],[122.0801,40.3857],[121.9922,40.6934],[121.7285,40.8252],[121.2012,40.8252],[120.5859,40.21],[119.8828,39.9463],[119.707,40.1221],[119.5313,40.5615],[119.2676,40.5176],[118.8281,40.8252],[119.2676,41.3086]]]}},{"type":"Feature","properties":{"id":"14","size":"1450","name":"山西","cp":[111.849248,36.857014],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[110.918,38.7158],[111.1816,39.2432],[111.0938,39.375],[111.3574,39.4189],[111.4453,39.6387],[111.9727,39.5947],[112.3242,40.2539],[112.7637,40.166],[113.2031,40.3857],[113.5547,40.3418],[113.8184,40.5176],[114.082,40.5176],[114.082,40.7373],[114.2578,40.6055],[114.3457,40.3857],[114.5215,40.3418],[113.9941,39.9902],[114.3457,39.8584],[114.5215,39.5068],[114.3457,39.0674],[113.9063,39.0234],[113.8184,38.9355],[113.8184,38.8037],[113.5547,38.54],[113.5547,38.2764],[113.8184,38.1445],[113.9941,37.7051],[114.1699,37.6611],[113.7305,37.1338],[113.7305,36.8701],[113.4668,36.6504],[113.7305,36.3428],[113.6426,35.6836],[113.1152,35.332],[112.7637,35.2002],[112.0605,35.2881],[112.0605,35.0684],[111.7969,35.0684],[111.5332,34.8486],[111.1816,34.8047],[110.8301,34.6289],[110.3906,34.585],[110.2148,34.6729],[110.2148,34.8926],[110.5664,35.6396],[110.4785,36.123],[110.3906,37.002],[110.8301,37.6611],[110.4785,37.9688],[110.4785,38.1885],[110.8301,38.4961],[110.918,38.7158]]]}},{"type":"Feature","properties":{"id":"34","size":"1700","name":"安徽","cp":[117.283042,31.26119],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[116.6309,33.9258],[116.543,34.2773],[116.1914,34.4092],[116.1914,34.585],[116.3672,34.6289],[116.8945,34.4092],[117.1582,34.0576],[117.5977,34.0137],[117.7734,33.7061],[118.125,33.75],[117.9492,33.2227],[118.0371,33.1348],[118.2129,33.2227],[118.3008,32.7832],[118.7402,32.7393],[118.916,32.959],[119.1797,32.8271],[119.1797,32.4756],[118.5645,32.5635],[118.6523,32.2119],[118.4766,32.168],[118.3887,31.9482],[118.916,31.5527],[118.7402,31.377],[118.8281,31.2451],[119.3555,31.2891],[119.4434,31.1572],[119.6191,31.1133],[119.6191,31.0693],[119.4434,30.6738],[119.2676,30.6299],[119.3555,30.4102],[118.916,30.3223],[118.916,29.9707],[118.7402,29.707],[118.2129,29.3994],[118.0371,29.5752],[117.5098,29.6191],[117.1582,29.9268],[117.0703,29.8389],[117.1582,29.707],[116.7188,29.6191],[116.7188,29.751],[116.8945,29.9268],[116.7188,30.0586],[116.2793,29.7949],[116.1035,29.8389],[116.1035,30.1904],[115.752,30.6738],[116.0156,31.0254],[115.5762,31.2012],[115.4004,31.4209],[115.4883,31.6846],[115.9277,31.7725],[115.8398,32.5195],[115.5762,32.4316],[115.2246,32.6074],[115.1367,32.8711],[114.873,33.0029],[114.873,33.1348],[115.3125,33.1787],[115.4004,33.5303],[115.5762,33.6621],[115.5762,33.9258],[115.6641,34.0576],[116.0156,33.9697],[116.1914,33.7061],[116.6309,33.9258]]]}},{"type":"Feature","properties":{"id":"35","size":"2000","name":"福建","cp":[118.306239,26.075302],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[118.4766,28.3008],[118.8281,28.2568],[118.7402,28.0371],[118.916,27.4658],[119.2676,27.4219],[119.6191,27.6855],[119.7949,27.29],[120.2344,27.4219],[120.4102,27.1582],[120.7617,27.0264],[120.6738,26.8945],[120.2344,26.8506],[120.2344,26.7188],[120.4102,26.6748],[120.498,26.3672],[120.2344,26.2793],[120.4102,26.1475],[120.0586,26.1914],[119.9707,25.9277],[119.7949,25.9277],[119.9707,25.4004],[119.7949,25.2686],[119.5313,25.1367],[119.4434,25.0049],[119.2676,25.0928],[118.916,24.8291],[118.6523,24.5215],[118.4766,24.5215],[118.4766,24.4336],[118.2129,24.3457],[118.2129,24.1699],[117.8613,23.9941],[117.7734,23.7744],[117.5098,23.5986],[117.1582,23.5547],[116.9824,23.9063],[116.9824,24.1699],[116.7188,24.6533],[116.543,24.6094],[116.3672,24.873],[116.2793,24.7852],[115.9277,24.917],[115.8398,25.2246],[116.0156,25.2686],[116.1914,25.8838],[116.4551,26.1035],[116.3672,26.2354],[116.6309,26.4551],[116.543,26.8066],[117.0703,27.1143],[117.1582,27.29],[116.9824,27.6416],[117.5098,27.9932],[117.7734,27.8174],[118.3008,28.0811],[118.4766,28.3008]]]}},{"type":"Feature","properties":{"id":"33","size":"2100","name":"浙江","cp":[120.498,29.0918],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[118.2129,29.3994],[118.7402,29.707],[118.916,29.9707],[118.916,30.3223],[119.3555,30.4102],[119.2676,30.6299],[119.4434,30.6738],[119.6191,31.0693],[119.6191,31.1133],[119.9707,31.1572],[120.498,30.8057],[120.9375,31.0254],[121.2891,30.6738],[121.9922,30.8057],[122.6953,30.8936],[122.8711,30.7178],[122.959,30.1465],[122.6074,30.1025],[122.6074,29.9268],[122.168,29.5313],[122.3438,28.8721],[121.9922,28.8721],[121.9922,28.4326],[121.7285,28.3447],[121.7285,28.2129],[121.4648,28.2129],[121.5527,28.0371],[121.2891,27.9492],[121.1133,27.4219],[120.6738,27.334],[120.6738,27.1582],[120.9375,27.0264],[120.7617,27.0264],[120.4102,27.1582],[120.2344,27.4219],[119.7949,27.29],[119.6191,27.6855],[119.2676,27.4219],[118.916,27.4658],[118.7402,28.0371],[118.8281,28.2568],[118.4766,28.3008],[118.4766,28.3447],[118.3887,28.7842],[118.0371,29.0479],[118.0371,29.1797],[118.2129,29.3994]]]}},{"type":"Feature","properties":{"id":"32","size":"1950","name":"江苏","cp":[119.767413,33.041544],"childNum":13},"geometry":{"type":"Polygon","coordinates":[[[116.3672,34.6289],[116.4551,34.8926],[116.8066,34.9365],[117.2461,34.4531],[117.334,34.585],[117.5977,34.4531],[117.9492,34.6729],[118.125,34.6289],[118.2129,34.4092],[118.3887,34.4092],[118.4766,34.6729],[118.7402,34.7168],[118.916,35.0244],[119.2676,35.1123],[119.3555,35.0244],[119.3555,34.8486],[119.707,34.585],[120.3223,34.3652],[120.9375,33.0469],[121.0254,32.6514],[121.377,32.4756],[121.4648,32.168],[121.9043,31.9922],[121.9922,31.6846],[121.9922,31.5967],[121.2012,31.8604],[121.1133,31.7285],[121.377,31.5088],[121.2012,31.4648],[120.9375,31.0254],[120.498,30.8057],[119.9707,31.1572],[119.6191,31.1133],[119.4434,31.1572],[119.3555,31.2891],[118.8281,31.2451],[118.7402,31.377],[118.916,31.5527],[118.3887,31.9482],[118.4766,32.168],[118.6523,32.2119],[118.5645,32.5635],[119.1797,32.4756],[119.1797,32.8271],[118.916,32.959],[118.7402,32.7393],[118.3008,32.7832],[118.2129,33.2227],[118.0371,33.1348],[117.9492,33.2227],[118.125,33.75],[117.7734,33.7061],[117.5977,34.0137],[117.1582,34.0576],[116.8945,34.4092],[116.3672,34.6289]]]}},{"type":"Feature","properties":{"id":"50","size":"2380","name":"重庆","cp":[107.304962,29.533155],"childNum":40},"geometry":{"type":"Polygon","coordinates":[[[108.5449,31.6846],[108.2813,31.9043],[108.3691,32.168],[108.5449,32.2119],[109.0723,31.9482],[109.248,31.7285],[109.5996,31.7285],[109.7754,31.6846],[109.6875,31.5527],[110.127,31.377],[110.2148,31.1572],[110.0391,30.8057],[109.8633,30.8936],[109.4238,30.542],[109.248,30.6299],[109.1602,30.542],[109.0723,30.6299],[108.8086,30.498],[108.6328,30.5859],[108.457,30.4102],[108.5449,30.2344],[108.457,29.7949],[108.6328,29.8389],[108.9844,29.3115],[109.0723,29.3555],[109.248,29.1357],[109.248,28.4766],[109.0723,28.2129],[108.7207,28.2129],[108.7207,28.4766],[108.5449,28.3887],[108.5449,28.6523],[108.3691,28.6523],[108.2813,29.0918],[107.8418,29.0039],[107.8418,29.1357],[107.5781,29.2236],[107.4023,29.1797],[107.4023,28.8721],[106.875,28.7842],[106.6992,28.4766],[106.6113,28.5205],[106.6113,28.6523],[106.5234,28.7842],[106.4355,28.7842],[106.5234,28.5645],[106.3477,28.5205],[106.2598,28.8721],[105.8203,28.96],[105.7324,29.2676],[105.4688,29.3115],[105.293,29.5313],[105.7324,29.8828],[105.5566,30.1025],[105.6445,30.2783],[105.8203,30.4541],[106.2598,30.1904],[106.6113,30.3223],[106.7871,30.0146],[107.0508,30.0146],[107.4902,30.6299],[107.4023,30.7617],[107.4902,30.8496],[107.9297,30.8496],[108.1934,31.5088],[108.5449,31.6846]]]}},{"type":"Feature","properties":{"id":"64","size":"2100","name":"宁夏","cp":[105.9961,37.3096],"childNum":5},"geometry":{"type":"Polygon","coordinates":[[[104.3262,37.4414],[105.8203,37.793],[105.9082,38.7158],[106.3477,39.2871],[106.7871,39.375],[106.9629,38.9795],[106.5234,38.3203],[106.7871,38.1885],[107.3145,38.1006],[107.666,37.8809],[107.3145,37.6172],[107.3145,37.0898],[106.6113,37.0898],[106.6113,36.7822],[106.4355,36.5625],[106.5234,36.4746],[106.5234,36.2549],[106.875,36.123],[106.9629,35.8154],[106.6992,35.6836],[106.4355,35.6836],[106.5234,35.332],[106.3477,35.2441],[106.2598,35.4199],[106.084,35.376],[105.9961,35.4199],[106.084,35.4639],[105.9961,35.4639],[105.8203,35.5518],[105.7324,35.7275],[105.3809,35.7715],[105.293,35.9912],[105.4688,36.123],[105.2051,36.6943],[105.293,36.8262],[104.8535,37.2217],[104.5898,37.2217],[104.5898,37.4414],[104.3262,37.4414]]]}},{"type":"Feature","properties":{"id":"46","size":"4500","name":"海南","cp":[109.9512,19.2041],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[108.6328,19.3799],[109.0723,19.6436],[109.248,19.9512],[109.5996,20.0391],[110.0391,20.127],[110.3906,20.127],[110.5664,20.2588],[110.6543,20.2588],[111.0938,19.9512],[111.2695,19.9951],[110.6543,19.1602],[110.5664,18.6768],[110.2148,18.5889],[110.0391,18.3691],[109.8633,18.3691],[109.6875,18.1055],[108.9844,18.2813],[108.6328,18.457],[108.6328,19.3799]]]}},{"type":"Feature","properties":{"id":"71","size":"3000","name":"台湾","cp":[120.0254,23.5986],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[121.9043,25.0488],[121.9922,25.0049],[121.8164,24.7412],[121.9043,24.5654],[121.6406,24.0381],[121.377,23.1152],[121.0254,22.6758],[120.8496,22.0605],[120.7617,21.9287],[120.6738,22.3242],[120.2344,22.5879],[120.0586,23.0713],[120.1465,23.6865],[121.0254,25.0488],[121.5527,25.3125],[121.9043,25.0488]]]}},{"type":"Feature","properties":{"id":"11","size":"5000","name":"北京","cp":[116.4551,40.2539],"childNum":19},"geometry":{"type":"Polygon","coordinates":[[[117.4219,40.21],[117.334,40.1221],[117.2461,40.0781],[116.8066,39.9902],[116.8945,39.8145],[116.8945,39.6826],[116.8066,39.5947],[116.543,39.5947],[116.3672,39.4629],[116.1914,39.5947],[115.752,39.5068],[115.4883,39.6387],[115.4004,39.9463],[115.9277,40.2539],[115.752,40.5615],[116.1035,40.6055],[116.1914,40.7813],[116.4551,40.7813],[116.3672,40.9131],[116.6309,41.0449],[116.9824,40.6934],[117.4219,40.6494],[117.2461,40.5176],[117.4219,40.21]]]}},{"type":"Feature","properties":{"id":"12","size":"5000","name":"天津","cp":[117.4219,39.4189],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[116.8066,39.5947],[116.8945,39.6826],[117.1582,39.6387],[117.1582,39.8145],[117.2461,40.0781],[117.334,40.1221],[117.4219,40.21],[117.6855,40.0781],[117.6855,39.9902],[117.5098,39.9902],[117.5098,39.7705],[117.6855,39.5947],[117.9492,39.5947],[117.8613,39.4189],[118.0371,39.2432],[118.0371,39.1992],[117.8613,39.1113],[117.5977,38.6279],[117.2461,38.54],[116.7188,38.8037],[116.7188,38.9355],[116.8945,39.1113],[116.8066,39.5947]]]}},{"type":"Feature","properties":{"id":"31","size":"7500","name":"上海","cp":[121.4648,31.2891],"childNum":19},"geometry":{"type":"Polygon","coordinates":[[[120.9375,31.0254],[121.2012,31.4648],[121.377,31.5088],[121.1133,31.7285],[121.2012,31.8604],[121.9922,31.5967],[121.9043,31.1572],[121.9922,30.8057],[121.2891,30.6738],[120.9375,31.0254]]]}},{"type":"Feature","properties":{"id":"81","size":"18000","name":"香港","cp":[114.1178,22.3242],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[114.6094,22.4121],[114.5215,22.1484],[114.3457,22.1484],[113.9063,22.1484],[113.8184,22.1924],[113.9063,22.4121],[114.1699,22.5439],[114.3457,22.5439],[114.4336,22.5439],[114.4336,22.4121],[114.6094,22.4121]]]}},{"type":"Feature","properties":{"id":"82","size":"27","name":"澳门","cp":[111.5547,22.1484],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[113.5986,22.1649],[113.6096,22.1265],[113.5547,22.11],[113.5437,22.2034],[113.5767,22.2034],[113.5986,22.1649]]]}}]} diff --git a/src/api/json/industry-data.json b/src/api/json/industry-data.json new file mode 100644 index 0000000..0d8baa8 --- /dev/null +++ b/src/api/json/industry-data.json @@ -0,0 +1 @@ +[{"value":1001,"label":"IT服务","children":[{"value":1001000,"label":"计算机软件/硬件/信息服务","children":[]},{"value":1001001,"label":"互联网和相关服务","children":[]},{"value":1001002,"label":"其他","children":[]}],"icon":""},{"value":1002,"label":"制造业","children":[{"value":1002000,"label":"机械/电子","children":[]},{"value":1003000,"label":"服装/纺织","children":[]},{"value":1002002,"label":"汽车","children":[]},{"value":1002005,"label":"金属制品","children":[]},{"value":1003002,"label":"食品/饮料","children":[]},{"value":1003003,"label":"家具/家纺","children":[]},{"value":1002001,"label":"重工制造","children":[]},{"value":1003005,"label":"家电/数码","children":[]},{"value":1002004,"label":"橡胶/塑料","children":[]},{"value":1003004,"label":"日用品/化妆品","children":[]},{"value":1002006,"label":"化学原料制品","children":[]},{"value":1003007,"label":"文教/工美/体育/娱乐用品","children":[]},{"value":1003006,"label":"烟酒/茶","children":[]},{"value":1002007,"label":"非金属矿物","children":[]},{"value":1002003,"label":"其他","children":[]}],"icon":""},{"value":1003,"label":"批发/零售","children":[{"value":1003008,"label":"批发","children":[]},{"value":1003010,"label":"零售","children":[]},{"value":1003001,"label":"超市/便利店/百货商场","children":[]},{"value":1003011,"label":"进出口","children":[]},{"value":1003009,"label":"其他","children":[]}],"icon":""},{"value":1004,"label":"生活服务","children":[{"value":1004001,"label":"餐饮","children":[]},{"value":1004004,"label":"居民服务","children":[]},{"value":1004002,"label":"租赁和商务服务","children":[]},{"value":1004000,"label":"酒店/住宿","children":[]},{"value":1004003,"label":"其他","children":[]}],"icon":""},{"value":1005,"label":"文化/体育/娱乐业","children":[{"value":1005001,"label":"文化/体育","children":[]},{"value":1005002,"label":"娱乐/旅游","children":[]},{"value":1005000,"label":"新闻传媒","children":[]},{"value":1005003,"label":"其他","children":[]}],"icon":""},{"value":1006,"label":"建筑/房地产","children":[{"value":1006001,"label":"建筑业","children":[]},{"value":1006002,"label":"建材装修","children":[]},{"value":1006000,"label":"房地产","children":[]},{"value":1006003,"label":"其他","children":[]}],"icon":""},{"value":1007,"label":"教育","children":[{"value":1007000,"label":"学前教育","children":[],"desc":"如:托儿所、幼儿园"},{"value":1007001,"label":"初中等教育","children":[],"desc":"如:小学、初中、高中、职高"},{"value":1007002,"label":"高等教育","children":[],"desc":"如:大学、高职、高专"},{"value":1007003,"label":"培训机构","children":[]},{"value":1007004,"label":"其他","children":[]}],"icon":""},{"value":1008,"label":"运输/物流/仓储","children":[{"value":1008003,"label":"物流/仓储","children":[]},{"value":1008000,"label":"道路/铁路运输","children":[]},{"value":1008004,"label":"邮政/快递","children":[]},{"value":1008001,"label":"航空运输","children":[]},{"value":1008002,"label":"水上运输","children":[]},{"value":1008005,"label":"其他","children":[]}],"icon":""},{"value":1009,"label":"医疗","children":[{"value":1009000,"label":"医院/医疗机构","children":[]},{"value":1009003,"label":"医疗器械","children":[]},{"value":1009001,"label":"医药制造","children":[]},{"value":1009002,"label":"医药流通","children":[]},{"value":1009004,"label":"其他","children":[]}],"icon":""},{"value":1010,"label":"政府","children":[{"value":1010000,"label":"党政机关","children":[]},{"value":1010001,"label":"国家权力/行政机构","children":[]},{"value":1010002,"label":"检察院/法院/公安","children":[]},{"value":1010003,"label":"民政/人社/交通/卫生","children":[]},{"value":1010004,"label":"发改委/经信委/商务局/统计局","children":[]},{"value":1010005,"label":"国土/规划","children":[]},{"value":1010006,"label":"税务/海关/工商/环保/物价/药品","children":[]},{"value":1010007,"label":"政协/民主党派","children":[]},{"value":1010008,"label":"地方政府","children":[]},{"value":1010009,"label":"其他","children":[]}],"icon":""},{"value":1011,"label":"金融","children":[{"value":1011000,"label":"保险","children":[]},{"value":1011001,"label":"银行","children":[]},{"value":1011002,"label":"证券/投资/基金","children":[]},{"value":1011003,"label":"其他","children":[]}],"icon":""},{"value":1012,"label":"能源/采矿","children":[{"value":1014003,"label":"电力/热力/燃气/水供应业","children":[]},{"value":1012003,"label":"石油/天然气","children":[]},{"value":1012002,"label":"煤炭","children":[]},{"value":1012001,"label":"有色金属","children":[]},{"value":1012000,"label":"钢铁","children":[]},{"value":1012004,"label":"其他","children":[]}],"icon":""},{"value":1013,"label":"农林渔牧","children":[{"value":1013000,"label":"农林渔牧","children":[]}],"icon":""},{"value":1014,"label":"其他行业","children":[{"value":1014000,"label":"科学研究和技术服务业","children":[]},{"value":1014002,"label":"社会组织","children":[]},{"value":1014001,"label":"水利和环境管理","children":[]},{"value":1014004,"label":"国际组织","children":[]},{"value":1014005,"label":"其他","children":[]}],"icon":""}] diff --git a/src/api/json/regions-data.json b/src/api/json/regions-data.json new file mode 100644 index 0000000..4cbd130 --- /dev/null +++ b/src/api/json/regions-data.json @@ -0,0 +1 @@ +[{"label":"北京","value":"110000","children":[{"value":"110100","label":"北京市","children":[{"value":"110101","label":"东城区"},{"value":"110102","label":"西城区"},{"value":"110103","label":"崇文区"},{"value":"110104","label":"宣武区"},{"value":"110105","label":"朝阳区"},{"value":"110106","label":"丰台区"},{"value":"110107","label":"石景山区"},{"value":"110108","label":"海淀区"},{"value":"110109","label":"门头沟区"},{"value":"110111","label":"房山区"},{"value":"110112","label":"通州区"},{"value":"110113","label":"顺义区"},{"value":"110114","label":"昌平区"},{"value":"110115","label":"大兴区"},{"value":"110116","label":"怀柔区"},{"value":"110117","label":"平谷区"},{"value":"110228","label":"密云县"},{"value":"110229","label":"延庆县"}]}]},{"label":"天津","value":"120000","children":[{"value":"120100","label":"天津市","children":[{"value":"120101","label":"和平区"},{"value":"120102","label":"河东区"},{"value":"120103","label":"河西区"},{"value":"120104","label":"南开区"},{"value":"120105","label":"河北区"},{"value":"120106","label":"红桥区"},{"value":"120107","label":"塘沽区"},{"value":"120108","label":"汉沽区"},{"value":"120109","label":"大港区"},{"value":"120110","label":"东丽区"},{"value":"120111","label":"西青区"},{"value":"120112","label":"津南区"},{"value":"120113","label":"北辰区"},{"value":"120114","label":"武清区"},{"value":"120115","label":"宝坻区"},{"value":"120116","label":"滨海新区"},{"value":"120221","label":"宁河县"},{"value":"120223","label":"静海县"},{"value":"120225","label":"蓟县"}]}]},{"label":"河北省","value":"130000","children":[{"value":"130100","label":"石家庄市","children":[{"value":"130102","label":"长安区"},{"value":"130103","label":"桥东区"},{"value":"130104","label":"桥西区"},{"value":"130105","label":"新华区"},{"value":"130107","label":"井陉矿区"},{"value":"130108","label":"裕华区"},{"value":"130121","label":"井陉县"},{"value":"130123","label":"正定县"},{"value":"130124","label":"栾城县"},{"value":"130125","label":"行唐县"},{"value":"130126","label":"灵寿县"},{"value":"130127","label":"高邑县"},{"value":"130128","label":"深泽县"},{"value":"130129","label":"赞皇县"},{"value":"130130","label":"无极县"},{"value":"130131","label":"平山县"},{"value":"130132","label":"元氏县"},{"value":"130133","label":"赵县"},{"value":"130181","label":"辛集市"},{"value":"130182","label":"藁城市"},{"value":"130183","label":"晋州市"},{"value":"130184","label":"新乐市"},{"value":"130185","label":"鹿泉市"}]},{"value":"130200","label":"唐山市","children":[{"value":"130202","label":"路南区"},{"value":"130203","label":"路北区"},{"value":"130204","label":"古冶区"},{"value":"130205","label":"开平区"},{"value":"130207","label":"丰南区"},{"value":"130208","label":"丰润区"},{"value":"130223","label":"滦县"},{"value":"130224","label":"滦南县"},{"value":"130225","label":"乐亭县"},{"value":"130227","label":"迁西县"},{"value":"130229","label":"玉田县"},{"value":"130230","label":"唐海县"},{"value":"130281","label":"遵化市"},{"value":"130283","label":"迁安市"}]},{"value":"130300","label":"秦皇岛市","children":[{"value":"130302","label":"海港区"},{"value":"130303","label":"山海关区"},{"value":"130304","label":"北戴河区"},{"value":"130321","label":"青龙满族自治县"},{"value":"130322","label":"昌黎县"},{"value":"130323","label":"抚宁县"},{"value":"130324","label":"卢龙县"},{"value":"130399","label":"经济技术开发区"}]},{"value":"130400","label":"邯郸市","children":[{"value":"130402","label":"邯山区"},{"value":"130403","label":"丛台区"},{"value":"130404","label":"复兴区"},{"value":"130406","label":"峰峰矿区"},{"value":"130421","label":"邯郸县"},{"value":"130423","label":"临漳县"},{"value":"130424","label":"成安县"},{"value":"130425","label":"大名县"},{"value":"130426","label":"涉县"},{"value":"130427","label":"磁县"},{"value":"130428","label":"肥乡县"},{"value":"130429","label":"永年县"},{"value":"130430","label":"邱县"},{"value":"130431","label":"鸡泽县"},{"value":"130432","label":"广平县"},{"value":"130433","label":"馆陶县"},{"value":"130434","label":"魏县"},{"value":"130435","label":"曲周县"},{"value":"130481","label":"武安市"}]},{"value":"130500","label":"邢台市","children":[{"value":"130502","label":"桥东区"},{"value":"130503","label":"桥西区"},{"value":"130521","label":"邢台县"},{"value":"130522","label":"临城县"},{"value":"130523","label":"内丘县"},{"value":"130524","label":"柏乡县"},{"value":"130525","label":"隆尧县"},{"value":"130526","label":"任县"},{"value":"130527","label":"南和县"},{"value":"130528","label":"宁晋县"},{"value":"130529","label":"巨鹿县"},{"value":"130530","label":"新河县"},{"value":"130531","label":"广宗县"},{"value":"130532","label":"平乡县"},{"value":"130533","label":"威县"},{"value":"130534","label":"清河县"},{"value":"130535","label":"临西县"},{"value":"130581","label":"南宫市"},{"value":"130582","label":"沙河市"}]},{"value":"130600","label":"保定市","children":[{"value":"130602","label":"新市区"},{"value":"130603","label":"北市区"},{"value":"130604","label":"南市区"},{"value":"130621","label":"满城县"},{"value":"130622","label":"清苑县"},{"value":"130623","label":"涞水县"},{"value":"130624","label":"阜平县"},{"value":"130625","label":"徐水县"},{"value":"130626","label":"定兴县"},{"value":"130627","label":"唐县"},{"value":"130628","label":"高阳县"},{"value":"130629","label":"容城县"},{"value":"130630","label":"涞源县"},{"value":"130631","label":"望都县"},{"value":"130632","label":"安新县"},{"value":"130633","label":"易县"},{"value":"130634","label":"曲阳县"},{"value":"130635","label":"蠡县"},{"value":"130636","label":"顺平县"},{"value":"130637","label":"博野县"},{"value":"130638","label":"雄县"},{"value":"130681","label":"涿州市"},{"value":"130682","label":"定州市"},{"value":"130683","label":"安国市"},{"value":"130684","label":"高碑店市"},{"value":"130698","label":"高开区"}]},{"value":"130700","label":"张家口市","children":[{"value":"130702","label":"桥东区"},{"value":"130703","label":"桥西区"},{"value":"130705","label":"宣化区"},{"value":"130706","label":"下花园区"},{"value":"130721","label":"宣化县"},{"value":"130722","label":"张北县"},{"value":"130723","label":"康保县"},{"value":"130724","label":"沽源县"},{"value":"130725","label":"尚义县"},{"value":"130726","label":"蔚县"},{"value":"130727","label":"阳原县"},{"value":"130728","label":"怀安县"},{"value":"130729","label":"万全县"},{"value":"130730","label":"怀来县"},{"value":"130731","label":"涿鹿县"},{"value":"130732","label":"赤城县"},{"value":"130733","label":"崇礼县"}]},{"value":"130800","label":"承德市","children":[{"value":"130802","label":"双桥区"},{"value":"130803","label":"双滦区"},{"value":"130804","label":"鹰手营子矿区"},{"value":"130821","label":"承德县"},{"value":"130822","label":"兴隆县"},{"value":"130823","label":"平泉县"},{"value":"130824","label":"滦平县"},{"value":"130825","label":"隆化县"},{"value":"130826","label":"丰宁满族自治县"},{"value":"130827","label":"宽城满族自治县"},{"value":"130828","label":"围场满族蒙古族自治县"}]},{"value":"130900","label":"沧州市","children":[{"value":"130902","label":"新华区"},{"value":"130903","label":"运河区"},{"value":"130921","label":"沧县"},{"value":"130922","label":"青县"},{"value":"130923","label":"东光县"},{"value":"130924","label":"海兴县"},{"value":"130925","label":"盐山县"},{"value":"130926","label":"肃宁县"},{"value":"130927","label":"南皮县"},{"value":"130928","label":"吴桥县"},{"value":"130929","label":"献县"},{"value":"130930","label":"孟村回族自治县"},{"value":"130981","label":"泊头市"},{"value":"130982","label":"任丘市"},{"value":"130983","label":"黄骅市"},{"value":"130984","label":"河间市"}]},{"value":"131000","label":"廊坊市","children":[{"value":"131002","label":"安次区"},{"value":"131003","label":"广阳区"},{"value":"131022","label":"固安县"},{"value":"131023","label":"永清县"},{"value":"131024","label":"香河县"},{"value":"131025","label":"大城县"},{"value":"131026","label":"文安县"},{"value":"131028","label":"大厂回族自治县"},{"value":"131051","label":"开发区"},{"value":"131052","label":"燕郊经济技术开发区"},{"value":"131081","label":"霸州市"},{"value":"131082","label":"三河市"}]},{"value":"131100","label":"衡水市","children":[{"value":"131102","label":"桃城区"},{"value":"131121","label":"枣强县"},{"value":"131122","label":"武邑县"},{"value":"131123","label":"武强县"},{"value":"131124","label":"饶阳县"},{"value":"131125","label":"安平县"},{"value":"131126","label":"故城县"},{"value":"131127","label":"景县"},{"value":"131128","label":"阜城县"},{"value":"131181","label":"冀州市"},{"value":"131182","label":"深州市"}]}]},{"label":"山西省","value":"140000","children":[{"value":"140100","label":"太原市","children":[{"value":"140105","label":"小店区"},{"value":"140106","label":"迎泽区"},{"value":"140107","label":"杏花岭区"},{"value":"140108","label":"尖草坪区"},{"value":"140109","label":"万柏林区"},{"value":"140110","label":"晋源区"},{"value":"140121","label":"清徐县"},{"value":"140122","label":"阳曲县"},{"value":"140123","label":"娄烦县"},{"value":"140181","label":"古交市"}]},{"value":"140200","label":"大同市","children":[{"value":"140202","label":"城区"},{"value":"140203","label":"矿区"},{"value":"140211","label":"南郊区"},{"value":"140212","label":"新荣区"},{"value":"140221","label":"阳高县"},{"value":"140222","label":"天镇县"},{"value":"140223","label":"广灵县"},{"value":"140224","label":"灵丘县"},{"value":"140225","label":"浑源县"},{"value":"140226","label":"左云县"},{"value":"140227","label":"大同县"}]},{"value":"140300","label":"阳泉市","children":[{"value":"140302","label":"城区"},{"value":"140303","label":"矿区"},{"value":"140311","label":"郊区"},{"value":"140321","label":"平定县"},{"value":"140322","label":"盂县"}]},{"value":"140400","label":"长治市","children":[{"value":"140421","label":"长治县"},{"value":"140423","label":"襄垣县"},{"value":"140424","label":"屯留县"},{"value":"140425","label":"平顺县"},{"value":"140426","label":"黎城县"},{"value":"140427","label":"壶关县"},{"value":"140428","label":"长子县"},{"value":"140429","label":"武乡县"},{"value":"140430","label":"沁县"},{"value":"140431","label":"沁源县"},{"value":"140481","label":"潞城市"},{"value":"140482","label":"城区"},{"value":"140483","label":"郊区"},{"value":"140484","label":"高新区"}]},{"value":"140500","label":"晋城市","children":[{"value":"140502","label":"城区"},{"value":"140521","label":"沁水县"},{"value":"140522","label":"阳城县"},{"value":"140524","label":"陵川县"},{"value":"140525","label":"泽州县"},{"value":"140581","label":"高平市"}]},{"value":"140600","label":"朔州市","children":[{"value":"140602","label":"朔城区"},{"value":"140603","label":"平鲁区"},{"value":"140621","label":"山阴县"},{"value":"140622","label":"应县"},{"value":"140623","label":"右玉县"},{"value":"140624","label":"怀仁县"}]},{"value":"140700","label":"晋中市","children":[{"value":"140702","label":"榆次区"},{"value":"140721","label":"榆社县"},{"value":"140722","label":"左权县"},{"value":"140723","label":"和顺县"},{"value":"140724","label":"昔阳县"},{"value":"140725","label":"寿阳县"},{"value":"140726","label":"太谷县"},{"value":"140727","label":"祁县"},{"value":"140728","label":"平遥县"},{"value":"140729","label":"灵石县"},{"value":"140781","label":"介休市"}]},{"value":"140800","label":"运城市","children":[{"value":"140802","label":"盐湖区"},{"value":"140821","label":"临猗县"},{"value":"140822","label":"万荣县"},{"value":"140823","label":"闻喜县"},{"value":"140824","label":"稷山县"},{"value":"140825","label":"新绛县"},{"value":"140826","label":"绛县"},{"value":"140827","label":"垣曲县"},{"value":"140828","label":"夏县"},{"value":"140829","label":"平陆县"},{"value":"140830","label":"芮城县"},{"value":"140881","label":"永济市"},{"value":"140882","label":"河津市"}]},{"value":"140900","label":"忻州市","children":[{"value":"140902","label":"忻府区"},{"value":"140921","label":"定襄县"},{"value":"140922","label":"五台县"},{"value":"140923","label":"代县"},{"value":"140924","label":"繁峙县"},{"value":"140925","label":"宁武县"},{"value":"140926","label":"静乐县"},{"value":"140927","label":"神池县"},{"value":"140928","label":"五寨县"},{"value":"140929","label":"岢岚县"},{"value":"140930","label":"河曲县"},{"value":"140931","label":"保德县"},{"value":"140932","label":"偏关县"},{"value":"140981","label":"原平市"}]},{"value":"141000","label":"临汾市","children":[{"value":"141002","label":"尧都区"},{"value":"141021","label":"曲沃县"},{"value":"141022","label":"翼城县"},{"value":"141023","label":"襄汾县"},{"value":"141024","label":"洪洞县"},{"value":"141025","label":"古县"},{"value":"141026","label":"安泽县"},{"value":"141027","label":"浮山县"},{"value":"141028","label":"吉县"},{"value":"141029","label":"乡宁县"},{"value":"141030","label":"大宁县"},{"value":"141031","label":"隰县"},{"value":"141032","label":"永和县"},{"value":"141033","label":"蒲县"},{"value":"141034","label":"汾西县"},{"value":"141081","label":"侯马市"},{"value":"141082","label":"霍州市"}]},{"value":"141100","label":"吕梁市","children":[{"value":"141102","label":"离石区"},{"value":"141121","label":"文水县"},{"value":"141122","label":"交城县"},{"value":"141123","label":"兴县"},{"value":"141124","label":"临县"},{"value":"141125","label":"柳林县"},{"value":"141126","label":"石楼县"},{"value":"141127","label":"岚县"},{"value":"141128","label":"方山县"},{"value":"141129","label":"中阳县"},{"value":"141130","label":"交口县"},{"value":"141181","label":"孝义市"},{"value":"141182","label":"汾阳市"}]}]},{"label":"内蒙古自治区","value":"150000","children":[{"value":"150100","label":"呼和浩特市","children":[{"value":"150102","label":"新城区"},{"value":"150103","label":"回民区"},{"value":"150104","label":"玉泉区"},{"value":"150105","label":"赛罕区"},{"value":"150121","label":"土默特左旗"},{"value":"150122","label":"托克托县"},{"value":"150123","label":"和林格尔县"},{"value":"150124","label":"清水河县"},{"value":"150125","label":"武川县"}]},{"value":"150200","label":"包头市","children":[{"value":"150202","label":"东河区"},{"value":"150203","label":"昆都仑区"},{"value":"150204","label":"青山区"},{"value":"150205","label":"石拐区"},{"value":"150206","label":"白云矿区"},{"value":"150207","label":"九原区"},{"value":"150221","label":"土默特右旗"},{"value":"150222","label":"固阳县"},{"value":"150223","label":"达尔罕茂明安联合旗"}]},{"value":"150300","label":"乌海市","children":[{"value":"150302","label":"海勃湾区"},{"value":"150303","label":"海南区"},{"value":"150304","label":"乌达区"}]},{"value":"150400","label":"赤峰市","children":[{"value":"150402","label":"红山区"},{"value":"150403","label":"元宝山区"},{"value":"150404","label":"松山区"},{"value":"150421","label":"阿鲁科尔沁旗"},{"value":"150422","label":"巴林左旗"},{"value":"150423","label":"巴林右旗"},{"value":"150424","label":"林西县"},{"value":"150425","label":"克什克腾旗"},{"value":"150426","label":"翁牛特旗"},{"value":"150428","label":"喀喇沁旗"},{"value":"150429","label":"宁城县"},{"value":"150430","label":"敖汉旗"}]},{"value":"150500","label":"通辽市","children":[{"value":"150502","label":"科尔沁区"},{"value":"150521","label":"科尔沁左翼中旗"},{"value":"150522","label":"科尔沁左翼后旗"},{"value":"150523","label":"开鲁县"},{"value":"150524","label":"库伦旗"},{"value":"150525","label":"奈曼旗"},{"value":"150526","label":"扎鲁特旗"},{"value":"150581","label":"霍林郭勒市"}]},{"value":"150600","label":"鄂尔多斯市","children":[{"value":"150602","label":"东胜区"},{"value":"150621","label":"达拉特旗"},{"value":"150622","label":"准格尔旗"},{"value":"150623","label":"鄂托克前旗"},{"value":"150624","label":"鄂托克旗"},{"value":"150625","label":"杭锦旗"},{"value":"150626","label":"乌审旗"},{"value":"150627","label":"伊金霍洛旗"}]},{"value":"150700","label":"呼伦贝尔市","children":[{"value":"150702","label":"海拉尔区"},{"value":"150721","label":"阿荣旗"},{"value":"150722","label":"莫力达瓦达斡尔族自治旗"},{"value":"150723","label":"鄂伦春自治旗"},{"value":"150724","label":"鄂温克族自治旗"},{"value":"150725","label":"陈巴尔虎旗"},{"value":"150726","label":"新巴尔虎左旗"},{"value":"150727","label":"新巴尔虎右旗"},{"value":"150781","label":"满洲里市"},{"value":"150782","label":"牙克石市"},{"value":"150783","label":"扎兰屯市"},{"value":"150784","label":"额尔古纳市"},{"value":"150785","label":"根河市"}]},{"value":"150800","label":"巴彦淖尔市","children":[{"value":"150802","label":"临河区"},{"value":"150821","label":"五原县"},{"value":"150822","label":"磴口县"},{"value":"150823","label":"乌拉特前旗"},{"value":"150824","label":"乌拉特中旗"},{"value":"150825","label":"乌拉特后旗"},{"value":"150826","label":"杭锦后旗"}]},{"value":"150900","label":"乌兰察布市","children":[{"value":"150902","label":"集宁区"},{"value":"150921","label":"卓资县"},{"value":"150922","label":"化德县"},{"value":"150923","label":"商都县"},{"value":"150924","label":"兴和县"},{"value":"150925","label":"凉城县"},{"value":"150926","label":"察哈尔右翼前旗"},{"value":"150927","label":"察哈尔右翼中旗"},{"value":"150928","label":"察哈尔右翼后旗"},{"value":"150929","label":"四子王旗"},{"value":"150981","label":"丰镇市"}]},{"value":"152200","label":"兴安盟","children":[{"value":"152201","label":"乌兰浩特市"},{"value":"152202","label":"阿尔山市"},{"value":"152221","label":"科尔沁右翼前旗"},{"value":"152222","label":"科尔沁右翼中旗"},{"value":"152223","label":"扎赉特旗"},{"value":"152224","label":"突泉县"}]},{"value":"152500","label":"锡林郭勒盟","children":[{"value":"152501","label":"二连浩特市"},{"value":"152502","label":"锡林浩特市"},{"value":"152522","label":"阿巴嘎旗"},{"value":"152523","label":"苏尼特左旗"},{"value":"152524","label":"苏尼特右旗"},{"value":"152525","label":"东乌珠穆沁旗"},{"value":"152526","label":"西乌珠穆沁旗"},{"value":"152527","label":"太仆寺旗"},{"value":"152528","label":"镶黄旗"},{"value":"152529","label":"正镶白旗"},{"value":"152530","label":"正蓝旗"},{"value":"152531","label":"多伦县"}]},{"value":"152900","label":"阿拉善盟","children":[{"value":"152921","label":"阿拉善左旗"},{"value":"152922","label":"阿拉善右旗"},{"value":"152923","label":"额济纳旗"}]}]},{"label":"辽宁省","value":"210000","children":[{"value":"210100","label":"沈阳市","children":[{"value":"210102","label":"和平区"},{"value":"210103","label":"沈河区"},{"value":"210104","label":"大东区"},{"value":"210105","label":"皇姑区"},{"value":"210106","label":"铁西区"},{"value":"210111","label":"苏家屯区"},{"value":"210112","label":"东陵区"},{"value":"210113","label":"新城子区"},{"value":"210114","label":"于洪区"},{"value":"210122","label":"辽中县"},{"value":"210123","label":"康平县"},{"value":"210124","label":"法库县"},{"value":"210181","label":"新民市"},{"value":"210182","label":"浑南新区"},{"value":"210183","label":"张士开发区"},{"value":"210184","label":"沈北新区"}]},{"value":"210200","label":"大连市","children":[{"value":"210202","label":"中山区"},{"value":"210203","label":"西岗区"},{"value":"210204","label":"沙河口区"},{"value":"210211","label":"甘井子区"},{"value":"210212","label":"旅顺口区"},{"value":"210213","label":"金州区"},{"value":"210224","label":"长海县"},{"value":"210251","label":"开发区"},{"value":"210281","label":"瓦房店市"},{"value":"210282","label":"普兰店市"},{"value":"210283","label":"庄河市"},{"value":"210297","label":"岭前区"}]},{"value":"210300","label":"鞍山市","children":[{"value":"210302","label":"铁东区"},{"value":"210303","label":"铁西区"},{"value":"210304","label":"立山区"},{"value":"210311","label":"千山区"},{"value":"210321","label":"台安县"},{"value":"210323","label":"岫岩满族自治县"},{"value":"210351","label":"高新区"},{"value":"210381","label":"海城市"}]},{"value":"210400","label":"抚顺市","children":[{"value":"210402","label":"新抚区"},{"value":"210403","label":"东洲区"},{"value":"210404","label":"望花区"},{"value":"210411","label":"顺城区"},{"value":"210421","label":"抚顺县"},{"value":"210422","label":"新宾满族自治县"},{"value":"210423","label":"清原满族自治县"}]},{"value":"210500","label":"本溪市","children":[{"value":"210502","label":"平山区"},{"value":"210503","label":"溪湖区"},{"value":"210504","label":"明山区"},{"value":"210505","label":"南芬区"},{"value":"210521","label":"本溪满族自治县"},{"value":"210522","label":"桓仁满族自治县"}]},{"value":"210600","label":"丹东市","children":[{"value":"210602","label":"元宝区"},{"value":"210603","label":"振兴区"},{"value":"210604","label":"振安区"},{"value":"210624","label":"宽甸满族自治县"},{"value":"210681","label":"东港市"},{"value":"210682","label":"凤城市"}]},{"value":"210700","label":"锦州市","children":[{"value":"210702","label":"古塔区"},{"value":"210703","label":"凌河区"},{"value":"210711","label":"太和区"},{"value":"210726","label":"黑山县"},{"value":"210727","label":"义县"},{"value":"210781","label":"凌海市"},{"value":"210782","label":"北镇市"}]},{"value":"210800","label":"营口市","children":[{"value":"210802","label":"站前区"},{"value":"210803","label":"西市区"},{"value":"210804","label":"鲅鱼圈区"},{"value":"210811","label":"老边区"},{"value":"210881","label":"盖州市"},{"value":"210882","label":"大石桥市"}]},{"value":"210900","label":"阜新市","children":[{"value":"210902","label":"海州区"},{"value":"210903","label":"新邱区"},{"value":"210904","label":"太平区"},{"value":"210905","label":"清河门区"},{"value":"210911","label":"细河区"},{"value":"210921","label":"阜新蒙古族自治县"},{"value":"210922","label":"彰武县"}]},{"value":"211000","label":"辽阳市","children":[{"value":"211002","label":"白塔区"},{"value":"211003","label":"文圣区"},{"value":"211004","label":"宏伟区"},{"value":"211005","label":"弓长岭区"},{"value":"211011","label":"太子河区"},{"value":"211021","label":"辽阳县"},{"value":"211081","label":"灯塔市"}]},{"value":"211100","label":"盘锦市","children":[{"value":"211102","label":"双台子区"},{"value":"211103","label":"兴隆台区"},{"value":"211121","label":"大洼县"},{"value":"211122","label":"盘山县"}]},{"value":"211200","label":"铁岭市","children":[{"value":"211202","label":"银州区"},{"value":"211204","label":"清河区"},{"value":"211221","label":"铁岭县"},{"value":"211223","label":"西丰县"},{"value":"211224","label":"昌图县"},{"value":"211281","label":"调兵山市"},{"value":"211282","label":"开原市"}]},{"value":"211300","label":"朝阳市","children":[{"value":"211302","label":"双塔区"},{"value":"211303","label":"龙城区"},{"value":"211321","label":"朝阳县"},{"value":"211322","label":"建平县"},{"value":"211324","label":"喀喇沁左翼蒙古族自治县"},{"value":"211381","label":"北票市"},{"value":"211382","label":"凌源市"}]},{"value":"211400","label":"葫芦岛市","children":[{"value":"211402","label":"连山区"},{"value":"211403","label":"龙港区"},{"value":"211404","label":"南票区"},{"value":"211421","label":"绥中县"},{"value":"211422","label":"建昌县"},{"value":"211481","label":"兴城市"}]}]},{"label":"吉林省","value":"220000","children":[{"value":"220100","label":"长春市","children":[{"value":"220102","label":"南关区"},{"value":"220103","label":"宽城区"},{"value":"220104","label":"朝阳区"},{"value":"220105","label":"二道区"},{"value":"220106","label":"绿园区"},{"value":"220112","label":"双阳区"},{"value":"220122","label":"农安县"},{"value":"220181","label":"九台市"},{"value":"220182","label":"榆树市"},{"value":"220183","label":"德惠市"},{"value":"220184","label":"高新技术产业开发区"},{"value":"220185","label":"汽车产业开发区"},{"value":"220186","label":"经济技术开发区"},{"value":"220187","label":"净月旅游开发区"}]},{"value":"220200","label":"吉林市","children":[{"value":"220202","label":"昌邑区"},{"value":"220203","label":"龙潭区"},{"value":"220204","label":"船营区"},{"value":"220211","label":"丰满区"},{"value":"220221","label":"永吉县"},{"value":"220281","label":"蛟河市"},{"value":"220282","label":"桦甸市"},{"value":"220283","label":"舒兰市"},{"value":"220284","label":"磐石市"}]},{"value":"220300","label":"四平市","children":[{"value":"220302","label":"铁西区"},{"value":"220303","label":"铁东区"},{"value":"220322","label":"梨树县"},{"value":"220323","label":"伊通满族自治县"},{"value":"220381","label":"公主岭市"},{"value":"220382","label":"双辽市"}]},{"value":"220400","label":"辽源市","children":[{"value":"220402","label":"龙山区"},{"value":"220403","label":"西安区"},{"value":"220421","label":"东丰县"},{"value":"220422","label":"东辽县"}]},{"value":"220500","label":"通化市","children":[{"value":"220502","label":"东昌区"},{"value":"220503","label":"二道江区"},{"value":"220521","label":"通化县"},{"value":"220523","label":"辉南县"},{"value":"220524","label":"柳河县"},{"value":"220581","label":"梅河口市"},{"value":"220582","label":"集安市"}]},{"value":"220600","label":"白山市","children":[{"value":"220602","label":"八道江区"},{"value":"220621","label":"抚松县"},{"value":"220622","label":"靖宇县"},{"value":"220623","label":"长白朝鲜族自治县"},{"value":"220625","label":"江源市"},{"value":"220681","label":"临江市"}]},{"value":"220700","label":"松原市","children":[{"value":"220702","label":"宁江区"},{"value":"220721","label":"前郭尔罗斯蒙古族自治县"},{"value":"220722","label":"长岭县"},{"value":"220723","label":"乾安县"},{"value":"220724","label":"扶余县"}]},{"value":"220800","label":"白城市","children":[{"value":"220802","label":"洮北区"},{"value":"220821","label":"镇赉县"},{"value":"220822","label":"通榆县"},{"value":"220881","label":"洮南市"},{"value":"220882","label":"大安市"}]},{"value":"222400","label":"延边朝鲜族自治州","children":[{"value":"222401","label":"延吉市"},{"value":"222402","label":"图们市"},{"value":"222403","label":"敦化市"},{"value":"222404","label":"珲春市"},{"value":"222405","label":"龙井市"},{"value":"222406","label":"和龙市"},{"value":"222424","label":"汪清县"},{"value":"222426","label":"安图县"}]}]},{"label":"黑龙江省","value":"230000","children":[{"value":"230100","label":"哈尔滨市","children":[{"value":"230102","label":"道里区"},{"value":"230103","label":"南岗区"},{"value":"230104","label":"道外区"},{"value":"230106","label":"香坊区"},{"value":"230107","label":"动力区"},{"value":"230108","label":"平房区"},{"value":"230109","label":"松北区"},{"value":"230111","label":"呼兰区"},{"value":"230123","label":"依兰县"},{"value":"230124","label":"方正县"},{"value":"230125","label":"宾县"},{"value":"230126","label":"巴彦县"},{"value":"230127","label":"木兰县"},{"value":"230128","label":"通河县"},{"value":"230129","label":"延寿县"},{"value":"230181","label":"阿城市"},{"value":"230182","label":"双城市"},{"value":"230183","label":"尚志市"},{"value":"230184","label":"五常市"},{"value":"230185","label":"阿城市"}]},{"value":"230200","label":"齐齐哈尔市","children":[{"value":"230202","label":"龙沙区"},{"value":"230203","label":"建华区"},{"value":"230204","label":"铁锋区"},{"value":"230205","label":"昂昂溪区"},{"value":"230206","label":"富拉尔基区"},{"value":"230207","label":"碾子山区"},{"value":"230208","label":"梅里斯达斡尔族区"},{"value":"230221","label":"龙江县"},{"value":"230223","label":"依安县"},{"value":"230224","label":"泰来县"},{"value":"230225","label":"甘南县"},{"value":"230227","label":"富裕县"},{"value":"230229","label":"克山县"},{"value":"230230","label":"克东县"},{"value":"230231","label":"拜泉县"},{"value":"230281","label":"讷河市"}]},{"value":"230300","label":"鸡西市","children":[{"value":"230302","label":"鸡冠区"},{"value":"230303","label":"恒山区"},{"value":"230304","label":"滴道区"},{"value":"230305","label":"梨树区"},{"value":"230306","label":"城子河区"},{"value":"230307","label":"麻山区"},{"value":"230321","label":"鸡东县"},{"value":"230381","label":"虎林市"},{"value":"230382","label":"密山市"}]},{"value":"230400","label":"鹤岗市","children":[{"value":"230402","label":"向阳区"},{"value":"230403","label":"工农区"},{"value":"230404","label":"南山区"},{"value":"230405","label":"兴安区"},{"value":"230406","label":"东山区"},{"value":"230407","label":"兴山区"},{"value":"230421","label":"萝北县"},{"value":"230422","label":"绥滨县"}]},{"value":"230500","label":"双鸭山市","children":[{"value":"230502","label":"尖山区"},{"value":"230503","label":"岭东区"},{"value":"230505","label":"四方台区"},{"value":"230506","label":"宝山区"},{"value":"230521","label":"集贤县"},{"value":"230522","label":"友谊县"},{"value":"230523","label":"宝清县"},{"value":"230524","label":"饶河县"}]},{"value":"230600","label":"大庆市","children":[{"value":"230602","label":"萨尔图区"},{"value":"230603","label":"龙凤区"},{"value":"230604","label":"让胡路区"},{"value":"230605","label":"红岗区"},{"value":"230606","label":"大同区"},{"value":"230621","label":"肇州县"},{"value":"230622","label":"肇源县"},{"value":"230623","label":"林甸县"},{"value":"230624","label":"杜尔伯特蒙古族自治县"}]},{"value":"230700","label":"伊春市","children":[{"value":"230702","label":"伊春区"},{"value":"230703","label":"南岔区"},{"value":"230704","label":"友好区"},{"value":"230705","label":"西林区"},{"value":"230706","label":"翠峦区"},{"value":"230707","label":"新青区"},{"value":"230708","label":"美溪区"},{"value":"230709","label":"金山屯区"},{"value":"230710","label":"五营区"},{"value":"230711","label":"乌马河区"},{"value":"230712","label":"汤旺河区"},{"value":"230713","label":"带岭区"},{"value":"230714","label":"乌伊岭区"},{"value":"230715","label":"红星区"},{"value":"230716","label":"上甘岭区"},{"value":"230722","label":"嘉荫县"},{"value":"230781","label":"铁力市"}]},{"value":"230800","label":"佳木斯市","children":[{"value":"230802","label":"永红区"},{"value":"230803","label":"向阳区"},{"value":"230804","label":"前进区"},{"value":"230805","label":"东风区"},{"value":"230811","label":"郊区"},{"value":"230822","label":"桦南县"},{"value":"230826","label":"桦川县"},{"value":"230828","label":"汤原县"},{"value":"230833","label":"抚远县"},{"value":"230881","label":"同江市"},{"value":"230882","label":"富锦市"}]},{"value":"230900","label":"七台河市","children":[{"value":"230902","label":"新兴区"},{"value":"230903","label":"桃山区"},{"value":"230904","label":"茄子河区"},{"value":"230921","label":"勃利县"}]},{"value":"231000","label":"牡丹江市","children":[{"value":"231002","label":"东安区"},{"value":"231003","label":"阳明区"},{"value":"231004","label":"爱民区"},{"value":"231005","label":"西安区"},{"value":"231024","label":"东宁县"},{"value":"231025","label":"林口县"},{"value":"231081","label":"绥芬河市"},{"value":"231083","label":"海林市"},{"value":"231084","label":"宁安市"},{"value":"231085","label":"穆棱市"}]},{"value":"231100","label":"黑河市","children":[{"value":"231102","label":"爱辉区"},{"value":"231121","label":"嫩江县"},{"value":"231123","label":"逊克县"},{"value":"231124","label":"孙吴县"},{"value":"231181","label":"北安市"},{"value":"231182","label":"五大连池市"}]},{"value":"231200","label":"绥化市","children":[{"value":"231202","label":"北林区"},{"value":"231221","label":"望奎县"},{"value":"231222","label":"兰西县"},{"value":"231223","label":"青冈县"},{"value":"231224","label":"庆安县"},{"value":"231225","label":"明水县"},{"value":"231226","label":"绥棱县"},{"value":"231281","label":"安达市"},{"value":"231282","label":"肇东市"},{"value":"231283","label":"海伦市"}]},{"value":"232700","label":"大兴安岭地区","children":[{"value":"232721","label":"呼玛县"},{"value":"232722","label":"塔河县"},{"value":"232723","label":"漠河县"},{"value":"232724","label":"加格达奇区"}]}]},{"label":"上海","value":"310000","children":[{"value":"310100","label":"上海市","children":[{"value":"310101","label":"黄浦区"},{"value":"310103","label":"卢湾区"},{"value":"310104","label":"徐汇区"},{"value":"310105","label":"长宁区"},{"value":"310106","label":"静安区"},{"value":"310107","label":"普陀区"},{"value":"310108","label":"闸北区"},{"value":"310109","label":"虹口区"},{"value":"310110","label":"杨浦区"},{"value":"310112","label":"闵行区"},{"value":"310113","label":"宝山区"},{"value":"310114","label":"嘉定区"},{"value":"310115","label":"浦东新区"},{"value":"310116","label":"金山区"},{"value":"310117","label":"松江区"},{"value":"310118","label":"青浦区"},{"value":"310119","label":"南汇区"},{"value":"310120","label":"奉贤区"},{"value":"310152","label":"川沙区"},{"value":"310230","label":"崇明县"}]}]},{"label":"江苏省","value":"320000","children":[{"value":"320100","label":"南京市","children":[{"value":"320102","label":"玄武区"},{"value":"320103","label":"白下区"},{"value":"320104","label":"秦淮区"},{"value":"320105","label":"建邺区"},{"value":"320106","label":"鼓楼区"},{"value":"320107","label":"下关区"},{"value":"320111","label":"浦口区"},{"value":"320113","label":"栖霞区"},{"value":"320114","label":"雨花台区"},{"value":"320115","label":"江宁区"},{"value":"320116","label":"六合区"},{"value":"320124","label":"溧水县"},{"value":"320125","label":"高淳县"}]},{"value":"320200","label":"无锡市","children":[{"value":"320202","label":"崇安区"},{"value":"320203","label":"南长区"},{"value":"320204","label":"北塘区"},{"value":"320205","label":"锡山区"},{"value":"320206","label":"惠山区"},{"value":"320211","label":"滨湖区"},{"value":"320281","label":"江阴市"},{"value":"320282","label":"宜兴市"},{"value":"320296","label":"新区"}]},{"value":"320300","label":"徐州市","children":[{"value":"320302","label":"鼓楼区"},{"value":"320303","label":"云龙区"},{"value":"320304","label":"九里区"},{"value":"320305","label":"贾汪区"},{"value":"320311","label":"泉山区"},{"value":"320321","label":"丰县"},{"value":"320322","label":"沛县"},{"value":"320323","label":"铜山县"},{"value":"320324","label":"睢宁县"},{"value":"320381","label":"新沂市"},{"value":"320382","label":"邳州市"}]},{"value":"320400","label":"常州市","children":[{"value":"320402","label":"天宁区"},{"value":"320404","label":"钟楼区"},{"value":"320405","label":"戚墅堰区"},{"value":"320411","label":"新北区"},{"value":"320412","label":"武进区"},{"value":"320481","label":"溧阳市"},{"value":"320482","label":"金坛市"}]},{"value":"320500","label":"苏州市","children":[{"value":"320502","label":"沧浪区"},{"value":"320503","label":"平江区"},{"value":"320504","label":"金阊区"},{"value":"320505","label":"虎丘区"},{"value":"320506","label":"吴中区"},{"value":"320507","label":"相城区"},{"value":"320581","label":"常熟市"},{"value":"320582","label":"张家港市"},{"value":"320583","label":"昆山市"},{"value":"320584","label":"吴江市"},{"value":"320585","label":"太仓市"},{"value":"320594","label":"新区"},{"value":"320595","label":"园区"}]},{"value":"320600","label":"南通市","children":[{"value":"320602","label":"崇川区"},{"value":"320611","label":"港闸区"},{"value":"320612","label":"通州区"},{"value":"320621","label":"海安县"},{"value":"320623","label":"如东县"},{"value":"320681","label":"启东市"},{"value":"320682","label":"如皋市"},{"value":"320683","label":"通州市"},{"value":"320684","label":"海门市"},{"value":"320693","label":"开发区"}]},{"value":"320700","label":"连云港市","children":[{"value":"320703","label":"连云区"},{"value":"320705","label":"新浦区"},{"value":"320706","label":"海州区"},{"value":"320721","label":"赣榆县"},{"value":"320722","label":"东海县"},{"value":"320723","label":"灌云县"},{"value":"320724","label":"灌南县"}]},{"value":"320800","label":"淮安市","children":[{"value":"320802","label":"清河区"},{"value":"320803","label":"楚州区"},{"value":"320804","label":"淮阴区"},{"value":"320811","label":"清浦区"},{"value":"320826","label":"涟水县"},{"value":"320829","label":"洪泽县"},{"value":"320830","label":"盱眙县"},{"value":"320831","label":"金湖县"}]},{"value":"320900","label":"盐城市","children":[{"value":"320902","label":"亭湖区"},{"value":"320903","label":"盐都区"},{"value":"320921","label":"响水县"},{"value":"320922","label":"滨海县"},{"value":"320923","label":"阜宁县"},{"value":"320924","label":"射阳县"},{"value":"320925","label":"建湖县"},{"value":"320981","label":"东台市"},{"value":"320982","label":"大丰市"}]},{"value":"321000","label":"扬州市","children":[{"value":"321002","label":"广陵区"},{"value":"321003","label":"邗江区"},{"value":"321011","label":"维扬区"},{"value":"321023","label":"宝应县"},{"value":"321081","label":"仪征市"},{"value":"321084","label":"高邮市"},{"value":"321088","label":"江都市"},{"value":"321092","label":"经济开发区"}]},{"value":"321100","label":"镇江市","children":[{"value":"321102","label":"京口区"},{"value":"321111","label":"润州区"},{"value":"321112","label":"丹徒区"},{"value":"321181","label":"丹阳市"},{"value":"321182","label":"扬中市"},{"value":"321183","label":"句容市"}]},{"value":"321200","label":"泰州市","children":[{"value":"321202","label":"海陵区"},{"value":"321203","label":"高港区"},{"value":"321281","label":"兴化市"},{"value":"321282","label":"靖江市"},{"value":"321283","label":"泰兴市"},{"value":"321284","label":"姜堰市"}]},{"value":"321300","label":"宿迁市","children":[{"value":"321302","label":"宿城区"},{"value":"321311","label":"宿豫区"},{"value":"321322","label":"沭阳县"},{"value":"321323","label":"泗阳县"},{"value":"321324","label":"泗洪县"}]}]},{"label":"浙江省","value":"330000","children":[{"value":"330100","label":"杭州市","children":[{"value":"330102","label":"上城区"},{"value":"330103","label":"下城区"},{"value":"330104","label":"江干区"},{"value":"330105","label":"拱墅区"},{"value":"330106","label":"西湖区"},{"value":"330108","label":"滨江区"},{"value":"330109","label":"萧山区"},{"value":"330110","label":"余杭区"},{"value":"330122","label":"桐庐县"},{"value":"330127","label":"淳安县"},{"value":"330182","label":"建德市"},{"value":"330183","label":"富阳市"},{"value":"330185","label":"临安市"}]},{"value":"330200","label":"宁波市","children":[{"value":"330203","label":"海曙区"},{"value":"330204","label":"江东区"},{"value":"330205","label":"江北区"},{"value":"330206","label":"北仑区"},{"value":"330211","label":"镇海区"},{"value":"330212","label":"鄞州区"},{"value":"330225","label":"象山县"},{"value":"330226","label":"宁海县"},{"value":"330281","label":"余姚市"},{"value":"330282","label":"慈溪市"},{"value":"330283","label":"奉化市"}]},{"value":"330300","label":"温州市","children":[{"value":"330302","label":"鹿城区"},{"value":"330303","label":"龙湾区"},{"value":"330304","label":"瓯海区"},{"value":"330322","label":"洞头县"},{"value":"330324","label":"永嘉县"},{"value":"330326","label":"平阳县"},{"value":"330327","label":"苍南县"},{"value":"330328","label":"文成县"},{"value":"330329","label":"泰顺县"},{"value":"330381","label":"瑞安市"},{"value":"330382","label":"乐清市"}]},{"value":"330400","label":"嘉兴市","children":[{"value":"330402","label":"南湖区"},{"value":"330411","label":"秀洲区"},{"value":"330421","label":"嘉善县"},{"value":"330424","label":"海盐县"},{"value":"330481","label":"海宁市"},{"value":"330482","label":"平湖市"},{"value":"330483","label":"桐乡市"}]},{"value":"330500","label":"湖州市","children":[{"value":"330502","label":"吴兴区"},{"value":"330503","label":"南浔区"},{"value":"330521","label":"德清县"},{"value":"330522","label":"长兴县"},{"value":"330523","label":"安吉县"}]},{"value":"330600","label":"绍兴市","children":[{"value":"330602","label":"越城区"},{"value":"330621","label":"绍兴县"},{"value":"330624","label":"新昌县"},{"value":"330681","label":"诸暨市"},{"value":"330682","label":"上虞市"},{"value":"330683","label":"嵊州市"}]},{"value":"330700","label":"金华市","children":[{"value":"330702","label":"婺城区"},{"value":"330703","label":"金东区"},{"value":"330723","label":"武义县"},{"value":"330726","label":"浦江县"},{"value":"330727","label":"磐安县"},{"value":"330781","label":"兰溪市"},{"value":"330782","label":"义乌市"},{"value":"330783","label":"东阳市"},{"value":"330784","label":"永康市"}]},{"value":"330800","label":"衢州市","children":[{"value":"330802","label":"柯城区"},{"value":"330803","label":"衢江区"},{"value":"330822","label":"常山县"},{"value":"330824","label":"开化县"},{"value":"330825","label":"龙游县"},{"value":"330881","label":"江山市"}]},{"value":"330900","label":"舟山市","children":[{"value":"330902","label":"定海区"},{"value":"330903","label":"普陀区"},{"value":"330921","label":"岱山县"},{"value":"330922","label":"嵊泗县"}]},{"value":"331000","label":"台州市","children":[{"value":"331002","label":"椒江区"},{"value":"331003","label":"黄岩区"},{"value":"331004","label":"路桥区"},{"value":"331021","label":"玉环县"},{"value":"331022","label":"三门县"},{"value":"331023","label":"天台县"},{"value":"331024","label":"仙居县"},{"value":"331081","label":"温岭市"},{"value":"331082","label":"临海市"}]},{"value":"331100","label":"丽水市","children":[{"value":"331102","label":"莲都区"},{"value":"331121","label":"青田县"},{"value":"331122","label":"缙云县"},{"value":"331123","label":"遂昌县"},{"value":"331124","label":"松阳县"},{"value":"331125","label":"云和县"},{"value":"331126","label":"庆元县"},{"value":"331127","label":"景宁畲族自治县"},{"value":"331181","label":"龙泉市"}]}]},{"label":"安徽省","value":"340000","children":[{"value":"340100","label":"合肥市","children":[{"value":"340102","label":"瑶海区"},{"value":"340103","label":"庐阳区"},{"value":"340104","label":"蜀山区"},{"value":"340111","label":"包河区"},{"value":"340121","label":"长丰县"},{"value":"340122","label":"肥东县"},{"value":"340123","label":"肥西县"},{"value":"340151","label":"高新区"},{"value":"340191","label":"中区"},{"value":"341400","label":"巢湖市"},{"value":"341402","label":"居巢区"},{"value":"341421","label":"庐江县"}]},{"value":"340200","label":"芜湖市","children":[{"value":"340202","label":"镜湖区"},{"value":"340203","label":"弋江区"},{"value":"340207","label":"鸠江区"},{"value":"340208","label":"三山区"},{"value":"340221","label":"芜湖县"},{"value":"340222","label":"繁昌县"},{"value":"340223","label":"南陵县"},{"value":"341422","label":"无为县"}]},{"value":"340300","label":"蚌埠市","children":[{"value":"340302","label":"龙子湖区"},{"value":"340303","label":"蚌山区"},{"value":"340304","label":"禹会区"},{"value":"340311","label":"淮上区"},{"value":"340321","label":"怀远县"},{"value":"340322","label":"五河县"},{"value":"340323","label":"固镇县"}]},{"value":"340400","label":"淮南市","children":[{"value":"340402","label":"大通区"},{"value":"340403","label":"田家庵区"},{"value":"340404","label":"谢家集区"},{"value":"340405","label":"八公山区"},{"value":"340406","label":"潘集区"},{"value":"340421","label":"凤台县"}]},{"value":"340500","label":"马鞍山市","children":[{"value":"340502","label":"金家庄区"},{"value":"340503","label":"花山区"},{"value":"340504","label":"雨山区"},{"value":"340521","label":"当涂县"},{"value":"341423","label":"含山县"},{"value":"341424","label":"和县"}]},{"value":"340600","label":"淮北市","children":[{"value":"340602","label":"杜集区"},{"value":"340603","label":"相山区"},{"value":"340604","label":"烈山区"},{"value":"340621","label":"濉溪县"}]},{"value":"340700","label":"铜陵市","children":[{"value":"340702","label":"铜官山区"},{"value":"340703","label":"狮子山区"},{"value":"340711","label":"郊区"},{"value":"340721","label":"铜陵县"}]},{"value":"340800","label":"安庆市","children":[{"value":"340802","label":"迎江区"},{"value":"340803","label":"大观区"},{"value":"340811","label":"宜秀区"},{"value":"340822","label":"怀宁县"},{"value":"340823","label":"枞阳县"},{"value":"340824","label":"潜山县"},{"value":"340825","label":"太湖县"},{"value":"340826","label":"宿松县"},{"value":"340827","label":"望江县"},{"value":"340828","label":"岳西县"},{"value":"340881","label":"桐城市"}]},{"value":"341000","label":"黄山市","children":[{"value":"341002","label":"屯溪区"},{"value":"341003","label":"黄山区"},{"value":"341004","label":"徽州区"},{"value":"341021","label":"歙县"},{"value":"341022","label":"休宁县"},{"value":"341023","label":"黟县"},{"value":"341024","label":"祁门县"}]},{"value":"341100","label":"滁州市","children":[{"value":"341102","label":"琅琊区"},{"value":"341103","label":"南谯区"},{"value":"341122","label":"来安县"},{"value":"341124","label":"全椒县"},{"value":"341125","label":"定远县"},{"value":"341126","label":"凤阳县"},{"value":"341181","label":"天长市"},{"value":"341182","label":"明光市"}]},{"value":"341200","label":"阜阳市","children":[{"value":"341202","label":"颍州区"},{"value":"341203","label":"颍东区"},{"value":"341204","label":"颍泉区"},{"value":"341221","label":"临泉县"},{"value":"341222","label":"太和县"},{"value":"341225","label":"阜南县"},{"value":"341226","label":"颍上县"},{"value":"341282","label":"界首市"}]},{"value":"341300","label":"宿州市","children":[{"value":"341302","label":"埇桥区"},{"value":"341321","label":"砀山县"},{"value":"341322","label":"萧县"},{"value":"341323","label":"灵璧县"},{"value":"341324","label":"泗县"}]},{"value":"341500","label":"六安市","children":[{"value":"341502","label":"金安区"},{"value":"341503","label":"裕安区"},{"value":"341521","label":"寿县"},{"value":"341522","label":"霍邱县"},{"value":"341523","label":"舒城县"},{"value":"341524","label":"金寨县"},{"value":"341525","label":"霍山县"}]},{"value":"341600","label":"亳州市","children":[{"value":"341602","label":"谯城区"},{"value":"341621","label":"涡阳县"},{"value":"341622","label":"蒙城县"},{"value":"341623","label":"利辛县"}]},{"value":"341700","label":"池州市","children":[{"value":"341702","label":"贵池区"},{"value":"341721","label":"东至县"},{"value":"341722","label":"石台县"},{"value":"341723","label":"青阳县"}]},{"value":"341800","label":"宣城市","children":[{"value":"341802","label":"宣州区"},{"value":"341821","label":"郎溪县"},{"value":"341822","label":"广德县"},{"value":"341823","label":"泾县"},{"value":"341824","label":"绩溪县"},{"value":"341825","label":"旌德县"},{"value":"341881","label":"宁国市"}]}]},{"label":"福建省","value":"350000","children":[{"value":"350100","label":"福州市","children":[{"value":"350102","label":"鼓楼区"},{"value":"350103","label":"台江区"},{"value":"350104","label":"仓山区"},{"value":"350105","label":"马尾区"},{"value":"350111","label":"晋安区"},{"value":"350121","label":"闽侯县"},{"value":"350122","label":"连江县"},{"value":"350123","label":"罗源县"},{"value":"350124","label":"闽清县"},{"value":"350125","label":"永泰县"},{"value":"350128","label":"平潭县"},{"value":"350181","label":"福清市"},{"value":"350182","label":"长乐市"}]},{"value":"350200","label":"厦门市","children":[{"value":"350203","label":"思明区"},{"value":"350205","label":"海沧区"},{"value":"350206","label":"湖里区"},{"value":"350211","label":"集美区"},{"value":"350212","label":"同安区"},{"value":"350213","label":"翔安区"}]},{"value":"350300","label":"莆田市","children":[{"value":"350302","label":"城厢区"},{"value":"350303","label":"涵江区"},{"value":"350304","label":"荔城区"},{"value":"350305","label":"秀屿区"},{"value":"350322","label":"仙游县"}]},{"value":"350400","label":"三明市","children":[{"value":"350402","label":"梅列区"},{"value":"350403","label":"三元区"},{"value":"350421","label":"明溪县"},{"value":"350423","label":"清流县"},{"value":"350424","label":"宁化县"},{"value":"350425","label":"大田县"},{"value":"350426","label":"尤溪县"},{"value":"350427","label":"沙县"},{"value":"350428","label":"将乐县"},{"value":"350429","label":"泰宁县"},{"value":"350430","label":"建宁县"},{"value":"350481","label":"永安市"}]},{"value":"350500","label":"泉州市","children":[{"value":"350502","label":"鲤城区"},{"value":"350503","label":"丰泽区"},{"value":"350504","label":"洛江区"},{"value":"350505","label":"泉港区"},{"value":"350521","label":"惠安县"},{"value":"350524","label":"安溪县"},{"value":"350525","label":"永春县"},{"value":"350526","label":"德化县"},{"value":"350527","label":"金门县"},{"value":"350581","label":"石狮市"},{"value":"350582","label":"晋江市"},{"value":"350583","label":"南安市"}]},{"value":"350600","label":"漳州市","children":[{"value":"350602","label":"芗城区"},{"value":"350603","label":"龙文区"},{"value":"350622","label":"云霄县"},{"value":"350623","label":"漳浦县"},{"value":"350624","label":"诏安县"},{"value":"350625","label":"长泰县"},{"value":"350626","label":"东山县"},{"value":"350627","label":"南靖县"},{"value":"350628","label":"平和县"},{"value":"350629","label":"华安县"},{"value":"350681","label":"龙海市"}]},{"value":"350700","label":"南平市","children":[{"value":"350702","label":"延平区"},{"value":"350721","label":"顺昌县"},{"value":"350722","label":"浦城县"},{"value":"350723","label":"光泽县"},{"value":"350724","label":"松溪县"},{"value":"350725","label":"政和县"},{"value":"350781","label":"邵武市"},{"value":"350782","label":"武夷山市"},{"value":"350783","label":"建瓯市"},{"value":"350784","label":"建阳市"}]},{"value":"350800","label":"龙岩市","children":[{"value":"350802","label":"新罗区"},{"value":"350821","label":"长汀县"},{"value":"350822","label":"永定县"},{"value":"350823","label":"上杭县"},{"value":"350824","label":"武平县"},{"value":"350825","label":"连城县"},{"value":"350881","label":"漳平市"}]},{"value":"350900","label":"宁德市","children":[{"value":"350902","label":"蕉城区"},{"value":"350921","label":"霞浦县"},{"value":"350922","label":"古田县"},{"value":"350923","label":"屏南县"},{"value":"350924","label":"寿宁县"},{"value":"350925","label":"周宁县"},{"value":"350926","label":"柘荣县"},{"value":"350981","label":"福安市"},{"value":"350982","label":"福鼎市"}]}]},{"label":"江西省","value":"360000","children":[{"value":"360100","label":"南昌市","children":[{"value":"360102","label":"东湖区"},{"value":"360103","label":"西湖区"},{"value":"360104","label":"青云谱区"},{"value":"360105","label":"湾里区"},{"value":"360111","label":"青山湖区"},{"value":"360121","label":"南昌县"},{"value":"360122","label":"新建县"},{"value":"360123","label":"安义县"},{"value":"360124","label":"进贤县"},{"value":"360125","label":"红谷滩新区"},{"value":"360126","label":"经济技术开发区"},{"value":"360127","label":"昌北区"}]},{"value":"360200","label":"景德镇市","children":[{"value":"360202","label":"昌江区"},{"value":"360203","label":"珠山区"},{"value":"360222","label":"浮梁县"},{"value":"360281","label":"乐平市"}]},{"value":"360300","label":"萍乡市","children":[{"value":"360302","label":"安源区"},{"value":"360313","label":"湘东区"},{"value":"360321","label":"莲花县"},{"value":"360322","label":"上栗县"},{"value":"360323","label":"芦溪县"}]},{"value":"360400","label":"九江市","children":[{"value":"360402","label":"庐山区"},{"value":"360403","label":"浔阳区"},{"value":"360421","label":"九江县"},{"value":"360423","label":"武宁县"},{"value":"360424","label":"修水县"},{"value":"360425","label":"永修县"},{"value":"360426","label":"德安县"},{"value":"360427","label":"星子县"},{"value":"360428","label":"都昌县"},{"value":"360429","label":"湖口县"},{"value":"360430","label":"彭泽县"},{"value":"360481","label":"瑞昌市"}]},{"value":"360500","label":"新余市","children":[{"value":"360502","label":"渝水区"},{"value":"360521","label":"分宜县"}]},{"value":"360600","label":"鹰潭市","children":[{"value":"360602","label":"月湖区"},{"value":"360622","label":"余江县"},{"value":"360681","label":"贵溪市"}]},{"value":"360700","label":"赣州市","children":[{"value":"360702","label":"章贡区"},{"value":"360721","label":"赣县"},{"value":"360722","label":"信丰县"},{"value":"360723","label":"大余县"},{"value":"360724","label":"上犹县"},{"value":"360725","label":"崇义县"},{"value":"360726","label":"安远县"},{"value":"360727","label":"龙南县"},{"value":"360728","label":"定南县"},{"value":"360729","label":"全南县"},{"value":"360730","label":"宁都县"},{"value":"360731","label":"于都县"},{"value":"360732","label":"兴国县"},{"value":"360733","label":"会昌县"},{"value":"360734","label":"寻乌县"},{"value":"360735","label":"石城县"},{"value":"360751","label":"黄金区"},{"value":"360781","label":"瑞金市"},{"value":"360782","label":"南康市"}]},{"value":"360800","label":"吉安市","children":[{"value":"360802","label":"吉州区"},{"value":"360803","label":"青原区"},{"value":"360821","label":"吉安县"},{"value":"360822","label":"吉水县"},{"value":"360823","label":"峡江县"},{"value":"360824","label":"新干县"},{"value":"360825","label":"永丰县"},{"value":"360826","label":"泰和县"},{"value":"360827","label":"遂川县"},{"value":"360828","label":"万安县"},{"value":"360829","label":"安福县"},{"value":"360830","label":"永新县"},{"value":"360881","label":"井冈山市"}]},{"value":"360900","label":"宜春市","children":[{"value":"360902","label":"袁州区"},{"value":"360921","label":"奉新县"},{"value":"360922","label":"万载县"},{"value":"360923","label":"上高县"},{"value":"360924","label":"宜丰县"},{"value":"360925","label":"靖安县"},{"value":"360926","label":"铜鼓县"},{"value":"360981","label":"丰城市"},{"value":"360982","label":"樟树市"},{"value":"360983","label":"高安市"}]},{"value":"361000","label":"抚州市","children":[{"value":"361002","label":"临川区"},{"value":"361021","label":"南城县"},{"value":"361022","label":"黎川县"},{"value":"361023","label":"南丰县"},{"value":"361024","label":"崇仁县"},{"value":"361025","label":"乐安县"},{"value":"361026","label":"宜黄县"},{"value":"361027","label":"金溪县"},{"value":"361028","label":"资溪县"},{"value":"361029","label":"东乡县"},{"value":"361030","label":"广昌县"}]},{"value":"361100","label":"上饶市","children":[{"value":"361102","label":"信州区"},{"value":"361121","label":"上饶县"},{"value":"361122","label":"广丰县"},{"value":"361123","label":"玉山县"},{"value":"361124","label":"铅山县"},{"value":"361125","label":"横峰县"},{"value":"361126","label":"弋阳县"},{"value":"361127","label":"余干县"},{"value":"361128","label":"鄱阳县"},{"value":"361129","label":"万年县"},{"value":"361130","label":"婺源县"},{"value":"361181","label":"德兴市"}]}]},{"label":"山东省","value":"370000","children":[{"value":"370100","label":"济南市","children":[{"value":"370102","label":"历下区"},{"value":"370103","label":"市中区"},{"value":"370104","label":"槐荫区"},{"value":"370105","label":"天桥区"},{"value":"370112","label":"历城区"},{"value":"370113","label":"长清区"},{"value":"370124","label":"平阴县"},{"value":"370125","label":"济阳县"},{"value":"370126","label":"商河县"},{"value":"370181","label":"章丘市"}]},{"value":"370200","label":"青岛市","children":[{"value":"370202","label":"市南区"},{"value":"370203","label":"市北区"},{"value":"370205","label":"四方区"},{"value":"370211","label":"黄岛区"},{"value":"370212","label":"崂山区"},{"value":"370213","label":"李沧区"},{"value":"370214","label":"城阳区"},{"value":"370251","label":"开发区"},{"value":"370281","label":"胶州市"},{"value":"370282","label":"即墨市"},{"value":"370283","label":"平度市"},{"value":"370284","label":"胶南市"},{"value":"370285","label":"莱西市"}]},{"value":"370300","label":"淄博市","children":[{"value":"370302","label":"淄川区"},{"value":"370303","label":"张店区"},{"value":"370304","label":"博山区"},{"value":"370305","label":"临淄区"},{"value":"370306","label":"周村区"},{"value":"370321","label":"桓台县"},{"value":"370322","label":"高青县"},{"value":"370323","label":"沂源县"}]},{"value":"370400","label":"枣庄市","children":[{"value":"370402","label":"市中区"},{"value":"370403","label":"薛城区"},{"value":"370404","label":"峄城区"},{"value":"370405","label":"台儿庄区"},{"value":"370406","label":"山亭区"},{"value":"370481","label":"滕州市"}]},{"value":"370500","label":"东营市","children":[{"value":"370502","label":"东营区"},{"value":"370503","label":"河口区"},{"value":"370521","label":"垦利县"},{"value":"370522","label":"利津县"},{"value":"370523","label":"广饶县"},{"value":"370589","label":"西城区"},{"value":"370590","label":"东城区"}]},{"value":"370600","label":"烟台市","children":[{"value":"370602","label":"芝罘区"},{"value":"370611","label":"福山区"},{"value":"370612","label":"牟平区"},{"value":"370613","label":"莱山区"},{"value":"370634","label":"长岛县"},{"value":"370681","label":"龙口市"},{"value":"370682","label":"莱阳市"},{"value":"370683","label":"莱州市"},{"value":"370684","label":"蓬莱市"},{"value":"370685","label":"招远市"},{"value":"370686","label":"栖霞市"},{"value":"370687","label":"海阳市"}]},{"value":"370700","label":"潍坊市","children":[{"value":"370702","label":"潍城区"},{"value":"370703","label":"寒亭区"},{"value":"370704","label":"坊子区"},{"value":"370705","label":"奎文区"},{"value":"370724","label":"临朐县"},{"value":"370725","label":"昌乐县"},{"value":"370751","label":"开发区"},{"value":"370781","label":"青州市"},{"value":"370782","label":"诸城市"},{"value":"370783","label":"寿光市"},{"value":"370784","label":"安丘市"},{"value":"370785","label":"高密市"},{"value":"370786","label":"昌邑市"}]},{"value":"370800","label":"济宁市","children":[{"value":"370802","label":"市中区"},{"value":"370811","label":"任城区"},{"value":"370826","label":"微山县"},{"value":"370827","label":"鱼台县"},{"value":"370828","label":"金乡县"},{"value":"370829","label":"嘉祥县"},{"value":"370830","label":"汶上县"},{"value":"370831","label":"泗水县"},{"value":"370832","label":"梁山县"},{"value":"370881","label":"曲阜市"},{"value":"370882","label":"兖州市"},{"value":"370883","label":"邹城市"}]},{"value":"370900","label":"泰安市","children":[{"value":"370902","label":"泰山区"},{"value":"370903","label":"岱岳区"},{"value":"370921","label":"宁阳县"},{"value":"370923","label":"东平县"},{"value":"370982","label":"新泰市"},{"value":"370983","label":"肥城市"}]},{"value":"371000","label":"威海市","children":[{"value":"371002","label":"环翠区"},{"value":"371081","label":"文登市"},{"value":"371082","label":"荣成市"},{"value":"371083","label":"乳山市"}]},{"value":"371100","label":"日照市","children":[{"value":"371102","label":"东港区"},{"value":"371103","label":"岚山区"},{"value":"371121","label":"五莲县"},{"value":"371122","label":"莒县"}]},{"value":"371200","label":"莱芜市","children":[{"value":"371202","label":"莱城区"},{"value":"371203","label":"钢城区"}]},{"value":"371300","label":"临沂市","children":[{"value":"371302","label":"兰山区"},{"value":"371311","label":"罗庄区"},{"value":"371312","label":"河东区"},{"value":"371321","label":"沂南县"},{"value":"371322","label":"郯城县"},{"value":"371323","label":"沂水县"},{"value":"371324","label":"苍山县"},{"value":"371325","label":"费县"},{"value":"371326","label":"平邑县"},{"value":"371327","label":"莒南县"},{"value":"371328","label":"蒙阴县"},{"value":"371329","label":"临沭县"}]},{"value":"371400","label":"德州市","children":[{"value":"371402","label":"德城区"},{"value":"371421","label":"陵县"},{"value":"371422","label":"宁津县"},{"value":"371423","label":"庆云县"},{"value":"371424","label":"临邑县"},{"value":"371425","label":"齐河县"},{"value":"371426","label":"平原县"},{"value":"371427","label":"夏津县"},{"value":"371428","label":"武城县"},{"value":"371451","label":"开发区"},{"value":"371481","label":"乐陵市"},{"value":"371482","label":"禹城市"}]},{"value":"371500","label":"聊城市","children":[{"value":"371502","label":"东昌府区"},{"value":"371521","label":"阳谷县"},{"value":"371522","label":"莘县"},{"value":"371523","label":"茌平县"},{"value":"371524","label":"东阿县"},{"value":"371525","label":"冠县"},{"value":"371526","label":"高唐县"},{"value":"371581","label":"临清市"}]},{"value":"371600","label":"滨州市","children":[{"value":"371602","label":"滨城区"},{"value":"371621","label":"惠民县"},{"value":"371622","label":"阳信县"},{"value":"371623","label":"无棣县"},{"value":"371624","label":"沾化县"},{"value":"371625","label":"博兴县"},{"value":"371626","label":"邹平县"}]},{"value":"371700","label":"菏泽市","children":[{"value":"371702","label":"牡丹区"},{"value":"371721","label":"曹县"},{"value":"371722","label":"单县"},{"value":"371723","label":"成武县"},{"value":"371724","label":"巨野县"},{"value":"371725","label":"郓城县"},{"value":"371726","label":"鄄城县"},{"value":"371727","label":"定陶县"},{"value":"371728","label":"东明县"}]}]},{"label":"河南省","value":"410000","children":[{"value":"410100","label":"郑州市","children":[{"value":"410102","label":"中原区"},{"value":"410103","label":"二七区"},{"value":"410104","label":"管城回族区"},{"value":"410105","label":"金水区"},{"value":"410106","label":"上街区"},{"value":"410108","label":"惠济区"},{"value":"410122","label":"中牟县"},{"value":"410181","label":"巩义市"},{"value":"410182","label":"荥阳市"},{"value":"410183","label":"新密市"},{"value":"410184","label":"新郑市"},{"value":"410185","label":"登封市"},{"value":"410186","label":"郑东新区"},{"value":"410187","label":"高新区"}]},{"value":"410200","label":"开封市","children":[{"value":"410202","label":"龙亭区"},{"value":"410203","label":"顺河回族区"},{"value":"410204","label":"鼓楼区"},{"value":"410205","label":"禹王台区"},{"value":"410211","label":"金明区"},{"value":"410221","label":"杞县"},{"value":"410222","label":"通许县"},{"value":"410223","label":"尉氏县"},{"value":"410224","label":"开封县"},{"value":"410225","label":"兰考县"}]},{"value":"410300","label":"洛阳市","children":[{"value":"410302","label":"老城区"},{"value":"410303","label":"西工区"},{"value":"410304","label":"廛河回族区"},{"value":"410305","label":"涧西区"},{"value":"410306","label":"吉利区"},{"value":"410307","label":"洛龙区"},{"value":"410322","label":"孟津县"},{"value":"410323","label":"新安县"},{"value":"410324","label":"栾川县"},{"value":"410325","label":"嵩县"},{"value":"410326","label":"汝阳县"},{"value":"410327","label":"宜阳县"},{"value":"410328","label":"洛宁县"},{"value":"410329","label":"伊川县"},{"value":"410381","label":"偃师市"},{"value":"471004","label":"高新区"}]},{"value":"410400","label":"平顶山市","children":[{"value":"410402","label":"新华区"},{"value":"410403","label":"卫东区"},{"value":"410404","label":"石龙区"},{"value":"410411","label":"湛河区"},{"value":"410421","label":"宝丰县"},{"value":"410422","label":"叶县"},{"value":"410423","label":"鲁山县"},{"value":"410425","label":"郏县"},{"value":"410481","label":"舞钢市"},{"value":"410482","label":"汝州市"}]},{"value":"410500","label":"安阳市","children":[{"value":"410502","label":"文峰区"},{"value":"410503","label":"北关区"},{"value":"410505","label":"殷都区"},{"value":"410506","label":"龙安区"},{"value":"410522","label":"安阳县"},{"value":"410523","label":"汤阴县"},{"value":"410526","label":"滑县"},{"value":"410527","label":"内黄县"},{"value":"410581","label":"林州市"}]},{"value":"410600","label":"鹤壁市","children":[{"value":"410602","label":"鹤山区"},{"value":"410603","label":"山城区"},{"value":"410611","label":"淇滨区"},{"value":"410621","label":"浚县"},{"value":"410622","label":"淇县"}]},{"value":"410700","label":"新乡市","children":[{"value":"410702","label":"红旗区"},{"value":"410703","label":"卫滨区"},{"value":"410704","label":"凤泉区"},{"value":"410711","label":"牧野区"},{"value":"410721","label":"新乡县"},{"value":"410724","label":"获嘉县"},{"value":"410725","label":"原阳县"},{"value":"410726","label":"延津县"},{"value":"410727","label":"封丘县"},{"value":"410728","label":"长垣县"},{"value":"410781","label":"卫辉市"},{"value":"410782","label":"辉县市"}]},{"value":"410800","label":"焦作市","children":[{"value":"410802","label":"解放区"},{"value":"410803","label":"中站区"},{"value":"410804","label":"马村区"},{"value":"410811","label":"山阳区"},{"value":"410821","label":"修武县"},{"value":"410822","label":"博爱县"},{"value":"410823","label":"武陟县"},{"value":"410825","label":"温县"},{"value":"410882","label":"沁阳市"},{"value":"410883","label":"孟州市"}]},{"value":"410881","label":"济源市"},{"value":"410900","label":"濮阳市","children":[{"value":"410902","label":"华龙区"},{"value":"410922","label":"清丰县"},{"value":"410923","label":"南乐县"},{"value":"410926","label":"范县"},{"value":"410927","label":"台前县"},{"value":"410928","label":"濮阳县"}]},{"value":"411000","label":"许昌市","children":[{"value":"411002","label":"魏都区"},{"value":"411023","label":"许昌县"},{"value":"411024","label":"鄢陵县"},{"value":"411025","label":"襄城县"},{"value":"411081","label":"禹州市"},{"value":"411082","label":"长葛市"}]},{"value":"411100","label":"漯河市","children":[{"value":"411102","label":"源汇区"},{"value":"411103","label":"郾城区"},{"value":"411104","label":"召陵区"},{"value":"411121","label":"舞阳县"},{"value":"411122","label":"临颍县"}]},{"value":"411200","label":"三门峡市","children":[{"value":"411202","label":"湖滨区"},{"value":"411221","label":"渑池县"},{"value":"411222","label":"陕县"},{"value":"411224","label":"卢氏县"},{"value":"411281","label":"义马市"},{"value":"411282","label":"灵宝市"}]},{"value":"411300","label":"南阳市","children":[{"value":"411302","label":"宛城区"},{"value":"411303","label":"卧龙区"},{"value":"411321","label":"南召县"},{"value":"411322","label":"方城县"},{"value":"411323","label":"西峡县"},{"value":"411324","label":"镇平县"},{"value":"411325","label":"内乡县"},{"value":"411326","label":"淅川县"},{"value":"411327","label":"社旗县"},{"value":"411328","label":"唐河县"},{"value":"411329","label":"新野县"},{"value":"411330","label":"桐柏县"},{"value":"411381","label":"邓州市"}]},{"value":"411400","label":"商丘市","children":[{"value":"411402","label":"梁园区"},{"value":"411403","label":"睢阳区"},{"value":"411421","label":"民权县"},{"value":"411422","label":"睢县"},{"value":"411423","label":"宁陵县"},{"value":"411424","label":"柘城县"},{"value":"411425","label":"虞城县"},{"value":"411426","label":"夏邑县"},{"value":"411481","label":"永城市"}]},{"value":"411500","label":"信阳市","children":[{"value":"411502","label":"浉河区"},{"value":"411503","label":"平桥区"},{"value":"411521","label":"罗山县"},{"value":"411522","label":"光山县"},{"value":"411523","label":"新县"},{"value":"411524","label":"商城县"},{"value":"411525","label":"固始县"},{"value":"411526","label":"潢川县"},{"value":"411527","label":"淮滨县"},{"value":"411528","label":"息县"}]},{"value":"411600","label":"周口市","children":[{"value":"411602","label":"川汇区"},{"value":"411621","label":"扶沟县"},{"value":"411622","label":"西华县"},{"value":"411623","label":"商水县"},{"value":"411624","label":"沈丘县"},{"value":"411625","label":"郸城县"},{"value":"411626","label":"淮阳县"},{"value":"411627","label":"太康县"},{"value":"411628","label":"鹿邑县"},{"value":"411681","label":"项城市"}]},{"value":"411700","label":"驻马店市","children":[{"value":"411702","label":"驿城区"},{"value":"411721","label":"西平县"},{"value":"411722","label":"上蔡县"},{"value":"411723","label":"平舆县"},{"value":"411724","label":"正阳县"},{"value":"411725","label":"确山县"},{"value":"411726","label":"泌阳县"},{"value":"411727","label":"汝南县"},{"value":"411728","label":"遂平县"},{"value":"411729","label":"新蔡县"}]}]},{"label":"湖北省","value":"420000","children":[{"value":"420100","label":"武汉市","children":[{"value":"420102","label":"江岸区"},{"value":"420103","label":"江汉区"},{"value":"420104","label":"硚口区"},{"value":"420105","label":"汉阳区"},{"value":"420106","label":"武昌区"},{"value":"420107","label":"青山区"},{"value":"420111","label":"洪山区"},{"value":"420112","label":"东西湖区"},{"value":"420113","label":"汉南区"},{"value":"420114","label":"蔡甸区"},{"value":"420115","label":"江夏区"},{"value":"420116","label":"黄陂区"},{"value":"420117","label":"新洲区"}]},{"value":"420200","label":"黄石市","children":[{"value":"420202","label":"黄石港区"},{"value":"420203","label":"西塞山区"},{"value":"420204","label":"下陆区"},{"value":"420205","label":"铁山区"},{"value":"420222","label":"阳新县"},{"value":"420281","label":"大冶市"}]},{"value":"420300","label":"十堰市","children":[{"value":"420302","label":"茅箭区"},{"value":"420303","label":"张湾区"},{"value":"420321","label":"郧县"},{"value":"420322","label":"郧西县"},{"value":"420323","label":"竹山县"},{"value":"420324","label":"竹溪县"},{"value":"420325","label":"房县"},{"value":"420381","label":"丹江口市"},{"value":"420382","label":"城区"}]},{"value":"420500","label":"宜昌市","children":[{"value":"420502","label":"西陵区"},{"value":"420503","label":"伍家岗区"},{"value":"420504","label":"点军区"},{"value":"420505","label":"猇亭区"},{"value":"420506","label":"夷陵区"},{"value":"420525","label":"远安县"},{"value":"420526","label":"兴山县"},{"value":"420527","label":"秭归县"},{"value":"420528","label":"长阳土家族自治县"},{"value":"420529","label":"五峰土家族自治县"},{"value":"420551","label":"葛洲坝区"},{"value":"420552","label":"开发区"},{"value":"420581","label":"宜都市"},{"value":"420582","label":"当阳市"},{"value":"420583","label":"枝江市"}]},{"value":"420600","label":"襄阳市","children":[{"value":"420602","label":"襄城区"},{"value":"420606","label":"樊城区"},{"value":"420607","label":"襄州区"},{"value":"420624","label":"南漳县"},{"value":"420625","label":"谷城县"},{"value":"420626","label":"保康县"},{"value":"420682","label":"老河口市"},{"value":"420683","label":"枣阳市"},{"value":"420684","label":"宜城市"}]},{"value":"420700","label":"鄂州市","children":[{"value":"420702","label":"梁子湖区"},{"value":"420703","label":"华容区"},{"value":"420704","label":"鄂城区"}]},{"value":"420800","label":"荆门市","children":[{"value":"420802","label":"东宝区"},{"value":"420804","label":"掇刀区"},{"value":"420821","label":"京山县"},{"value":"420822","label":"沙洋县"},{"value":"420881","label":"钟祥市"}]},{"value":"420900","label":"孝感市","children":[{"value":"420902","label":"孝南区"},{"value":"420921","label":"孝昌县"},{"value":"420922","label":"大悟县"},{"value":"420923","label":"云梦县"},{"value":"420981","label":"应城市"},{"value":"420982","label":"安陆市"},{"value":"420984","label":"汉川市"}]},{"value":"421000","label":"荆州市","children":[{"value":"421002","label":"沙市区"},{"value":"421003","label":"荆州区"},{"value":"421022","label":"公安县"},{"value":"421023","label":"监利县"},{"value":"421024","label":"江陵县"},{"value":"421081","label":"石首市"},{"value":"421083","label":"洪湖市"},{"value":"421087","label":"松滋市"}]},{"value":"421100","label":"黄冈市","children":[{"value":"421102","label":"黄州区"},{"value":"421121","label":"团风县"},{"value":"421122","label":"红安县"},{"value":"421123","label":"罗田县"},{"value":"421124","label":"英山县"},{"value":"421125","label":"浠水县"},{"value":"421126","label":"蕲春县"},{"value":"421127","label":"黄梅县"},{"value":"421181","label":"麻城市"},{"value":"421182","label":"武穴市"}]},{"value":"421200","label":"咸宁市","children":[{"value":"421202","label":"咸安区"},{"value":"421221","label":"嘉鱼县"},{"value":"421222","label":"通城县"},{"value":"421223","label":"崇阳县"},{"value":"421224","label":"通山县"},{"value":"421281","label":"赤壁市"},{"value":"421282","label":"温泉城区"}]},{"value":"421300","label":"随州市","children":[{"value":"421302","label":"曾都区"},{"value":"421321","label":"随县"},{"value":"421381","label":"广水市"}]},{"value":"422800","label":"恩施土家族苗族自治州","children":[{"value":"422801","label":"恩施市"},{"value":"422802","label":"利川市"},{"value":"422822","label":"建始县"},{"value":"422823","label":"巴东县"},{"value":"422825","label":"宣恩县"},{"value":"422826","label":"咸丰县"},{"value":"422827","label":"来凤县"},{"value":"422828","label":"鹤峰县"}]},{"value":"429004","label":"仙桃市"},{"value":"429005","label":"潜江市"},{"value":"429006","label":"天门市"},{"value":"429021","label":"神农架林区"}]},{"label":"湖南省","value":"430000","children":[{"value":"430100","label":"长沙市","children":[{"value":"430102","label":"芙蓉区"},{"value":"430103","label":"天心区"},{"value":"430104","label":"岳麓区"},{"value":"430105","label":"开福区"},{"value":"430111","label":"雨花区"},{"value":"430121","label":"长沙县"},{"value":"430122","label":"望城县"},{"value":"430124","label":"宁乡县"},{"value":"430181","label":"浏阳市"}]},{"value":"430200","label":"株洲市","children":[{"value":"430202","label":"荷塘区"},{"value":"430203","label":"芦淞区"},{"value":"430204","label":"石峰区"},{"value":"430211","label":"天元区"},{"value":"430221","label":"株洲县"},{"value":"430223","label":"攸县"},{"value":"430224","label":"茶陵县"},{"value":"430225","label":"炎陵县"},{"value":"430281","label":"醴陵市"}]},{"value":"430300","label":"湘潭市","children":[{"value":"430302","label":"雨湖区"},{"value":"430304","label":"岳塘区"},{"value":"430321","label":"湘潭县"},{"value":"430381","label":"湘乡市"},{"value":"430382","label":"韶山市"}]},{"value":"430400","label":"衡阳市","children":[{"value":"430405","label":"珠晖区"},{"value":"430406","label":"雁峰区"},{"value":"430407","label":"石鼓区"},{"value":"430408","label":"蒸湘区"},{"value":"430412","label":"南岳区"},{"value":"430421","label":"衡阳县"},{"value":"430422","label":"衡南县"},{"value":"430423","label":"衡山县"},{"value":"430424","label":"衡东县"},{"value":"430426","label":"祁东县"},{"value":"430481","label":"耒阳市"},{"value":"430482","label":"常宁市"}]},{"value":"430500","label":"邵阳市","children":[{"value":"430502","label":"双清区"},{"value":"430503","label":"大祥区"},{"value":"430511","label":"北塔区"},{"value":"430521","label":"邵东县"},{"value":"430522","label":"新邵县"},{"value":"430523","label":"邵阳县"},{"value":"430524","label":"隆回县"},{"value":"430525","label":"洞口县"},{"value":"430527","label":"绥宁县"},{"value":"430528","label":"新宁县"},{"value":"430529","label":"城步苗族自治县"},{"value":"430581","label":"武冈市"}]},{"value":"430600","label":"岳阳市","children":[{"value":"430602","label":"岳阳楼区"},{"value":"430603","label":"云溪区"},{"value":"430611","label":"君山区"},{"value":"430621","label":"岳阳县"},{"value":"430623","label":"华容县"},{"value":"430624","label":"湘阴县"},{"value":"430626","label":"平江县"},{"value":"430681","label":"汨罗市"},{"value":"430682","label":"临湘市"}]},{"value":"430700","label":"常德市","children":[{"value":"430702","label":"武陵区"},{"value":"430703","label":"鼎城区"},{"value":"430721","label":"安乡县"},{"value":"430722","label":"汉寿县"},{"value":"430723","label":"澧县"},{"value":"430724","label":"临澧县"},{"value":"430725","label":"桃源县"},{"value":"430726","label":"石门县"},{"value":"430781","label":"津市市"}]},{"value":"430800","label":"张家界市","children":[{"value":"430802","label":"永定区"},{"value":"430811","label":"武陵源区"},{"value":"430821","label":"慈利县"},{"value":"430822","label":"桑植县"}]},{"value":"430900","label":"益阳市","children":[{"value":"430902","label":"资阳区"},{"value":"430903","label":"赫山区"},{"value":"430921","label":"南县"},{"value":"430922","label":"桃江县"},{"value":"430923","label":"安化县"},{"value":"430981","label":"沅江市"}]},{"value":"431000","label":"郴州市","children":[{"value":"431002","label":"北湖区"},{"value":"431003","label":"苏仙区"},{"value":"431021","label":"桂阳县"},{"value":"431022","label":"宜章县"},{"value":"431023","label":"永兴县"},{"value":"431024","label":"嘉禾县"},{"value":"431025","label":"临武县"},{"value":"431026","label":"汝城县"},{"value":"431027","label":"桂东县"},{"value":"431028","label":"安仁县"},{"value":"431081","label":"资兴市"}]},{"value":"431100","label":"永州市","children":[{"value":"431102","label":"零陵区"},{"value":"431103","label":"冷水滩区"},{"value":"431121","label":"祁阳县"},{"value":"431122","label":"东安县"},{"value":"431123","label":"双牌县"},{"value":"431124","label":"道县"},{"value":"431125","label":"江永县"},{"value":"431126","label":"宁远县"},{"value":"431127","label":"蓝山县"},{"value":"431128","label":"新田县"},{"value":"431129","label":"江华瑶族自治县"}]},{"value":"431200","label":"怀化市","children":[{"value":"431202","label":"鹤城区"},{"value":"431221","label":"中方县"},{"value":"431222","label":"沅陵县"},{"value":"431223","label":"辰溪县"},{"value":"431224","label":"溆浦县"},{"value":"431225","label":"会同县"},{"value":"431226","label":"麻阳苗族自治县"},{"value":"431227","label":"新晃侗族自治县"},{"value":"431228","label":"芷江侗族自治县"},{"value":"431229","label":"靖州苗族侗族自治县"},{"value":"431230","label":"通道侗族自治县"},{"value":"431281","label":"洪江市"}]},{"value":"431300","label":"娄底市","children":[{"value":"431302","label":"娄星区"},{"value":"431321","label":"双峰县"},{"value":"431322","label":"新化县"},{"value":"431381","label":"冷水江市"},{"value":"431382","label":"涟源市"}]},{"value":"433100","label":"湘西土家族苗族自治州","children":[{"value":"433101","label":"吉首市"},{"value":"433122","label":"泸溪县"},{"value":"433123","label":"凤凰县"},{"value":"433124","label":"花垣县"},{"value":"433125","label":"保靖县"},{"value":"433126","label":"古丈县"},{"value":"433127","label":"永顺县"},{"value":"433130","label":"龙山县"}]}]},{"label":"广东省","value":"440000","children":[{"value":"440100","label":"广州市","children":[{"value":"440103","label":"荔湾区"},{"value":"440104","label":"越秀区"},{"value":"440105","label":"海珠区"},{"value":"440106","label":"天河区"},{"value":"440111","label":"白云区"},{"value":"440112","label":"黄埔区"},{"value":"440113","label":"番禺区"},{"value":"440114","label":"花都区"},{"value":"440115","label":"南沙区"},{"value":"440116","label":"萝岗区"},{"value":"440183","label":"增城市"},{"value":"440184","label":"从化市"},{"value":"440188","label":"东山区"}]},{"value":"440200","label":"韶关市","children":[{"value":"440203","label":"武江区"},{"value":"440204","label":"浈江区"},{"value":"440205","label":"曲江区"},{"value":"440222","label":"始兴县"},{"value":"440224","label":"仁化县"},{"value":"440229","label":"翁源县"},{"value":"440232","label":"乳源瑶族自治县"},{"value":"440233","label":"新丰县"},{"value":"440281","label":"乐昌市"},{"value":"440282","label":"南雄市"}]},{"value":"440300","label":"深圳市","children":[{"value":"440303","label":"罗湖区"},{"value":"440304","label":"福田区"},{"value":"440305","label":"南山区"},{"value":"440306","label":"宝安区"},{"value":"440307","label":"龙岗区"},{"value":"440308","label":"盐田区"},{"value":"1032697","label":"光明新区"},{"value":"1032698","label":"坪山新区"},{"value":"1032699","label":"大鹏新区"},{"value":"1032700","label":"龙华新区"}]},{"value":"440400","label":"珠海市","children":[{"value":"440402","label":"香洲区"},{"value":"440403","label":"斗门区"},{"value":"440404","label":"金湾区"},{"value":"440486","label":"金唐区"},{"value":"440487","label":"南湾区"}]},{"value":"440500","label":"汕头市","children":[{"value":"440507","label":"龙湖区"},{"value":"440511","label":"金平区"},{"value":"440512","label":"濠江区"},{"value":"440513","label":"潮阳区"},{"value":"440514","label":"潮南区"},{"value":"440515","label":"澄海区"},{"value":"440523","label":"南澳县"}]},{"value":"440600","label":"佛山市","children":[{"value":"440604","label":"禅城区"},{"value":"440605","label":"南海区"},{"value":"440606","label":"顺德区"},{"value":"440607","label":"三水区"},{"value":"440608","label":"高明区"}]},{"value":"440700","label":"江门市","children":[{"value":"440703","label":"蓬江区"},{"value":"440704","label":"江海区"},{"value":"440705","label":"新会区"},{"value":"440781","label":"台山市"},{"value":"440783","label":"开平市"},{"value":"440784","label":"鹤山市"},{"value":"440785","label":"恩平市"}]},{"value":"440800","label":"湛江市","children":[{"value":"440802","label":"赤坎区"},{"value":"440803","label":"霞山区"},{"value":"440804","label":"坡头区"},{"value":"440811","label":"麻章区"},{"value":"440823","label":"遂溪县"},{"value":"440825","label":"徐闻县"},{"value":"440881","label":"廉江市"},{"value":"440882","label":"雷州市"},{"value":"440883","label":"吴川市"}]},{"value":"440900","label":"茂名市","children":[{"value":"440902","label":"茂南区"},{"value":"440903","label":"茂港区"},{"value":"440923","label":"电白县"},{"value":"440981","label":"高州市"},{"value":"440982","label":"化州市"},{"value":"440983","label":"信宜市"}]},{"value":"441200","label":"肇庆市","children":[{"value":"441202","label":"端州区"},{"value":"441203","label":"鼎湖区"},{"value":"441223","label":"广宁县"},{"value":"441224","label":"怀集县"},{"value":"441225","label":"封开县"},{"value":"441226","label":"德庆县"},{"value":"441283","label":"高要市"},{"value":"441284","label":"四会市"}]},{"value":"441300","label":"惠州市","children":[{"value":"441302","label":"惠城区"},{"value":"441303","label":"惠阳区"},{"value":"441322","label":"博罗县"},{"value":"441323","label":"惠东县"},{"value":"441324","label":"龙门县"}]},{"value":"441400","label":"梅州市","children":[{"value":"441402","label":"梅江区"},{"value":"441421","label":"梅县"},{"value":"441422","label":"大埔县"},{"value":"441423","label":"丰顺县"},{"value":"441424","label":"五华县"},{"value":"441426","label":"平远县"},{"value":"441427","label":"蕉岭县"},{"value":"441481","label":"兴宁市"}]},{"value":"441500","label":"汕尾市","children":[{"value":"441502","label":"城区"},{"value":"441521","label":"海丰县"},{"value":"441523","label":"陆河县"},{"value":"441581","label":"陆丰市"}]},{"value":"441600","label":"河源市","children":[{"value":"441602","label":"源城区"},{"value":"441621","label":"紫金县"},{"value":"441622","label":"龙川县"},{"value":"441623","label":"连平县"},{"value":"441624","label":"和平县"},{"value":"441625","label":"东源县"}]},{"value":"441700","label":"阳江市","children":[{"value":"441702","label":"江城区"},{"value":"441721","label":"阳西县"},{"value":"441723","label":"阳东县"},{"value":"441781","label":"阳春市"}]},{"value":"441800","label":"清远市","children":[{"value":"441802","label":"清城区"},{"value":"441821","label":"佛冈县"},{"value":"441823","label":"阳山县"},{"value":"441825","label":"连山壮族瑶族自治县"},{"value":"441826","label":"连南瑶族自治县"},{"value":"441827","label":"清新县"},{"value":"441881","label":"英德市"},{"value":"441882","label":"连州市"}]},{"value":"441900","label":"东莞市"},{"value":"442000","label":"中山市"},{"value":"445100","label":"潮州市","children":[{"value":"445102","label":"湘桥区"},{"value":"445121","label":"潮安县"},{"value":"445122","label":"饶平县"},{"value":"445185","label":"枫溪区"}]},{"value":"445200","label":"揭阳市","children":[{"value":"445202","label":"榕城区"},{"value":"445221","label":"揭东县"},{"value":"445222","label":"揭西县"},{"value":"445224","label":"惠来县"},{"value":"445281","label":"普宁市"},{"value":"445284","label":"东山区"}]},{"value":"445300","label":"云浮市","children":[{"value":"445302","label":"云城区"},{"value":"445321","label":"新兴县"},{"value":"445322","label":"郁南县"},{"value":"445323","label":"云安县"},{"value":"445381","label":"罗定市"}]}]},{"label":"广西壮族自治区","value":"450000","children":[{"value":"450100","label":"南宁市","children":[{"value":"450102","label":"兴宁区"},{"value":"450103","label":"青秀区"},{"value":"450105","label":"江南区"},{"value":"450107","label":"西乡塘区"},{"value":"450108","label":"良庆区"},{"value":"450109","label":"邕宁区"},{"value":"450122","label":"武鸣县"},{"value":"450123","label":"隆安县"},{"value":"450124","label":"马山县"},{"value":"450125","label":"上林县"},{"value":"450126","label":"宾阳县"},{"value":"450127","label":"横县"}]},{"value":"450200","label":"柳州市","children":[{"value":"450202","label":"城中区"},{"value":"450203","label":"鱼峰区"},{"value":"450204","label":"柳南区"},{"value":"450205","label":"柳北区"},{"value":"450221","label":"柳江县"},{"value":"450222","label":"柳城县"},{"value":"450223","label":"鹿寨县"},{"value":"450224","label":"融安县"},{"value":"450225","label":"融水苗族自治县"},{"value":"450226","label":"三江侗族自治县"}]},{"value":"450300","label":"桂林市","children":[{"value":"450302","label":"秀峰区"},{"value":"450303","label":"叠彩区"},{"value":"450304","label":"象山区"},{"value":"450305","label":"七星区"},{"value":"450311","label":"雁山区"},{"value":"450321","label":"阳朔县"},{"value":"450322","label":"临桂县"},{"value":"450323","label":"灵川县"},{"value":"450324","label":"全州县"},{"value":"450325","label":"兴安县"},{"value":"450326","label":"永福县"},{"value":"450327","label":"灌阳县"},{"value":"450328","label":"龙胜各族自治县"},{"value":"450329","label":"资源县"},{"value":"450330","label":"平乐县"},{"value":"450331","label":"荔浦县"},{"value":"450332","label":"恭城瑶族自治县"}]},{"value":"450400","label":"梧州市","children":[{"value":"450403","label":"万秀区"},{"value":"450404","label":"蝶山区"},{"value":"450405","label":"长洲区"},{"value":"450421","label":"苍梧县"},{"value":"450422","label":"藤县"},{"value":"450423","label":"蒙山县"},{"value":"450481","label":"岑溪市"}]},{"value":"450500","label":"北海市","children":[{"value":"450502","label":"海城区"},{"value":"450503","label":"银海区"},{"value":"450512","label":"铁山港区"},{"value":"450521","label":"合浦县"}]},{"value":"450600","label":"防城港市","children":[{"value":"450602","label":"港口区"},{"value":"450603","label":"防城区"},{"value":"450621","label":"上思县"},{"value":"450681","label":"东兴市"}]},{"value":"450700","label":"钦州市","children":[{"value":"450702","label":"钦南区"},{"value":"450703","label":"钦北区"},{"value":"450721","label":"灵山县"},{"value":"450722","label":"浦北县"}]},{"value":"450800","label":"贵港市","children":[{"value":"450802","label":"港北区"},{"value":"450803","label":"港南区"},{"value":"450804","label":"覃塘区"},{"value":"450821","label":"平南县"},{"value":"450881","label":"桂平市"}]},{"value":"450900","label":"玉林市","children":[{"value":"450902","label":"玉州区"},{"value":"450921","label":"容县"},{"value":"450922","label":"陆川县"},{"value":"450923","label":"博白县"},{"value":"450924","label":"兴业县"},{"value":"450981","label":"北流市"}]},{"value":"451000","label":"百色市","children":[{"value":"451002","label":"右江区"},{"value":"451021","label":"田阳县"},{"value":"451022","label":"田东县"},{"value":"451023","label":"平果县"},{"value":"451024","label":"德保县"},{"value":"451025","label":"靖西县"},{"value":"451026","label":"那坡县"},{"value":"451027","label":"凌云县"},{"value":"451028","label":"乐业县"},{"value":"451029","label":"田林县"},{"value":"451030","label":"西林县"},{"value":"451031","label":"隆林各族自治县"}]},{"value":"451100","label":"贺州市","children":[{"value":"451102","label":"八步区"},{"value":"451121","label":"昭平县"},{"value":"451122","label":"钟山县"},{"value":"451123","label":"富川瑶族自治县"}]},{"value":"451200","label":"河池市","children":[{"value":"451202","label":"金城江区"},{"value":"451221","label":"南丹县"},{"value":"451222","label":"天峨县"},{"value":"451223","label":"凤山县"},{"value":"451224","label":"东兰县"},{"value":"451225","label":"罗城仫佬族自治县"},{"value":"451226","label":"环江毛南族自治县"},{"value":"451227","label":"巴马瑶族自治县"},{"value":"451228","label":"都安瑶族自治县"},{"value":"451229","label":"大化瑶族自治县"},{"value":"451281","label":"宜州市"}]},{"value":"451300","label":"来宾市","children":[{"value":"451302","label":"兴宾区"},{"value":"451321","label":"忻城县"},{"value":"451322","label":"象州县"},{"value":"451323","label":"武宣县"},{"value":"451324","label":"金秀瑶族自治县"},{"value":"451381","label":"合山市"}]},{"value":"451400","label":"崇左市","children":[{"value":"451402","label":"江洲区"},{"value":"451421","label":"扶绥县"},{"value":"451422","label":"宁明县"},{"value":"451423","label":"龙州县"},{"value":"451424","label":"大新县"},{"value":"451425","label":"天等县"},{"value":"451481","label":"凭祥市"}]}]},{"label":"海南省","value":"460000","children":[{"value":"460100","label":"海口市","children":[{"value":"460105","label":"秀英区"},{"value":"460106","label":"龙华区"},{"value":"460107","label":"琼山区"},{"value":"460108","label":"美兰区"}]},{"value":"460200","label":"三亚市"},{"value":"469001","label":"五指山市"},{"value":"469002","label":"琼海市"},{"value":"469003","label":"儋州市"},{"value":"469005","label":"文昌市"},{"value":"469006","label":"万宁市"},{"value":"469007","label":"东方市"},{"value":"469025","label":"定安县"},{"value":"469026","label":"屯昌县"},{"value":"469027","label":"澄迈县"},{"value":"469028","label":"临高县"},{"value":"469030","label":"白沙黎族自治县"},{"value":"469031","label":"昌江黎族自治县"},{"value":"469033","label":"乐东黎族自治县"},{"value":"469034","label":"陵水黎族自治县"},{"value":"469035","label":"保亭黎族苗族自治县"},{"value":"469036","label":"琼中黎族苗族自治县"},{"value":"469037","label":"西沙群岛"},{"value":"469038","label":"南沙群岛"},{"value":"469039","label":"中沙群岛的岛礁及其海域"}]},{"label":"重庆","value":"500000","children":[{"value":"500100","label":"重庆市","children":[{"value":"500101","label":"万州区"},{"value":"500102","label":"涪陵区"},{"value":"500103","label":"渝中区"},{"value":"500104","label":"大渡口区"},{"value":"500105","label":"江北区"},{"value":"500106","label":"沙坪坝区"},{"value":"500107","label":"九龙坡区"},{"value":"500108","label":"南岸区"},{"value":"500109","label":"北碚区"},{"value":"500110","label":"万盛区"},{"value":"500111","label":"双桥区"},{"value":"500112","label":"渝北区"},{"value":"500113","label":"巴南区"},{"value":"500114","label":"黔江区"},{"value":"500115","label":"长寿区"},{"value":"500222","label":"綦江县"},{"value":"500223","label":"潼南县"},{"value":"500224","label":"铜梁县"},{"value":"500225","label":"大足县"},{"value":"500226","label":"荣昌县"},{"value":"500227","label":"璧山县"},{"value":"500228","label":"梁平县"},{"value":"500229","label":"城口县"},{"value":"500230","label":"丰都县"},{"value":"500231","label":"垫江县"},{"value":"500232","label":"武隆县"},{"value":"500233","label":"忠县"},{"value":"500234","label":"开县"},{"value":"500235","label":"云阳县"},{"value":"500236","label":"奉节县"},{"value":"500237","label":"巫山县"},{"value":"500238","label":"巫溪县"},{"value":"500240","label":"石柱土家族自治县"},{"value":"500241","label":"秀山土家族苗族自治县"},{"value":"500242","label":"酉阳土家族苗族自治县"},{"value":"500243","label":"彭水苗族土家族自治县"},{"value":"500381","label":"江津区"},{"value":"500382","label":"合川区"},{"value":"500383","label":"永川区"},{"value":"500384","label":"南川区"}]}]},{"label":"四川省","value":"510000","children":[{"value":"510100","label":"成都市","children":[{"value":"510104","label":"锦江区"},{"value":"510105","label":"青羊区"},{"value":"510106","label":"金牛区"},{"value":"510107","label":"武侯区"},{"value":"510108","label":"成华区"},{"value":"510112","label":"龙泉驿区"},{"value":"510113","label":"青白江区"},{"value":"510114","label":"新都区"},{"value":"510115","label":"温江区"},{"value":"510121","label":"金堂县"},{"value":"510122","label":"双流县"},{"value":"510124","label":"郫县"},{"value":"510129","label":"大邑县"},{"value":"510131","label":"蒲江县"},{"value":"510132","label":"新津县"},{"value":"510181","label":"都江堰市"},{"value":"510182","label":"彭州市"},{"value":"510183","label":"邛崃市"},{"value":"510184","label":"崇州市"}]},{"value":"510300","label":"自贡市","children":[{"value":"510302","label":"自流井区"},{"value":"510303","label":"贡井区"},{"value":"510304","label":"大安区"},{"value":"510311","label":"沿滩区"},{"value":"510321","label":"荣县"},{"value":"510322","label":"富顺县"}]},{"value":"510400","label":"攀枝花市","children":[{"value":"510402","label":"东区"},{"value":"510403","label":"西区"},{"value":"510411","label":"仁和区"},{"value":"510421","label":"米易县"},{"value":"510422","label":"盐边县"}]},{"value":"510500","label":"泸州市","children":[{"value":"510502","label":"江阳区"},{"value":"510503","label":"纳溪区"},{"value":"510504","label":"龙马潭区"},{"value":"510521","label":"泸县"},{"value":"510522","label":"合江县"},{"value":"510524","label":"叙永县"},{"value":"510525","label":"古蔺县"}]},{"value":"510600","label":"德阳市","children":[{"value":"510603","label":"旌阳区"},{"value":"510623","label":"中江县"},{"value":"510626","label":"罗江县"},{"value":"510681","label":"广汉市"},{"value":"510682","label":"什邡市"},{"value":"510683","label":"绵竹市"}]},{"value":"510700","label":"绵阳市","children":[{"value":"510703","label":"涪城区"},{"value":"510704","label":"游仙区"},{"value":"510722","label":"三台县"},{"value":"510723","label":"盐亭县"},{"value":"510724","label":"安县"},{"value":"510725","label":"梓潼县"},{"value":"510726","label":"北川羌族自治县"},{"value":"510727","label":"平武县"},{"value":"510751","label":"高新区"},{"value":"510781","label":"江油市"}]},{"value":"510800","label":"广元市","children":[{"value":"510802","label":"利州区"},{"value":"510811","label":"元坝区"},{"value":"510812","label":"朝天区"},{"value":"510821","label":"旺苍县"},{"value":"510822","label":"青川县"},{"value":"510823","label":"剑阁县"},{"value":"510824","label":"苍溪县"}]},{"value":"510900","label":"遂宁市","children":[{"value":"510903","label":"船山区"},{"value":"510904","label":"安居区"},{"value":"510921","label":"蓬溪县"},{"value":"510922","label":"射洪县"},{"value":"510923","label":"大英县"}]},{"value":"511000","label":"内江市","children":[{"value":"511002","label":"市中区"},{"value":"511011","label":"东兴区"},{"value":"511024","label":"威远县"},{"value":"511025","label":"资中县"},{"value":"511028","label":"隆昌县"}]},{"value":"511100","label":"乐山市","children":[{"value":"511102","label":"市中区"},{"value":"511111","label":"沙湾区"},{"value":"511112","label":"五通桥区"},{"value":"511113","label":"金口河区"},{"value":"511123","label":"犍为县"},{"value":"511124","label":"井研县"},{"value":"511126","label":"夹江县"},{"value":"511129","label":"沐川县"},{"value":"511132","label":"峨边彝族自治县"},{"value":"511133","label":"马边彝族自治县"},{"value":"511181","label":"峨眉山市"}]},{"value":"511300","label":"南充市","children":[{"value":"511302","label":"顺庆区"},{"value":"511303","label":"高坪区"},{"value":"511304","label":"嘉陵区"},{"value":"511321","label":"南部县"},{"value":"511322","label":"营山县"},{"value":"511323","label":"蓬安县"},{"value":"511324","label":"仪陇县"},{"value":"511325","label":"西充县"},{"value":"511381","label":"阆中市"}]},{"value":"511400","label":"眉山市","children":[{"value":"511402","label":"东坡区"},{"value":"511421","label":"仁寿县"},{"value":"511422","label":"彭山县"},{"value":"511423","label":"洪雅县"},{"value":"511424","label":"丹棱县"},{"value":"511425","label":"青神县"}]},{"value":"511500","label":"宜宾市","children":[{"value":"511502","label":"翠屏区"},{"value":"511521","label":"宜宾县"},{"value":"511522","label":"南溪县"},{"value":"511523","label":"江安县"},{"value":"511524","label":"长宁县"},{"value":"511525","label":"高县"},{"value":"511526","label":"珙县"},{"value":"511527","label":"筠连县"},{"value":"511528","label":"兴文县"},{"value":"511529","label":"屏山县"}]},{"value":"511600","label":"广安市","children":[{"value":"511602","label":"广安区"},{"value":"511621","label":"岳池县"},{"value":"511622","label":"武胜县"},{"value":"511623","label":"邻水县"},{"value":"511681","label":"华蓥市"},{"value":"511682","label":"市辖区"}]},{"value":"511700","label":"达州市","children":[{"value":"511702","label":"通川区"},{"value":"511721","label":"达县"},{"value":"511722","label":"宣汉县"},{"value":"511723","label":"开江县"},{"value":"511724","label":"大竹县"},{"value":"511725","label":"渠县"},{"value":"511781","label":"万源市"}]},{"value":"511800","label":"雅安市","children":[{"value":"511802","label":"雨城区"},{"value":"511821","label":"名山县"},{"value":"511822","label":"荥经县"},{"value":"511823","label":"汉源县"},{"value":"511824","label":"石棉县"},{"value":"511825","label":"天全县"},{"value":"511826","label":"芦山县"},{"value":"511827","label":"宝兴县"}]},{"value":"511900","label":"巴中市","children":[{"value":"511902","label":"巴州区"},{"value":"511921","label":"通江县"},{"value":"511922","label":"南江县"},{"value":"511923","label":"平昌县"}]},{"value":"512000","label":"资阳市","children":[{"value":"512002","label":"雁江区"},{"value":"512021","label":"安岳县"},{"value":"512022","label":"乐至县"},{"value":"512081","label":"简阳市"}]},{"value":"513200","label":"阿坝藏族羌族自治州","children":[{"value":"513221","label":"汶川县"},{"value":"513222","label":"理县"},{"value":"513223","label":"茂县"},{"value":"513224","label":"松潘县"},{"value":"513225","label":"九寨沟县"},{"value":"513226","label":"金川县"},{"value":"513227","label":"小金县"},{"value":"513228","label":"黑水县"},{"value":"513229","label":"马尔康县"},{"value":"513230","label":"壤塘县"},{"value":"513231","label":"阿坝县"},{"value":"513232","label":"若尔盖县"},{"value":"513233","label":"红原县"}]},{"value":"513300","label":"甘孜藏族自治州","children":[{"value":"513321","label":"康定县"},{"value":"513322","label":"泸定县"},{"value":"513323","label":"丹巴县"},{"value":"513324","label":"九龙县"},{"value":"513325","label":"雅江县"},{"value":"513326","label":"道孚县"},{"value":"513327","label":"炉霍县"},{"value":"513328","label":"甘孜县"},{"value":"513329","label":"新龙县"},{"value":"513330","label":"德格县"},{"value":"513331","label":"白玉县"},{"value":"513332","label":"石渠县"},{"value":"513333","label":"色达县"},{"value":"513334","label":"理塘县"},{"value":"513335","label":"巴塘县"},{"value":"513336","label":"乡城县"},{"value":"513337","label":"稻城县"},{"value":"513338","label":"得荣县"}]},{"value":"513400","label":"凉山彝族自治州","children":[{"value":"513401","label":"西昌市"},{"value":"513422","label":"木里藏族自治县"},{"value":"513423","label":"盐源县"},{"value":"513424","label":"德昌县"},{"value":"513425","label":"会理县"},{"value":"513426","label":"会东县"},{"value":"513427","label":"宁南县"},{"value":"513428","label":"普格县"},{"value":"513429","label":"布拖县"},{"value":"513430","label":"金阳县"},{"value":"513431","label":"昭觉县"},{"value":"513432","label":"喜德县"},{"value":"513433","label":"冕宁县"},{"value":"513434","label":"越西县"},{"value":"513435","label":"甘洛县"},{"value":"513436","label":"美姑县"},{"value":"513437","label":"雷波县"}]}]},{"label":"贵州省","value":"520000","children":[{"value":"520100","label":"贵阳市","children":[{"value":"520102","label":"南明区"},{"value":"520103","label":"云岩区"},{"value":"520111","label":"花溪区"},{"value":"520112","label":"乌当区"},{"value":"520113","label":"白云区"},{"value":"520114","label":"小河区"},{"value":"520121","label":"开阳县"},{"value":"520122","label":"息烽县"},{"value":"520123","label":"修文县"},{"value":"520151","label":"金阳开发区"},{"value":"520181","label":"清镇市"}]},{"value":"520200","label":"六盘水市","children":[{"value":"520201","label":"钟山区"},{"value":"520203","label":"六枝特区"},{"value":"520221","label":"水城县"},{"value":"520222","label":"盘县"}]},{"value":"520300","label":"遵义市","children":[{"value":"520302","label":"红花岗区"},{"value":"520303","label":"汇川区"},{"value":"520321","label":"遵义县"},{"value":"520322","label":"桐梓县"},{"value":"520323","label":"绥阳县"},{"value":"520324","label":"正安县"},{"value":"520325","label":"道真仡佬族苗族自治县"},{"value":"520326","label":"务川仡佬族苗族自治县"},{"value":"520327","label":"凤冈县"},{"value":"520328","label":"湄潭县"},{"value":"520329","label":"余庆县"},{"value":"520330","label":"习水县"},{"value":"520381","label":"赤水市"},{"value":"520382","label":"仁怀市"}]},{"value":"520400","label":"安顺市","children":[{"value":"520402","label":"西秀区"},{"value":"520421","label":"平坝县"},{"value":"520422","label":"普定县"},{"value":"520423","label":"镇宁布依族苗族自治县"},{"value":"520424","label":"关岭布依族苗族自治县"},{"value":"520425","label":"紫云苗族布依族自治县"}]},{"value":"522200","label":"铜仁地区","children":[{"value":"522201","label":"铜仁市"},{"value":"522222","label":"江口县"},{"value":"522223","label":"玉屏侗族自治县"},{"value":"522224","label":"石阡县"},{"value":"522225","label":"思南县"},{"value":"522226","label":"印江土家族苗族自治县"},{"value":"522227","label":"德江县"},{"value":"522228","label":"沿河土家族自治县"},{"value":"522229","label":"松桃苗族自治县"},{"value":"522230","label":"万山特区"}]},{"value":"522300","label":"黔西南布依族苗族自治州","children":[{"value":"522301","label":"兴义市"},{"value":"522322","label":"兴仁县"},{"value":"522323","label":"普安县"},{"value":"522324","label":"晴隆县"},{"value":"522325","label":"贞丰县"},{"value":"522326","label":"望谟县"},{"value":"522327","label":"册亨县"},{"value":"522328","label":"安龙县"}]},{"value":"522400","label":"毕节地区","children":[{"value":"522401","label":"毕节市"},{"value":"522422","label":"大方县"},{"value":"522423","label":"黔西县"},{"value":"522424","label":"金沙县"},{"value":"522425","label":"织金县"},{"value":"522426","label":"纳雍县"},{"value":"522427","label":"威宁彝族回族苗族自治县"},{"value":"522428","label":"赫章县"}]},{"value":"522600","label":"黔东南苗族侗族自治州","children":[{"value":"522601","label":"凯里市"},{"value":"522622","label":"黄平县"},{"value":"522623","label":"施秉县"},{"value":"522624","label":"三穗县"},{"value":"522625","label":"镇远县"},{"value":"522626","label":"岑巩县"},{"value":"522627","label":"天柱县"},{"value":"522628","label":"锦屏县"},{"value":"522629","label":"剑河县"},{"value":"522630","label":"台江县"},{"value":"522631","label":"黎平县"},{"value":"522632","label":"榕江县"},{"value":"522633","label":"从江县"},{"value":"522634","label":"雷山县"},{"value":"522635","label":"麻江县"},{"value":"522636","label":"丹寨县"}]},{"value":"522700","label":"黔南布依族苗族自治州","children":[{"value":"522701","label":"都匀市"},{"value":"522702","label":"福泉市"},{"value":"522722","label":"荔波县"},{"value":"522723","label":"贵定县"},{"value":"522725","label":"瓮安县"},{"value":"522726","label":"独山县"},{"value":"522727","label":"平塘县"},{"value":"522728","label":"罗甸县"},{"value":"522729","label":"长顺县"},{"value":"522730","label":"龙里县"},{"value":"522731","label":"惠水县"},{"value":"522732","label":"三都水族自治县"}]}]},{"label":"云南省","value":"530000","children":[{"value":"530100","label":"昆明市","children":[{"value":"530102","label":"五华区"},{"value":"530103","label":"盘龙区"},{"value":"530111","label":"官渡区"},{"value":"530112","label":"西山区"},{"value":"530113","label":"东川区"},{"value":"530121","label":"呈贡县"},{"value":"530122","label":"晋宁县"},{"value":"530124","label":"富民县"},{"value":"530125","label":"宜良县"},{"value":"530126","label":"石林彝族自治县"},{"value":"530127","label":"嵩明县"},{"value":"530128","label":"禄劝彝族苗族自治县"},{"value":"530129","label":"寻甸回族彝族自治县"},{"value":"530181","label":"安宁市"}]},{"value":"530300","label":"曲靖市","children":[{"value":"530302","label":"麒麟区"},{"value":"530321","label":"马龙县"},{"value":"530322","label":"陆良县"},{"value":"530323","label":"师宗县"},{"value":"530324","label":"罗平县"},{"value":"530325","label":"富源县"},{"value":"530326","label":"会泽县"},{"value":"530328","label":"沾益县"},{"value":"530381","label":"宣威市"}]},{"value":"530400","label":"玉溪市","children":[{"value":"530402","label":"红塔区"},{"value":"530421","label":"江川县"},{"value":"530422","label":"澄江县"},{"value":"530423","label":"通海县"},{"value":"530424","label":"华宁县"},{"value":"530425","label":"易门县"},{"value":"530426","label":"峨山彝族自治县"},{"value":"530427","label":"新平彝族傣族自治县"},{"value":"530428","label":"元江哈尼族彝族傣族自治县"}]},{"value":"530500","label":"保山市","children":[{"value":"530502","label":"隆阳区"},{"value":"530521","label":"施甸县"},{"value":"530522","label":"腾冲县"},{"value":"530523","label":"龙陵县"},{"value":"530524","label":"昌宁县"}]},{"value":"530600","label":"昭通市","children":[{"value":"530602","label":"昭阳区"},{"value":"530621","label":"鲁甸县"},{"value":"530622","label":"巧家县"},{"value":"530623","label":"盐津县"},{"value":"530624","label":"大关县"},{"value":"530625","label":"永善县"},{"value":"530626","label":"绥江县"},{"value":"530627","label":"镇雄县"},{"value":"530628","label":"彝良县"},{"value":"530629","label":"威信县"},{"value":"530630","label":"水富县"}]},{"value":"530700","label":"丽江市","children":[{"value":"530702","label":"古城区"},{"value":"530721","label":"玉龙纳西族自治县"},{"value":"530722","label":"永胜县"},{"value":"530723","label":"华坪县"},{"value":"530724","label":"宁蒗彝族自治县"}]},{"value":"530800","label":"普洱市","children":[{"value":"530802","label":"思茅区"},{"value":"530821","label":"宁洱哈尼族彝族自治县"},{"value":"530822","label":"墨江哈尼族自治县"},{"value":"530823","label":"景东彝族自治县"},{"value":"530824","label":"景谷傣族彝族自治县"},{"value":"530825","label":"镇沅彝族哈尼族拉祜族自治县"},{"value":"530826","label":"江城哈尼族彝族自治县"},{"value":"530827","label":"孟连傣族拉祜族佤族自治县"},{"value":"530828","label":"澜沧拉祜族自治县"},{"value":"530829","label":"西盟佤族自治县"}]},{"value":"530900","label":"临沧市","children":[{"value":"530902","label":"临翔区"},{"value":"530921","label":"凤庆县"},{"value":"530922","label":"云县"},{"value":"530923","label":"永德县"},{"value":"530924","label":"镇康县"},{"value":"530925","label":"双江拉祜族佤族布朗族傣族自治县"},{"value":"530926","label":"耿马傣族佤族自治县"},{"value":"530927","label":"沧源佤族自治县"}]},{"value":"532300","label":"楚雄彝族自治州","children":[{"value":"532301","label":"楚雄市"},{"value":"532322","label":"双柏县"},{"value":"532323","label":"牟定县"},{"value":"532324","label":"南华县"},{"value":"532325","label":"姚安县"},{"value":"532326","label":"大姚县"},{"value":"532327","label":"永仁县"},{"value":"532328","label":"元谋县"},{"value":"532329","label":"武定县"},{"value":"532331","label":"禄丰县"}]},{"value":"532500","label":"红河哈尼族彝族自治州","children":[{"value":"532501","label":"个旧市"},{"value":"532502","label":"开远市"},{"value":"532522","label":"蒙自县"},{"value":"532523","label":"屏边苗族自治县"},{"value":"532524","label":"建水县"},{"value":"532525","label":"石屏县"},{"value":"532526","label":"弥勒县"},{"value":"532527","label":"泸西县"},{"value":"532528","label":"元阳县"},{"value":"532529","label":"红河县"},{"value":"532530","label":"金平苗族瑶族傣族自治县"},{"value":"532531","label":"绿春县"},{"value":"532532","label":"河口瑶族自治县"}]},{"value":"532600","label":"文山壮族苗族自治州","children":[{"value":"532621","label":"文山县"},{"value":"532622","label":"砚山县"},{"value":"532623","label":"西畴县"},{"value":"532624","label":"麻栗坡县"},{"value":"532625","label":"马关县"},{"value":"532626","label":"丘北县"},{"value":"532627","label":"广南县"},{"value":"532628","label":"富宁县"}]},{"value":"532800","label":"西双版纳傣族自治州","children":[{"value":"532801","label":"景洪市"},{"value":"532822","label":"勐海县"},{"value":"532823","label":"勐腊县"}]},{"value":"532900","label":"大理白族自治州","children":[{"value":"532901","label":"大理市"},{"value":"532922","label":"漾濞彝族自治县"},{"value":"532923","label":"祥云县"},{"value":"532924","label":"宾川县"},{"value":"532925","label":"弥渡县"},{"value":"532926","label":"南涧彝族自治县"},{"value":"532927","label":"巍山彝族回族自治县"},{"value":"532928","label":"永平县"},{"value":"532929","label":"云龙县"},{"value":"532930","label":"洱源县"},{"value":"532931","label":"剑川县"},{"value":"532932","label":"鹤庆县"}]},{"value":"533100","label":"德宏傣族景颇族自治州","children":[{"value":"533102","label":"瑞丽市"},{"value":"533103","label":"潞西市"},{"value":"533122","label":"梁河县"},{"value":"533123","label":"盈江县"},{"value":"533124","label":"陇川县"}]},{"value":"533300","label":"怒江傈僳族自治州","children":[{"value":"533321","label":"泸水县"},{"value":"533323","label":"福贡县"},{"value":"533324","label":"贡山独龙族怒族自治县"},{"value":"533325","label":"兰坪白族普米族自治县"}]},{"value":"533400","label":"迪庆藏族自治州","children":[{"value":"533421","label":"香格里拉县"},{"value":"533422","label":"德钦县"},{"value":"533423","label":"维西傈僳族自治县"}]}]},{"label":"西藏自治区","value":"540000","children":[{"value":"540100","label":"拉萨市","children":[{"value":"540102","label":"城关区"},{"value":"540121","label":"林周县"},{"value":"540122","label":"当雄县"},{"value":"540123","label":"尼木县"},{"value":"540124","label":"曲水县"},{"value":"540125","label":"堆龙德庆县"},{"value":"540126","label":"达孜县"},{"value":"540127","label":"墨竹工卡县"}]},{"value":"542100","label":"昌都地区","children":[{"value":"542121","label":"昌都县"},{"value":"542122","label":"江达县"},{"value":"542123","label":"贡觉县"},{"value":"542124","label":"类乌齐县"},{"value":"542125","label":"丁青县"},{"value":"542126","label":"察雅县"},{"value":"542127","label":"八宿县"},{"value":"542128","label":"左贡县"},{"value":"542129","label":"芒康县"},{"value":"542132","label":"洛隆县"},{"value":"542133","label":"边坝县"}]},{"value":"542200","label":"山南地区","children":[{"value":"542221","label":"乃东县"},{"value":"542222","label":"扎囊县"},{"value":"542223","label":"贡嘎县"},{"value":"542224","label":"桑日县"},{"value":"542225","label":"琼结县"},{"value":"542226","label":"曲松县"},{"value":"542227","label":"措美县"},{"value":"542228","label":"洛扎县"},{"value":"542229","label":"加查县"},{"value":"542231","label":"隆子县"},{"value":"542232","label":"错那县"},{"value":"542233","label":"浪卡子县"}]},{"value":"542300","label":"日喀则地区","children":[{"value":"542301","label":"日喀则市"},{"value":"542322","label":"南木林县"},{"value":"542323","label":"江孜县"},{"value":"542324","label":"定日县"},{"value":"542325","label":"萨迦县"},{"value":"542326","label":"拉孜县"},{"value":"542327","label":"昂仁县"},{"value":"542328","label":"谢通门县"},{"value":"542329","label":"白朗县"},{"value":"542330","label":"仁布县"},{"value":"542331","label":"康马县"},{"value":"542332","label":"定结县"},{"value":"542333","label":"仲巴县"},{"value":"542334","label":"亚东县"},{"value":"542335","label":"吉隆县"},{"value":"542336","label":"聂拉木县"},{"value":"542337","label":"萨嘎县"},{"value":"542338","label":"岗巴县"}]},{"value":"542400","label":"那曲地区","children":[{"value":"542421","label":"那曲县"},{"value":"542422","label":"嘉黎县"},{"value":"542423","label":"比如县"},{"value":"542424","label":"聂荣县"},{"value":"542425","label":"安多县"},{"value":"542426","label":"申扎县"},{"value":"542427","label":"索县"},{"value":"542428","label":"班戈县"},{"value":"542429","label":"巴青县"},{"value":"542430","label":"尼玛县"}]},{"value":"542500","label":"阿里地区","children":[{"value":"542521","label":"普兰县"},{"value":"542522","label":"札达县"},{"value":"542523","label":"噶尔县"},{"value":"542524","label":"日土县"},{"value":"542525","label":"革吉县"},{"value":"542526","label":"改则县"},{"value":"542527","label":"措勤县"}]},{"value":"542600","label":"林芝地区","children":[{"value":"542621","label":"林芝县"},{"value":"542622","label":"工布江达县"},{"value":"542623","label":"米林县"},{"value":"542624","label":"墨脱县"},{"value":"542625","label":"波密县"},{"value":"542626","label":"察隅县"},{"value":"542627","label":"朗县"}]}]},{"label":"陕西省","value":"610000","children":[{"value":"610100","label":"西安市","children":[{"value":"610102","label":"新城区"},{"value":"610103","label":"碑林区"},{"value":"610104","label":"莲湖区"},{"value":"610111","label":"灞桥区"},{"value":"610112","label":"未央区"},{"value":"610113","label":"雁塔区"},{"value":"610114","label":"阎良区"},{"value":"610115","label":"临潼区"},{"value":"610116","label":"长安区"},{"value":"610122","label":"蓝田县"},{"value":"610124","label":"周至县"},{"value":"610125","label":"户县"},{"value":"610126","label":"高陵县"}]},{"value":"610200","label":"铜川市","children":[{"value":"610202","label":"王益区"},{"value":"610203","label":"印台区"},{"value":"610204","label":"耀州区"},{"value":"610222","label":"宜君县"}]},{"value":"610300","label":"宝鸡市","children":[{"value":"610302","label":"渭滨区"},{"value":"610303","label":"金台区"},{"value":"610304","label":"陈仓区"},{"value":"610322","label":"凤翔县"},{"value":"610323","label":"岐山县"},{"value":"610324","label":"扶风县"},{"value":"610326","label":"眉县"},{"value":"610327","label":"陇县"},{"value":"610328","label":"千阳县"},{"value":"610329","label":"麟游县"},{"value":"610330","label":"凤县"},{"value":"610331","label":"太白县"}]},{"value":"610400","label":"咸阳市","children":[{"value":"610402","label":"秦都区"},{"value":"610403","label":"杨陵区"},{"value":"610404","label":"渭城区"},{"value":"610422","label":"三原县"},{"value":"610423","label":"泾阳县"},{"value":"610424","label":"乾县"},{"value":"610425","label":"礼泉县"},{"value":"610426","label":"永寿县"},{"value":"610427","label":"彬县"},{"value":"610428","label":"长武县"},{"value":"610429","label":"旬邑县"},{"value":"610430","label":"淳化县"},{"value":"610431","label":"武功县"},{"value":"610481","label":"兴平市"}]},{"value":"610500","label":"渭南市","children":[{"value":"610502","label":"临渭区"},{"value":"610521","label":"华县"},{"value":"610522","label":"潼关县"},{"value":"610523","label":"大荔县"},{"value":"610524","label":"合阳县"},{"value":"610525","label":"澄城县"},{"value":"610526","label":"蒲城县"},{"value":"610527","label":"白水县"},{"value":"610528","label":"富平县"},{"value":"610581","label":"韩城市"},{"value":"610582","label":"华阴市"}]},{"value":"610600","label":"延安市","children":[{"value":"610602","label":"宝塔区"},{"value":"610621","label":"延长县"},{"value":"610622","label":"延川县"},{"value":"610623","label":"子长县"},{"value":"610624","label":"安塞县"},{"value":"610625","label":"志丹县"},{"value":"610626","label":"吴起县"},{"value":"610627","label":"甘泉县"},{"value":"610628","label":"富县"},{"value":"610629","label":"洛川县"},{"value":"610630","label":"宜川县"},{"value":"610631","label":"黄龙县"},{"value":"610632","label":"黄陵县"}]},{"value":"610700","label":"汉中市","children":[{"value":"610702","label":"汉台区"},{"value":"610721","label":"南郑县"},{"value":"610722","label":"城固县"},{"value":"610723","label":"洋县"},{"value":"610724","label":"西乡县"},{"value":"610725","label":"勉县"},{"value":"610726","label":"宁强县"},{"value":"610727","label":"略阳县"},{"value":"610728","label":"镇巴县"},{"value":"610729","label":"留坝县"},{"value":"610730","label":"佛坪县"}]},{"value":"610800","label":"榆林市","children":[{"value":"610802","label":"榆阳区"},{"value":"610821","label":"神木县"},{"value":"610822","label":"府谷县"},{"value":"610823","label":"横山县"},{"value":"610824","label":"靖边县"},{"value":"610825","label":"定边县"},{"value":"610826","label":"绥德县"},{"value":"610827","label":"米脂县"},{"value":"610828","label":"佳县"},{"value":"610829","label":"吴堡县"},{"value":"610830","label":"清涧县"},{"value":"610831","label":"子洲县"}]},{"value":"610900","label":"安康市","children":[{"value":"610902","label":"汉滨区"},{"value":"610921","label":"汉阴县"},{"value":"610922","label":"石泉县"},{"value":"610923","label":"宁陕县"},{"value":"610924","label":"紫阳县"},{"value":"610925","label":"岚皋县"},{"value":"610926","label":"平利县"},{"value":"610927","label":"镇坪县"},{"value":"610928","label":"旬阳县"},{"value":"610929","label":"白河县"}]},{"value":"611000","label":"商洛市","children":[{"value":"611002","label":"商州区"},{"value":"611021","label":"洛南县"},{"value":"611022","label":"丹凤县"},{"value":"611023","label":"商南县"},{"value":"611024","label":"山阳县"},{"value":"611025","label":"镇安县"},{"value":"611026","label":"柞水县"}]}]},{"label":"甘肃省","value":"620000","children":[{"value":"620100","label":"兰州市","children":[{"value":"620102","label":"城关区"},{"value":"620103","label":"七里河区"},{"value":"620104","label":"西固区"},{"value":"620105","label":"安宁区"},{"value":"620111","label":"红古区"},{"value":"620121","label":"永登县"},{"value":"620122","label":"皋兰县"},{"value":"620123","label":"榆中县"}]},{"value":"620200","label":"嘉峪关市"},{"value":"620300","label":"金昌市","children":[{"value":"620302","label":"金川区"},{"value":"620321","label":"永昌县"}]},{"value":"620400","label":"白银市","children":[{"value":"620402","label":"白银区"},{"value":"620403","label":"平川区"},{"value":"620421","label":"靖远县"},{"value":"620422","label":"会宁县"},{"value":"620423","label":"景泰县"}]},{"value":"620500","label":"天水市","children":[{"value":"620502","label":"秦州区"},{"value":"620503","label":"麦积区"},{"value":"620521","label":"清水县"},{"value":"620522","label":"秦安县"},{"value":"620523","label":"甘谷县"},{"value":"620524","label":"武山县"},{"value":"620525","label":"张家川回族自治县"}]},{"value":"620600","label":"武威市","children":[{"value":"620602","label":"凉州区"},{"value":"620621","label":"民勤县"},{"value":"620622","label":"古浪县"},{"value":"620623","label":"天祝藏族自治县"}]},{"value":"620700","label":"张掖市","children":[{"value":"620702","label":"甘州区"},{"value":"620721","label":"肃南裕固族自治县"},{"value":"620722","label":"民乐县"},{"value":"620723","label":"临泽县"},{"value":"620724","label":"高台县"},{"value":"620725","label":"山丹县"}]},{"value":"620800","label":"平凉市","children":[{"value":"620802","label":"崆峒区"},{"value":"620821","label":"泾川县"},{"value":"620822","label":"灵台县"},{"value":"620823","label":"崇信县"},{"value":"620824","label":"华亭县"},{"value":"620825","label":"庄浪县"},{"value":"620826","label":"静宁县"}]},{"value":"620900","label":"酒泉市","children":[{"value":"620902","label":"肃州区"},{"value":"620921","label":"金塔县"},{"value":"620922","label":"安西县"},{"value":"620923","label":"肃北蒙古族自治县"},{"value":"620924","label":"阿克塞哈萨克族自治县"},{"value":"620981","label":"玉门市"},{"value":"620982","label":"敦煌市"}]},{"value":"621000","label":"庆阳市","children":[{"value":"621002","label":"西峰区"},{"value":"621021","label":"庆城县"},{"value":"621022","label":"环县"},{"value":"621023","label":"华池县"},{"value":"621024","label":"合水县"},{"value":"621025","label":"正宁县"},{"value":"621026","label":"宁县"},{"value":"621027","label":"镇原县"}]},{"value":"621100","label":"定西市","children":[{"value":"621102","label":"安定区"},{"value":"621121","label":"通渭县"},{"value":"621122","label":"陇西县"},{"value":"621123","label":"渭源县"},{"value":"621124","label":"临洮县"},{"value":"621125","label":"漳县"},{"value":"621126","label":"岷县"}]},{"value":"621200","label":"陇南市","children":[{"value":"621202","label":"武都区"},{"value":"621221","label":"成县"},{"value":"621222","label":"文县"},{"value":"621223","label":"宕昌县"},{"value":"621224","label":"康县"},{"value":"621225","label":"西和县"},{"value":"621226","label":"礼县"},{"value":"621227","label":"徽县"},{"value":"621228","label":"两当县"}]},{"value":"622900","label":"临夏回族自治州","children":[{"value":"622901","label":"临夏市"},{"value":"622921","label":"临夏县"},{"value":"622922","label":"康乐县"},{"value":"622923","label":"永靖县"},{"value":"622924","label":"广河县"},{"value":"622925","label":"和政县"},{"value":"622926","label":"东乡族自治县"},{"value":"622927","label":"积石山保安族东乡族撒拉族自治县"}]},{"value":"623000","label":"甘南藏族自治州","children":[{"value":"623001","label":"合作市"},{"value":"623021","label":"临潭县"},{"value":"623022","label":"卓尼县"},{"value":"623023","label":"舟曲县"},{"value":"623024","label":"迭部县"},{"value":"623025","label":"玛曲县"},{"value":"623026","label":"碌曲县"},{"value":"623027","label":"夏河县"}]}]},{"label":"青海省","value":"630000","children":[{"value":"630100","label":"西宁市","children":[{"value":"630102","label":"城东区"},{"value":"630103","label":"城中区"},{"value":"630104","label":"城西区"},{"value":"630105","label":"城北区"},{"value":"630121","label":"大通回族土族自治县"},{"value":"630122","label":"湟中县"},{"value":"630123","label":"湟源县"}]},{"value":"632100","label":"海东地区","children":[{"value":"632121","label":"平安县"},{"value":"632122","label":"民和回族土族自治县"},{"value":"632123","label":"乐都县"},{"value":"632126","label":"互助土族自治县"},{"value":"632127","label":"化隆回族自治县"},{"value":"632128","label":"循化撒拉族自治县"}]},{"value":"632200","label":"海北藏族自治州","children":[{"value":"632221","label":"门源回族自治县"},{"value":"632222","label":"祁连县"},{"value":"632223","label":"海晏县"},{"value":"632224","label":"刚察县"}]},{"value":"632300","label":"黄南藏族自治州","children":[{"value":"632321","label":"同仁县"},{"value":"632322","label":"尖扎县"},{"value":"632323","label":"泽库县"},{"value":"632324","label":"河南蒙古族自治县"}]},{"value":"632500","label":"海南藏族自治州","children":[{"value":"632521","label":"共和县"},{"value":"632522","label":"同德县"},{"value":"632523","label":"贵德县"},{"value":"632524","label":"兴海县"},{"value":"632525","label":"贵南县"}]},{"value":"632600","label":"果洛藏族自治州","children":[{"value":"632621","label":"玛沁县"},{"value":"632622","label":"班玛县"},{"value":"632623","label":"甘德县"},{"value":"632624","label":"达日县"},{"value":"632625","label":"久治县"},{"value":"632626","label":"玛多县"}]},{"value":"632700","label":"玉树藏族自治州","children":[{"value":"632721","label":"玉树县"},{"value":"632722","label":"杂多县"},{"value":"632723","label":"称多县"},{"value":"632724","label":"治多县"},{"value":"632725","label":"囊谦县"},{"value":"632726","label":"曲麻莱县"}]},{"value":"632800","label":"海西蒙古族藏族自治州","children":[{"value":"632801","label":"格尔木市"},{"value":"632802","label":"德令哈市"},{"value":"632821","label":"乌兰县"},{"value":"632822","label":"都兰县"},{"value":"632823","label":"天峻县"}]}]},{"label":"宁夏回族自治区","value":"640000","children":[{"value":"640100","label":"银川市","children":[{"value":"640104","label":"兴庆区"},{"value":"640105","label":"西夏区"},{"value":"640106","label":"金凤区"},{"value":"640121","label":"永宁县"},{"value":"640122","label":"贺兰县"},{"value":"640181","label":"灵武市"}]},{"value":"640200","label":"石嘴山市","children":[{"value":"640202","label":"大武口区"},{"value":"640205","label":"惠农区"},{"value":"640221","label":"平罗县"}]},{"value":"640300","label":"吴忠市","children":[{"value":"640302","label":"利通区"},{"value":"640303","label":"红寺堡区"},{"value":"640323","label":"盐池县"},{"value":"640324","label":"同心县"},{"value":"640381","label":"青铜峡市"}]},{"value":"640400","label":"固原市","children":[{"value":"640402","label":"原州区"},{"value":"640422","label":"西吉县"},{"value":"640423","label":"隆德县"},{"value":"640424","label":"泾源县"},{"value":"640425","label":"彭阳县"}]},{"value":"640500","label":"中卫市","children":[{"value":"640502","label":"沙坡头区"},{"value":"640521","label":"中宁县"},{"value":"640522","label":"海原县"}]}]},{"label":"新疆维吾尔自治区","value":"650000","children":[{"value":"650100","label":"乌鲁木齐市","children":[{"value":"650102","label":"天山区"},{"value":"650103","label":"沙依巴克区"},{"value":"650104","label":"新市区"},{"value":"650105","label":"水磨沟区"},{"value":"650106","label":"头屯河区"},{"value":"650107","label":"达坂城区"},{"value":"650108","label":"东山区"},{"value":"650109","label":"米东区"},{"value":"650121","label":"乌鲁木齐县"}]},{"value":"650200","label":"克拉玛依市","children":[{"value":"650202","label":"独山子区"},{"value":"650203","label":"克拉玛依区"},{"value":"650204","label":"白碱滩区"},{"value":"650205","label":"乌尔禾区"}]},{"value":"652100","label":"吐鲁番地区","children":[{"value":"652101","label":"吐鲁番市"},{"value":"652122","label":"鄯善县"},{"value":"652123","label":"托克逊县"}]},{"value":"652200","label":"哈密地区","children":[{"value":"652201","label":"哈密市"},{"value":"652222","label":"巴里坤哈萨克自治县"},{"value":"652223","label":"伊吾县"}]},{"value":"652300","label":"昌吉回族自治州","children":[{"value":"652301","label":"昌吉市"},{"value":"652302","label":"阜康市"},{"value":"652303","label":"米泉市"},{"value":"652323","label":"呼图壁县"},{"value":"652324","label":"玛纳斯县"},{"value":"652325","label":"奇台县"},{"value":"652327","label":"吉木萨尔县"},{"value":"652328","label":"木垒哈萨克自治县"}]},{"value":"652700","label":"博尔塔拉蒙古自治州","children":[{"value":"652701","label":"博乐市"},{"value":"652722","label":"精河县"},{"value":"652723","label":"温泉县"}]},{"value":"652800","label":"巴音郭楞蒙古自治州","children":[{"value":"652801","label":"库尔勒市"},{"value":"652822","label":"轮台县"},{"value":"652823","label":"尉犁县"},{"value":"652824","label":"若羌县"},{"value":"652825","label":"且末县"},{"value":"652826","label":"焉耆回族自治县"},{"value":"652827","label":"和静县"},{"value":"652828","label":"和硕县"},{"value":"652829","label":"博湖县"}]},{"value":"652900","label":"阿克苏地区","children":[{"value":"652901","label":"阿克苏市"},{"value":"652922","label":"温宿县"},{"value":"652923","label":"库车县"},{"value":"652924","label":"沙雅县"},{"value":"652925","label":"新和县"},{"value":"652926","label":"拜城县"},{"value":"652927","label":"乌什县"},{"value":"652928","label":"阿瓦提县"},{"value":"652929","label":"柯坪县"}]},{"value":"653000","label":"克孜勒苏柯尔克孜自治州","children":[{"value":"653001","label":"阿图什市"},{"value":"653022","label":"阿克陶县"},{"value":"653023","label":"阿合奇县"},{"value":"653024","label":"乌恰县"}]},{"value":"653100","label":"喀什地区","children":[{"value":"653101","label":"喀什市"},{"value":"653121","label":"疏附县"},{"value":"653122","label":"疏勒县"},{"value":"653123","label":"英吉沙县"},{"value":"653124","label":"泽普县"},{"value":"653125","label":"莎车县"},{"value":"653126","label":"叶城县"},{"value":"653127","label":"麦盖提县"},{"value":"653128","label":"岳普湖县"},{"value":"653129","label":"伽师县"},{"value":"653130","label":"巴楚县"},{"value":"653131","label":"塔什库尔干塔吉克自治县"}]},{"value":"653200","label":"和田地区","children":[{"value":"653201","label":"和田市"},{"value":"653221","label":"和田县"},{"value":"653222","label":"墨玉县"},{"value":"653223","label":"皮山县"},{"value":"653224","label":"洛浦县"},{"value":"653225","label":"策勒县"},{"value":"653226","label":"于田县"},{"value":"653227","label":"民丰县"}]},{"value":"654000","label":"伊犁哈萨克自治州","children":[{"value":"654002","label":"伊宁市"},{"value":"654003","label":"奎屯市"},{"value":"654021","label":"伊宁县"},{"value":"654022","label":"察布查尔锡伯自治县"},{"value":"654023","label":"霍城县"},{"value":"654024","label":"巩留县"},{"value":"654025","label":"新源县"},{"value":"654026","label":"昭苏县"},{"value":"654027","label":"特克斯县"},{"value":"654028","label":"尼勒克县"}]},{"value":"654200","label":"塔城地区","children":[{"value":"654201","label":"塔城市"},{"value":"654202","label":"乌苏市"},{"value":"654221","label":"额敏县"},{"value":"654223","label":"沙湾县"},{"value":"654224","label":"托里县"},{"value":"654225","label":"裕民县"},{"value":"654226","label":"和布克赛尔蒙古自治县"}]},{"value":"654300","label":"阿勒泰地区","children":[{"value":"654301","label":"阿勒泰市"},{"value":"654321","label":"布尔津县"},{"value":"654322","label":"富蕴县"},{"value":"654323","label":"福海县"},{"value":"654324","label":"哈巴河县"},{"value":"654325","label":"青河县"},{"value":"654326","label":"吉木乃县"}]},{"value":"659001","label":"石河子市"},{"value":"659002","label":"阿拉尔市"},{"value":"659003","label":"图木舒克市"},{"value":"659004","label":"五家渠市"}]},{"label":"台湾省","value":"710000","children":[{"value":"710100","label":"台北市","children":[{"value":"710101","label":"中正区"},{"value":"710102","label":"大同区"},{"value":"710103","label":"中山区"},{"value":"710104","label":"松山区"},{"value":"710105","label":"大安区"},{"value":"710106","label":"万华区"},{"value":"710107","label":"信义区"},{"value":"710108","label":"士林区"},{"value":"710109","label":"北投区"},{"value":"710110","label":"内湖区"},{"value":"710111","label":"南港区"},{"value":"710112","label":"文山区"}]},{"value":"710200","label":"高雄市","children":[{"value":"710201","label":"新兴区"},{"value":"710202","label":"前金区"},{"value":"710203","label":"芩雅区"},{"value":"710204","label":"盐埕区"},{"value":"710205","label":"鼓山区"},{"value":"710206","label":"旗津区"},{"value":"710207","label":"前镇区"},{"value":"710208","label":"三民区"},{"value":"710209","label":"左营区"},{"value":"710210","label":"楠梓区"},{"value":"710211","label":"小港区"}]},{"value":"710300","label":"台南市","children":[{"value":"710301","label":"中西区"},{"value":"710302","label":"东区"},{"value":"710303","label":"南区"},{"value":"710304","label":"北区"},{"value":"710305","label":"安平区"},{"value":"710306","label":"安南区"}]},{"value":"710400","label":"台中市","children":[{"value":"710401","label":"中区"},{"value":"710402","label":"东区"},{"value":"710403","label":"南区"},{"value":"710404","label":"西区"},{"value":"710405","label":"北区"},{"value":"710406","label":"北屯区"},{"value":"710407","label":"西屯区"},{"value":"710408","label":"南屯区"}]},{"value":"710500","label":"金门县"},{"value":"710600","label":"南投县"},{"value":"710700","label":"基隆市","children":[{"value":"710701","label":"仁爱区"},{"value":"710702","label":"信义区"},{"value":"710703","label":"中正区"},{"value":"710704","label":"中山区"},{"value":"710705","label":"安乐区"},{"value":"710706","label":"暖暖区"},{"value":"710707","label":"七堵区"}]},{"value":"710800","label":"新竹市","children":[{"value":"710801","label":"东区"},{"value":"710802","label":"北区"},{"value":"710803","label":"香山区"}]},{"value":"710900","label":"嘉义市","children":[{"value":"710901","label":"东区"},{"value":"710902","label":"西区"}]},{"value":"711100","label":"新北市"},{"value":"711200","label":"宜兰县"},{"value":"711300","label":"新竹县"},{"value":"711400","label":"桃园县"},{"value":"711500","label":"苗栗县"},{"value":"711700","label":"彰化县"},{"value":"711900","label":"嘉义县"},{"value":"712100","label":"云林县"},{"value":"712400","label":"屏东县"},{"value":"712500","label":"台东县"},{"value":"712600","label":"花莲县"},{"value":"712700","label":"澎湖县"}]},{"label":"香港特别行政区","value":"810000","children":[{"value":"810100","label":"香港岛","children":[{"value":"810101","label":"中西区"},{"value":"810102","label":"湾仔"},{"value":"810103","label":"东区"},{"value":"810104","label":"南区"}]},{"value":"810200","label":"九龙","children":[{"value":"810201","label":"九龙城区"},{"value":"810202","label":"油尖旺区"},{"value":"810203","label":"深水埗区"},{"value":"810204","label":"黄大仙区"},{"value":"810205","label":"观塘区"}]},{"value":"810300","label":"新界","children":[{"value":"810301","label":"北区"},{"value":"810302","label":"大埔区"},{"value":"810303","label":"沙田区"},{"value":"810304","label":"西贡区"},{"value":"810305","label":"元朗区"},{"value":"810306","label":"屯门区"},{"value":"810307","label":"荃湾区"},{"value":"810308","label":"葵青区"},{"value":"810309","label":"离岛区"}]}]},{"label":"澳门特别行政区","value":"820000","children":[{"value":"820100","label":"澳门半岛"},{"value":"820200","label":"离岛"}]},{"label":"海外","value":"990000","children":[{"value":"990100","label":"海外"}]}] diff --git a/src/api/layout/index.ts b/src/api/layout/index.ts new file mode 100644 index 0000000..8ee8b60 --- /dev/null +++ b/src/api/layout/index.ts @@ -0,0 +1,116 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { User } from '@/api/system/user/model'; +import type { UpdatePasswordParam } from './model'; +import type {CmsWebsite} from "@/api/cms/cmsWebsite/model"; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 获取网站信息 + */ +export async function getShopInfo() { + const res = await request.get>( + '/shop/getShopInfo' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取当前登录的用户信息、菜单、权限、角色 + */ +export async function getUserInfo(): Promise { + const res = await request.get>(SERVER_API_URL + '/auth/user'); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function updateUserInfo(data: User): Promise { + const res = await request.put>( + SERVER_API_URL + '/auth/user', + data + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取服务器时间(实时) + * @return + */ +export async function getServerTime() { + const res = await request.get>( + '/cms/website/getServerTime' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取未来7天的日期 + * @return + */ +export async function getNext7day() { + const res = await request.get>( + '/cms/website/getNext7day' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 向子模块传递token + * @param url + */ +export async function transferToken(url: string): Promise { + const res = await request.get>(url); + return Promise.reject(new Error(res.message)); +} + +/** + * 修改当前登录的用户密码 + */ +export async function updatePassword( + data: UpdatePasswordParam +): Promise { + const res = await request.put>( + '/auth/password', + data + ); + if (res.code === 0) { + return res.message ?? '修改成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取微信小程序登录凭证 + */ + +export async function getWxOpenId(data: any) { + const res = await request.post>(SERVER_API_URL + '/wx-login/getWxOpenId',data); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + + +// 获取微信openId +export async function loginByOpenId(data: any) { + const res = await request.post>(SERVER_API_URL + '/wx-login/loginByOpenId', data); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/layout/model/index.ts b/src/api/layout/model/index.ts new file mode 100644 index 0000000..a3edbc1 --- /dev/null +++ b/src/api/layout/model/index.ts @@ -0,0 +1,29 @@ + +/** + * 首页布局样式 + */ +export interface Layout { + // 内容区域的宽度 + width?: string; + // 文字颜色 + color?: string; + // 高亮颜色 + hover?: string; + // 背景颜色 + backgroundColor?: string; + headerStyle?: any; + siteNameStyle?: any; + showBanner?: boolean; + // 背景图片 + banner?: string; +} + +/** + * 修改密码参数 + */ +export interface UpdatePasswordParam { + // 新密码 + password: string; + // 原始密码 + oldPassword: string; +} diff --git a/src/api/passport/login/index.ts b/src/api/passport/login/index.ts new file mode 100644 index 0000000..0104c73 --- /dev/null +++ b/src/api/passport/login/index.ts @@ -0,0 +1,68 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { + LoginParam, + LoginResult, + CaptchaResult, + SmsCaptchaResult +} from './model'; +import {saveStorageByLoginUser, SERVER_API_URL} from "@/utils/server"; + +/** + * 账号密码登录 + */ +export async function login(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/login', + data + ); + if (res.code === 0) { + if (res.data?.user && res.data?.access_token) { + saveStorageByLoginUser(res.data.access_token, res.data.user) + } + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取验证码 + */ +export async function getCaptcha() { + const res = await request.get>( + SERVER_API_URL + '/captcha', + {} + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function loginBySms(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/loginBySms', + data + ); + if (res.code === 0) { + if(res.data?.user){ + saveStorageByLoginUser(`${res.data?.access_token}`, res.data?.user) + } + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 发送短信验证码 + */ +export async function sendSmsCaptcha(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/sendSmsCaptcha', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/passport/login/model/index.ts b/src/api/passport/login/model/index.ts new file mode 100644 index 0000000..abdd71d --- /dev/null +++ b/src/api/passport/login/model/index.ts @@ -0,0 +1,52 @@ +import type { User } from '@/api/system/user/model'; +/** + * 登录参数 + */ +export interface LoginParam { + // 账号 + username?: string; + // 密码 + password?: string; + // 租户id + tenantId?: number; + // 是否记住密码 + remember?: boolean; + // 手机号码 + phone?: string; + // 短信验证码 + code?: string; + // 图形验证码Key + captchaKey?: string; + // 图形验证码文本 + captchaText?: string; +} + +/** + * 登录返回结果 + */ +export interface LoginResult { + // token + access_token?: string; + // 用户信息 + user?: User; +} + +/** + * 图形验证码返回结果 + */ +export interface CaptchaResult { + // 验证码Key + key?: string; + // 图形验证码base64数据 + base64: string; + // 验证码文本 + text: string; +} + +/** + * 短信验证码返回结果 + */ +export interface SmsCaptchaResult { + // 验证码文本 + text: string; +} diff --git a/src/api/passport/qr-login/index.ts b/src/api/passport/qr-login/index.ts new file mode 100644 index 0000000..bc4c85c --- /dev/null +++ b/src/api/passport/qr-login/index.ts @@ -0,0 +1,244 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import Taro from '@tarojs/taro'; +import {SERVER_API_URL} from "@/utils/server"; +import {getUserInfo} from "@/api/layout"; + +/** + * 扫码登录相关接口 + */ + +// 生成扫码token请求参数 +export interface GenerateQRTokenParam { + // 客户端类型:web, app, wechat + clientType?: string; + // 设备信息 + deviceInfo?: string; + // 过期时间(分钟) + expireMinutes?: number; +} + +// 生成扫码token响应 +export interface GenerateQRTokenResult { + // 扫码token + token: string; + // 二维码内容(通常是包含token的URL或JSON) + qrContent: string; + // 过期时间戳 + expireTime: number; + // 二维码图片URL(可选) + qrImageUrl?: string; +} + +// 扫码状态枚举 +export enum QRLoginStatus { + PENDING = 'pending', // 等待扫码 + SCANNED = 'scanned', // 已扫码,等待确认 + CONFIRMED = 'confirmed', // 已确认登录 + EXPIRED = 'expired', // 已过期 + CANCELLED = 'cancelled' // 已取消 +} + +// 检查扫码状态响应 +export interface QRLoginStatusResult { + // 当前状态 + status: QRLoginStatus; + // 状态描述 + message?: string; + // 如果已确认登录,返回JWT token + accessToken?: string; + // 用户信息 + userInfo?: { + userId: number; + nickname?: string; + avatar?: string; + phone?: string; + }; + // 剩余有效时间(秒) + remainingTime?: number; +} + +// 确认登录请求参数 +export interface ConfirmLoginParam { + // 扫码token + token: string; + // 用户ID + userId: number; + // 登录平台:web, app, wechat + platform?: string; + // 微信用户信息(当platform为wechat时) + wechatInfo?: { + openid?: string; + unionid?: string; + nickname?: string; + avatar?: string; + gender?: string; + }; + // 设备信息 + deviceInfo?: string; +} + +// 确认登录响应 +export interface ConfirmLoginResult { + // 是否成功 + success: boolean; + // 消息 + message: string; + // 登录用户信息 + userInfo?: { + userId: number; + nickname?: string; + avatar?: string; + phone?: string; + }; +} + +/** + * 生成扫码登录token + */ +export async function generateQRToken(data?: GenerateQRTokenParam) { + const res = await request.post>( + SERVER_API_URL + '/qr-login/generate', + { + clientType: 'wechat', + expireMinutes: 5, + ...data + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查扫码登录状态 + */ +export async function checkQRLoginStatus(token: string) { + const res = await request.get>( + SERVER_API_URL + `/qr-login/status/${token}` + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 确认扫码登录(通用接口) + */ +export async function confirmQRLogin(data: ConfirmLoginParam) { + const res = await request.post>( + SERVER_API_URL + '/qr-login/confirm', + data + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 微信小程序扫码登录确认(便捷接口) + */ +export async function confirmWechatQRLogin(token: string, userId: number) { + try { + // 获取微信用户信息 + const userInfo = await getUserInfo(); + + const data: ConfirmLoginParam = { + token, + userId, + platform: 'wechat', + wechatInfo: { + nickname: userInfo?.nickname, + avatar: userInfo?.avatar, + gender: userInfo?.sex + }, + deviceInfo: await getDeviceInfo() + }; + + const res = await request.post>( + SERVER_API_URL + '/qr-login/confirm', + data + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); + } catch (error: any) { + return Promise.reject(new Error(error.message || '确认登录失败')); + } +} + +/** + * 获取设备信息 + */ +async function getDeviceInfo() { + return new Promise((resolve) => { + Taro.getSystemInfo({ + success: (res) => { + const deviceInfo = { + platform: res.platform, + system: res.system, + version: res.version, + model: res.model, + brand: res.brand, + screenWidth: res.screenWidth, + screenHeight: res.screenHeight + }; + resolve(JSON.stringify(deviceInfo)); + }, + fail: () => { + resolve('unknown'); + } + }); + }); +} + +/** + * 解析二维码内容,提取token + */ +export function parseQRContent(qrContent: string): string | null { + try { + // 尝试解析JSON格式 + if (qrContent.startsWith('{')) { + const parsed = JSON.parse(qrContent); + return parsed.token || parsed.qrCodeKey || null; + } + + // 尝试解析URL格式 + if (qrContent.includes('http')) { + const url = new URL(qrContent); + // 支持多种参数名 + return url.searchParams.get('token') || + url.searchParams.get('qrCodeKey') || + url.searchParams.get('qr_code_key') || + null; + } + + // 尝试解析简单的key=value格式 + if (qrContent.includes('=')) { + const params = new URLSearchParams(qrContent); + return params.get('token') || + params.get('qrCodeKey') || + params.get('qr_code_key') || + null; + } + + // 如果是以qr-login:开头的格式 + if (qrContent.startsWith('qr-login:')) { + return qrContent.replace('qr-login:', ''); + } + + // 直接返回内容作为token(如果是32位以上的字符串) + if (qrContent.length >= 32) { + return qrContent; + } + + return null; + } catch (error) { + console.error('解析二维码内容失败:', error); + return null; + } +} diff --git a/src/api/shop/shopActivity/index.ts b/src/api/shop/shopActivity/index.ts new file mode 100644 index 0000000..db90974 --- /dev/null +++ b/src/api/shop/shopActivity/index.ts @@ -0,0 +1,110 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { + ShopActivity, + ShopActivityParam, + ActivitySignUpParams, + ActivityStats, +} from './model' +import { normalizeActivity } from './model' + +export type { ShopActivity, ActivityStatus, ActivityType } from './model' + +/** + * 分页查询活动 + */ +export async function pageShopActivity(params: ShopActivityParam) { + const res = await request.get>>( + '/shop/shop-activity/page', + params + ) + if (res.code === 0 && res.data) { + return { + ...res.data, + list: (res.data.list || []).map(normalizeActivity), + } + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询活动列表 + */ +export async function listShopActivity(params?: ShopActivityParam) { + const res = await request.get>( + '/shop/shop-activity', + params + ) + if (res.code === 0 && res.data) { + return res.data.map(normalizeActivity) + } + return Promise.reject(new Error(res.message)) +} + +/** + * 根据ID查询活动 + */ +export async function getShopActivity(id: number) { + const res = await request.get>( + '/shop/shop-activity/' + id + ) + if (res.code === 0 && res.data) { + return normalizeActivity(res.data) + } + return Promise.reject(new Error(res.message)) +} + +/** + * 报名活动 + */ +export async function signUpActivity(params: ActivitySignUpParams) { + const res = await request.post>( + '/shop/shop-activity/sign-up', + params + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 取消报名 + */ +export async function cancelSignUpActivity(activityId: number) { + const res = await request.post>( + '/shop/shop-activity/cancel-sign-up', + { activityId } + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 获取活动报名状态 + */ +export async function getSignUpStatus(activityId: number) { + const res = await request.get>( + '/shop/shop-activity/sign-up-status', + { activityId } + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 获取活动统计 + */ +export async function getActivityStats() { + const res = await request.get>( + '/shop/shop-activity/stats' + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopActivity/model/index.ts b/src/api/shop/shopActivity/model/index.ts new file mode 100644 index 0000000..b67d7de --- /dev/null +++ b/src/api/shop/shopActivity/model/index.ts @@ -0,0 +1,89 @@ +/** + * 活动模型 + */ + +// 活动类型(前端语义化) +export type ActivityType = 'discount' | 'full_reduction' | 'seckill' | 'group_buy' | 'flash_sale' + +// 活动状态(前端语义化) +export type ActivityStatus = 'upcoming' | 'ongoing' | 'ended' | 'cancelled' + +// 活动数据(与后端字段对齐) +export interface ShopActivity { + id: number + name: string + image: string + banner?: string + startTime: string + endTime: string + /** 后端返回整数: 0=未开始 1=进行中 2=已结束,前端通过 normalizeActivity 转为语义化字符串 */ + status: ActivityStatus | number + /** 后端返回整数: 1=满减 2=折扣 3=秒杀 4=拼团 */ + type: ActivityType | number + typeName?: string + description: string + participants?: number + maxParticipants?: number + discountRate?: number + reductionAmount?: number + minAmount?: number + rules?: string + tenantId?: number + createTime: string + updateTime?: string +} + +// 活动查询参数 +export interface ShopActivityParam { + page?: number + limit?: number + status?: number | ActivityStatus + type?: number | ActivityType + keywords?: string +} + +// 活动报名参数 +export interface ActivitySignUpParams { + activityId: number + userId?: number + contactPhone?: string + remark?: string +} + +// 活动统计 +export interface ActivityStats { + total: number + ongoing: number + upcoming: number + ended: number + totalParticipants: number +} + +// 后端整数状态 → 前端语义化状态 +export function normalizeActivityStatus(status: number | ActivityStatus): ActivityStatus { + if (typeof status === 'string') return status + const map: Record = { 0: 'upcoming', 1: 'ongoing', 2: 'ended' } + return map[status] ?? 'ended' +} + +// 后端整数类型 → 前端语义化类型 +export function normalizeActivityType(type: number | ActivityType): ActivityType { + if (typeof type === 'string') return type + const map: Record = { + 1: 'full_reduction', + 2: 'discount', + 3: 'seckill', + 4: 'group_buy', + } + return map[type] ?? 'discount' +} + +// 规范化活动对象(处理后端整数字段) +export function normalizeActivity(a: ShopActivity): ShopActivity & { status: ActivityStatus; type: ActivityType } { + return { + ...a, + participants: a.participants ?? 0, + status: normalizeActivityStatus(a.status as number), + type: normalizeActivityType(a.type as number), + } +} diff --git a/src/api/shop/shopAfterSale/index.ts b/src/api/shop/shopAfterSale/index.ts new file mode 100644 index 0000000..2820d18 --- /dev/null +++ b/src/api/shop/shopAfterSale/index.ts @@ -0,0 +1,154 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' + +// 售后类型 +export type AfterSaleType = 'refund' | 'return' | 'exchange' | 'repair' + +// 售后状态 +export type AfterSaleStatus = + | 'pending' // 待审核 + | 'approved' // 已同意 + | 'rejected' // 已拒绝 + | 'processing' // 处理中 + | 'completed' // 已完成 + | 'cancelled' // 已取消 + +// 售后进度记录 +export interface ProgressRecord { + id: string + time: string + status: string + description: string + operator?: string + remark?: string +} + +// 售后详情 +export interface AfterSaleDetail { + id: string + orderId: string + orderNo: string + goodsName?: string + type: AfterSaleType + status: AfterSaleStatus + reason: string + description: string + amount: number + applyTime: string + processTime?: string + completeTime?: string + rejectReason?: string + contactPhone?: string + evidenceImages: string[] + progressRecords: ProgressRecord[] +} + +// 售后申请参数 +export interface AfterSaleApplyParams { + orderId: string + type: AfterSaleType + reason: string + description?: string + amount?: number + contactPhone?: string + evidenceImages?: string[] + goodsItems?: Array<{ goodsId: string; quantity: number }> +} + +// 售后列表查询参数 +export interface AfterSaleListParams { + page?: number + pageSize?: number + status?: AfterSaleStatus + type?: AfterSaleType +} + +// 售后类型映射 +export const AFTER_SALE_TYPE_MAP: Record = { + refund: '退款', + return: '退货', + exchange: '换货', + repair: '维修', +} + +// 售后状态映射 +export const AFTER_SALE_STATUS_MAP: Record = { + pending: '待审核', + approved: '已同意', + rejected: '已拒绝', + processing: '处理中', + completed: '已完成', + cancelled: '已取消', +} + +// 格式化售后状态 +export const formatAfterSaleStatus = (status: AfterSaleStatus): { + text: string + color: string + icon: string +} => { + const statusMap: Record = { + pending: { text: '待审核', color: 'text-orange-500', icon: '⏳' }, + approved: { text: '已同意', color: 'text-green-500', icon: '✅' }, + rejected: { text: '已拒绝', color: 'text-red-500', icon: '❌' }, + processing: { text: '处理中', color: 'text-blue-500', icon: '🔄' }, + completed: { text: '已完成', color: 'text-green-500', icon: '✅' }, + cancelled: { text: '已取消', color: 'text-gray-400', icon: '⭕' }, + } + return statusMap[status] || { text: status, color: 'text-gray-400', icon: '📋' } +} + +/** + * 申请售后 + */ +export async function applyAfterSale(data: AfterSaleApplyParams) { + const res = await request.post>( + '/shop/shop-after-sale/apply', + data + ) + if (res.code === 0) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 分页查询售后列表 + */ +export async function pageAfterSaleList(params: AfterSaleListParams) { + const res = await request.get>>( + '/shop/shop-after-sale/page', + params + ) + if (res.code === 0) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询售后详情 + */ +export async function getAfterSaleDetail(id: string) { + const res = await request.get>( + '/shop/shop-after-sale/' + id + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 撤销售后申请 + */ +export async function cancelAfterSale(id: string) { + const res = await request.post>( + '/shop/shop-after-sale/cancel', + { id } + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopArticle/index.ts b/src/api/shop/shopArticle/index.ts new file mode 100644 index 0000000..68fb5c5 --- /dev/null +++ b/src/api/shop/shopArticle/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopArticle, ShopArticleParam } from './model'; + +/** + * 分页查询商品文章 + */ +export async function pageShopArticle(params: ShopArticleParam) { + const res = await request.get>>( + '/shop/shop-article/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商品文章列表 + */ +export async function listShopArticle(params?: ShopArticleParam) { + const res = await request.get>( + '/shop/shop-article', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商品文章 + */ +export async function addShopArticle(data: ShopArticle) { + const res = await request.post>( + '/shop/shop-article', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商品文章 + */ +export async function updateShopArticle(data: ShopArticle) { + const res = await request.put>( + '/shop/shop-article', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商品文章 + */ +export async function removeShopArticle(id?: number) { + const res = await request.del>( + '/shop/shop-article/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商品文章 + */ +export async function removeBatchShopArticle(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-article/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商品文章 + */ +export async function getShopArticle(id: number) { + const res = await request.get>( + '/shop/shop-article/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopArticle/model/index.ts b/src/api/shop/shopArticle/model/index.ts new file mode 100644 index 0000000..18e7b58 --- /dev/null +++ b/src/api/shop/shopArticle/model/index.ts @@ -0,0 +1,123 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商品文章 + */ +export interface ShopArticle { + // 文章ID + articleId?: number; + // 文章标题 + title?: string; + // 文章类型 0常规 1视频 + type?: number; + // 模型 + model?: string; + // 详情页模板 + detail?: string; + // 文章分类ID + categoryId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 话题 + topic?: string; + // 标签 + tags?: string; + // 封面图 + image?: string; + // 封面图宽 + imageWidth?: number; + // 封面图高 + imageHeight?: number; + // 付费金额 + price?: string; + // 开始时间 + startTime?: string; + // 结束时间 + endTime?: string; + // 来源 + source?: string; + // 产品概述 + overview?: string; + // 虚拟阅读量(仅用作展示) + virtualViews?: number; + // 实际阅读量 + actualViews?: number; + // 评分 + rate?: string; + // 列表显示方式(10小图展示 20大图展示) + showType?: number; + // 访问密码 + password?: string; + // 可见类型 0所有人 1登录可见 2密码可见 + permission?: number; + // 发布来源客户端 (APP、H5、小程序等) + platform?: string; + // 文章附件 + files?: string; + // 视频地址 + video?: string; + // 接受的文件类型 + accept?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 点赞数 + likes?: number; + // 评论数 + commentNumbers?: number; + // 提醒谁看 + toUsers?: string; + // 作者 + author?: string; + // 推荐 + recommend?: number; + // 报名人数 + bmUsers?: number; + // 用户ID + userId?: number; + // 项目ID + projectId?: number; + // 语言 + lang?: string; + // 关联默认语言的文章ID + langArticleId?: number; + // 是否自动翻译 + translation?: string; + // 编辑器类型 0 Markdown编辑器 1 富文本编辑器 + editor?: string; + // pdf文件地址 + pdfUrl?: string; + // 版本号 + version?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 商品文章搜索条件 + */ +export interface ShopArticleParam extends PageParam { + articleId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopBooking/index.ts b/src/api/shop/shopBooking/index.ts new file mode 100644 index 0000000..2c003e5 --- /dev/null +++ b/src/api/shop/shopBooking/index.ts @@ -0,0 +1,121 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { + ShopBooking, + ShopBookingParam, + ShopBookingParams, + BookingStats, +} from './model' + +/** + * 分页查询预约订单 + */ +export async function pageShopBooking(params: ShopBookingParam) { + const res = await request.get>>( + '/shop/shop-booking/page', + params + ) + if (res.code === 0) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询预约订单列表 + */ +export async function listShopBooking(params?: ShopBookingParam) { + const res = await request.get>( + '/shop/shop-booking', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 根据ID查询预约订单 + */ +export async function getShopBooking(id: string) { + const res = await request.get>( + '/shop/shop-booking/' + id + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 创建预约订单 + */ +export async function createShopBooking(data: ShopBookingParams) { + const res = await request.post>( + '/shop/shop-booking', + data + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 修改预约订单 + */ +export async function updateShopBooking(data: ShopBookingParams) { + const res = await request.put>( + '/shop/shop-booking', + data + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 取消预约订单 + */ +export async function cancelShopBooking(id?: string) { + const res = await request.del>( + '/shop/shop-booking/' + id + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 改签预约订单 + */ +export async function rescheduleShopBooking(data: { + bookingId: string + newDate: string + newTime: string +}) { + const res = await request.post>( + '/shop/shop-booking/reschedule', + data + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 获取预约统计 + */ +export async function getBookingStats() { + const res = await request.get>( + '/shop/shop-booking/stats' + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopBooking/model/index.ts b/src/api/shop/shopBooking/model/index.ts new file mode 100644 index 0000000..79d5be4 --- /dev/null +++ b/src/api/shop/shopBooking/model/index.ts @@ -0,0 +1,53 @@ +/** + * 预约订单模型 + */ + +// 预约状态 +export type BookingStatus = 'pending' | 'confirmed' | 'in_progress' | 'completed' | 'cancelled' | 'rescheduled' + +// 预约订单数据 +export interface ShopBooking { + id: number | string + bookingNo: string // 预约编号 + storeId: number // 店铺ID + storeName: string // 店铺名称 + storePhone?: string // 门店服务电话 + serviceId: number // 服务ID + serviceName: string // 服务名称 + bookingDate: string // 预约日期 + bookingTime: string // 预约时间段 + status: BookingStatus // 预约状态 + price: number // 价格 + createTime: string // 创建时间 + updateTime?: string // 更新时间 + remark?: string // 备注 + contactName?: string // 联系人 + contactPhone?: string // 联系电话 + address?: string // 地址 +} + +// 预约查询参数 +export interface ShopBookingParam { + page?: number + limit?: number + status?: BookingStatus // 按状态筛选 + storeId?: number // 按店铺筛选 + startDate?: string // 预约日期范围-起始 + endDate?: string // 预约日期范围-结束 + keywords?: string // 关键词搜索 + sortBy?: string // 排序方式(createTime, bookingDate) +} + +// 创建/更新预约参数 +export interface ShopBookingParams extends ShopBooking {} + +// 预约统计 +export interface BookingStats { + total: number // 总预约数 + pending: number // 待服务 + confirmed: number // 已确认 + inProgress: number // 进行中 + completed: number // 已完成 + cancelled: number // 已取消 + rescheduled: number // 已改签 +} diff --git a/src/api/shop/shopCart/index.ts b/src/api/shop/shopCart/index.ts new file mode 100644 index 0000000..16ac413 --- /dev/null +++ b/src/api/shop/shopCart/index.ts @@ -0,0 +1,153 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { ShopCart, ShopCartParam, AddToCartParam, UpdateCartNumParam } from './model'; + +/** + * 获取购物车列表 + */ +export async function listShopCart(params?: ShopCartParam) { + const res = await request.get>( + '/shop/shop-cart', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取购物车分页列表 + */ +export async function pageShopCart(params: ShopCartParam) { + const res = await request.get>( + '/shop/shop-cart/page', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取购物车数量 + */ +export async function getShopCartCount() { + const res = await request.get>( + '/shop/shop-cart/count' + ); + if (res.code === 0 && res.data) { + return res.data.count; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商品到购物车 + */ +export async function addToCart(data: AddToCartParam) { + const res = await request.post>( + '/shop/shop-cart', + data + ); + if (res.code === 0) { + return res.message || '添加成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 更新购物车商品数量 + */ +export async function updateCartNum(data: UpdateCartNumParam) { + const res = await request.put>( + '/shop/shop-cart/' + data.id, + { quantity: data.num } + ); + if (res.code === 0) { + return res.message || '更新成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 更新购物车商品选中状态 + */ +export async function updateCartChecked(id: number, checked: boolean) { + const res = await request.put>( + '/shop/shop-cart/' + id, + { selected: checked } + ); + if (res.code === 0) { + return res.message || '更新成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 全选/取消全选购物车 + */ +export async function updateCartAllChecked(checked: boolean) { + const res = await request.put>( + '/shop/shop-cart/selected', + { selected: checked } + ); + if (res.code === 0) { + return res.message || '更新成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除购物车商品 + */ +export async function removeShopCart(id: number) { + const res = await request.del>( + '/shop/shop-cart/' + id + ); + if (res.code === 0) { + return res.message || '删除成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除购物车商品 + */ +export async function removeBatchShopCart(ids: number[]) { + const res = await request.del>( + '/shop/shop-cart/batch', + { ids } + ); + if (res.code === 0) { + return res.message || '删除成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 清空购物车 + */ +export async function clearShopCart() { + const res = await request.del>( + '/shop/shop-cart/clear' + ); + if (res.code === 0) { + return res.message || '清空成功'; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取购物车详情 + */ +export async function getShopCart(id: number) { + const res = await request.get>( + '/shop/shop-cart/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopCart/model/index.ts b/src/api/shop/shopCart/model/index.ts new file mode 100644 index 0000000..b8ed1ad --- /dev/null +++ b/src/api/shop/shopCart/model/index.ts @@ -0,0 +1,74 @@ +import type { PageParam } from '@/api'; + +/** + * 购物车项 + */ +export interface ShopCart { + // 主键ID + id?: number; + // 用户ID + userId?: number; + // 商品ID + goodsId?: number; + // SKU ID + skuId?: number; + // 数量 + num?: number; + // 商品名称 + goodsName?: string; + // 商品图片 + goodsImage?: string; + // SKU价格 + skuPrice?: string; + // SKU规格 + skuSpec?: string; + // 库存 + stock?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; +} + +/** + * 购物车项扩展(包含选中状态,用于前端展示) + */ +export interface ShopCartItem extends ShopCart { + // 是否选中 + checked?: boolean; + // 商品详情 + product?: any; + // SKU详情 + sku?: any; +} + +/** + * 添加到购物车参数 + */ +export interface AddToCartParam { + // 商品ID + goodsId: number; + // SKU ID(单规格可不传) + skuId?: number; + // 数量 + num: number; +} + +/** + * 更新购物车数量参数 + */ +export interface UpdateCartNumParam { + // 购物车ID + id: number; + // 数量 + num: number; +} + +/** + * 购物车搜索条件 + */ +export interface ShopCartParam extends PageParam { + userId?: number; +} diff --git a/src/api/shop/shopChatConversation/index.ts b/src/api/shop/shopChatConversation/index.ts new file mode 100644 index 0000000..6a5ba5b --- /dev/null +++ b/src/api/shop/shopChatConversation/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopChatConversation, ShopChatConversationParam } from './model'; + +/** + * 分页查询聊天会话表 + */ +export async function pageShopChatConversation(params: ShopChatConversationParam) { + const res = await request.get>>( + '/shop/shop-chat-conversation/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询聊天会话表列表 + */ +export async function listShopChatConversation(params?: ShopChatConversationParam) { + const res = await request.get>( + '/shop/shop-chat-conversation', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加聊天会话表 + */ +export async function addShopChatConversation(data: ShopChatConversation) { + const res = await request.post>( + '/shop/shop-chat-conversation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改聊天会话表 + */ +export async function updateShopChatConversation(data: ShopChatConversation) { + const res = await request.put>( + '/shop/shop-chat-conversation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除聊天会话表 + */ +export async function removeShopChatConversation(id?: number) { + const res = await request.del>( + '/shop/shop-chat-conversation/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除聊天会话表 + */ +export async function removeShopBatchChatConversation(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-chat-conversation/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询聊天会话表 + */ +export async function getShopChatConversation(id: number) { + const res = await request.get>( + '/shop/shop-chat-conversation/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopChatConversation/model/index.ts b/src/api/shop/shopChatConversation/model/index.ts new file mode 100644 index 0000000..ea6a9b3 --- /dev/null +++ b/src/api/shop/shopChatConversation/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 聊天消息表 + */ +export interface ShopChatConversation { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 好友ID + friendId?: number; + // 消息类型 + type?: number; + // 消息内容 + content?: string; + // 未读消息 + unRead?: number; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 聊天消息表搜索条件 + */ +export interface ShopChatConversationParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopChatMessage/index.ts b/src/api/shop/shopChatMessage/index.ts new file mode 100644 index 0000000..4667ce7 --- /dev/null +++ b/src/api/shop/shopChatMessage/index.ts @@ -0,0 +1,115 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopChatMessage, ShopChatMessageParam } from './model'; + +/** + * 分页查询聊天消息表 + */ +export async function pageShopChatMessage(params: ShopChatMessageParam) { + const res = await request.get>>( + '/shop/shop-chat-message/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询聊天消息表列表 + */ +export async function listShopChatMessage(params?: ShopChatMessageParam) { + const res = await request.get>( + '/shop/shop-chat-message', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addShopChatMessage(data: ShopChatMessage) { + const res = await request.post>( + '/shop/shop-chat-message', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addShopBatchChatMessage(data: ShopChatMessage[]) { + const res = await request.post>( + '/shop/shop-chat-message/batch', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改聊天消息表 + */ +export async function updateShopChatMessage(data: ShopChatMessage) { + const res = await request.put>( + '/shop/shop-chat-message', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除聊天消息表 + */ +export async function removeShopChatMessage(id?: number) { + const res = await request.del>( + '/shop/shop-chat-message/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除聊天消息表 + */ +export async function removeShopBatchChatMessage(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-chat-message/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询聊天消息表 + */ +export async function getShopChatMessage(id: number) { + const res = await request.get>( + '/shop/shop-chat-message/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopChatMessage/model/index.ts b/src/api/shop/shopChatMessage/model/index.ts new file mode 100644 index 0000000..411d45c --- /dev/null +++ b/src/api/shop/shopChatMessage/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api'; + +/** + * 聊天消息表 + */ +export interface ShopChatMessage { + // 自增ID + id?: number; + // 发送人ID + formUserId?: number; + // 发送人名称 + formUserName?: string; + // 发送人头像 + formUserAvatar?: string; + // 发送人手机号 + formUserPhone?: string; + // 发送人别名 + formUserAlias?: string; + // 接收人ID + toUserId?: number; + // 接收人名称 + toUserName?: string; + // 接收人头像 + toUserAvatar?: string; + // 接收人手机号 + toUserPhone?: string; + // 接收人别名 + toUserAlias?: string; + // 消息类型 + type?: string; + // 消息内容 + content?: string; + // 屏蔽接收方 + sideTo?: number; + // 屏蔽发送方 + sideFrom?: number; + // 是否撤回 + withdraw?: number; + // 文件信息 + fileInfo?: string; + // 批量发送 + toUserIds?: any[]; + // 存在联系方式 + hasContact?: number; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 聊天消息表搜索条件 + */ +export interface ShopChatMessageParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopCommissionRecord.ts b/src/api/shop/shopCommissionRecord.ts new file mode 100644 index 0000000..350851a --- /dev/null +++ b/src/api/shop/shopCommissionRecord.ts @@ -0,0 +1,29 @@ +import request from '@/utils/request'; + +/** + * 获取我的佣金记录 + */ +export function getMyCommissionList(params: any) { + return request.get('/shop/shop-commission-record/my/list', params); +} + +/** + * 获取佣金统计 + */ +export function getCommissionStats() { + return request.get('/shop/shop-commission-record/my/stats'); +} + +/** + * 获取佣金记录列表(管理员) + */ +export function getCommissionList(params: any) { + return request.get('/shop/shop-commission-record/page', params); +} + +/** + * 手动触发佣金结算(管理员) + */ +export function settleCommission() { + return request.post('/shop/shop-commission-record/settle'); +} diff --git a/src/api/shop/shopCommissionRole/index.ts b/src/api/shop/shopCommissionRole/index.ts new file mode 100644 index 0000000..07a2b6c --- /dev/null +++ b/src/api/shop/shopCommissionRole/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopCommissionRole, ShopCommissionRoleParam } from './model'; + +/** + * 分页查询分红角色 + */ +export async function pageShopCommissionRole(params: ShopCommissionRoleParam) { + const res = await request.get>>( + '/shop/shop-commission-role/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分红角色列表 + */ +export async function listShopCommissionRole(params?: ShopCommissionRoleParam) { + const res = await request.get>( + '/shop/shop-commission-role', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分红角色 + */ +export async function addShopCommissionRole(data: ShopCommissionRole) { + const res = await request.post>( + '/shop/shop-commission-role', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分红角色 + */ +export async function updateShopCommissionRole(data: ShopCommissionRole) { + const res = await request.put>( + '/shop/shop-commission-role', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分红角色 + */ +export async function removeShopCommissionRole(id?: number) { + const res = await request.del>( + '/shop/shop-commission-role/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分红角色 + */ +export async function removeBatchShopCommissionRole(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-commission-role/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分红角色 + */ +export async function getShopCommissionRole(id: number) { + const res = await request.get>( + '/shop/shop-commission-role/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopCommissionRole/model/index.ts b/src/api/shop/shopCommissionRole/model/index.ts new file mode 100644 index 0000000..2881941 --- /dev/null +++ b/src/api/shop/shopCommissionRole/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api/index'; + +/** + * 分红角色 + */ +export interface ShopCommissionRole { + // + id?: number; + // + title?: string; + // + provinceId?: number; + // + cityId?: number; + // + regionId?: number; + // 状态, 0正常, 1异常 + status?: number; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // + sortNumber?: number; +} + +/** + * 分红角色搜索条件 + */ +export interface ShopCommissionRoleParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopCoupon/index.ts b/src/api/shop/shopCoupon/index.ts new file mode 100644 index 0000000..be92c82 --- /dev/null +++ b/src/api/shop/shopCoupon/index.ts @@ -0,0 +1,115 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopCoupon, ShopCouponParam, ShopCouponWithTake } from './model'; + +/** + * 分页查询优惠券 + */ +export async function pageShopCoupon(params: ShopCouponParam) { + const res = await request.get>>( + '/shop/shop-coupon/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询优惠券列表 + */ +export async function listShopCoupon(params?: ShopCouponParam) { + const res = await request.get>( + '/shop/shop-coupon', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加优惠券 + */ +export async function addShopCoupon(data: ShopCoupon) { + const res = await request.post>( + '/shop/shop-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改优惠券 + */ +export async function updateShopCoupon(data: ShopCoupon) { + const res = await request.put>( + '/shop/shop-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除优惠券 + */ +export async function removeShopCoupon(id?: number) { + const res = await request.del>( + '/shop/shop-coupon/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除优惠券 + */ +export async function removeBatchShopCoupon(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-coupon/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询优惠券 + */ +export async function getShopCoupon(id: number) { + const res = await request.get>( + '/shop/shop-coupon/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 领券中心-查询可领取优惠券列表(含是否已领取状态) + */ +export async function listCouponCenter(params?: ShopCouponParam) { + const res = await request.post>( + '/shop/shop-coupon/list', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopCoupon/model/index.ts b/src/api/shop/shopCoupon/model/index.ts new file mode 100644 index 0000000..9fb4401 --- /dev/null +++ b/src/api/shop/shopCoupon/model/index.ts @@ -0,0 +1,97 @@ +import type { PageParam } from '@/api/index'; + +/** + * 优惠券 + */ +export interface ShopCoupon { + // id + id?: number; + // 优惠券名称 + name?: string; + // 优惠券描述 + description?: string; + // 优惠券类型(10满减券 20折扣券 30免费券 40无门槛券 50场地使用券) + type?: number; + // 满减券-减免金额 + reducePrice?: string; + // 折扣券-折扣率(0-100) + discount?: number; + // 最低消费金额 + minPrice?: string; + // 到期类型(10领取后生效 20固定时间) + expireType?: number; + // 领取后生效-有效天数 + expireDay?: number; + // 有效期开始时间 + startTime?: string; + // 有效期结束时间 + endTime?: string; + // 适用范围(10全部商品 20指定商品 30指定分类) + applyRange?: number; + // 适用范围配置(json格式) + applyRangeConfig?: string; + // 是否过期(0未过期 1已过期) + isExpire?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 创建用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 发放总数量(-1表示无限制) + totalCount?: number; + // 已发放数量 + issuedCount?: number; + // 每人限领数量(-1表示无限制) + limitPerUser?: number; + // 是否启用(0禁用 1启用) + enabled?: string; + // 发放对象(0全部用户 1仅会员 2仅非会员 3指定用户) + receiveTarget?: number; + // 指定用户ID列表(JSON数组格式),receiveTarget=3时使用 + receiveUserIds?: string; + // 场地使用券-场地类型 + venueType?: number; + // 场地使用券-指定场地ID + venueId?: number; + // 场地使用券-可用次数(-1表示无限制) + useCount?: number; + // 场地使用券-使用时长(分钟) + useDuration?: number; + sortBy?: string; +} + +/** + * 优惠券搜索条件 + */ +export interface ShopCouponParam extends PageParam { + id?: number; + status?: number; + isExpire?: number; + sortBy?: string; + sortOrder?: 'asc' | 'desc'; + keywords?: string; + enabled?: number; + type?: number; + minAmount?: number; +} + +/** + * 领券中心优惠券(含是否已领取) + */ +export interface ShopCouponWithTake extends ShopCoupon { + // 是否已领取 + hasTake?: boolean; + // 用户已领取数量 + userTakeNum?: number; + // 用户已使用数量 + userUseNum?: number; +} diff --git a/src/api/shop/shopCustomerService/index.ts b/src/api/shop/shopCustomerService/index.ts new file mode 100644 index 0000000..251739f --- /dev/null +++ b/src/api/shop/shopCustomerService/index.ts @@ -0,0 +1,17 @@ +import request from '@/utils/request' +import type { CustomerServiceInfo } from './model' + +/** 获取客服信息 */ +export function getCustomerServiceInfo() { + return request.post('/shopCustomerService/getInfo', {}) +} + +/** 发送消息 */ +export function sendMessage(data: { content: string; type: 'text' | 'image' }) { + return request.post<{ success: boolean }>('/shopCustomerService/sendMessage', data) +} + +/** 获取聊天记录 */ +export function getChatHistory(params: { page?: number; pageSize?: number } = {}) { + return request.post<{ items: any[]; total: number }>('/shopCustomerService/getHistory', params) +} diff --git a/src/api/shop/shopCustomerService/model.ts b/src/api/shop/shopCustomerService/model.ts new file mode 100644 index 0000000..9a3f2a3 --- /dev/null +++ b/src/api/shop/shopCustomerService/model.ts @@ -0,0 +1,26 @@ +/** 客服消息 */ +export interface CustomerServiceMessage { + id: number + userId: number + content: string + type: 'text' | 'image' + isFromUser: boolean + createTime: string +} + +/** 客服会话 */ +export interface CustomerServiceSession { + id: number + userId: number + status: number + createTime: string + messages?: CustomerServiceMessage[] +} + +/** 客服信息 */ +export interface CustomerServiceInfo { + online: boolean + onlineHours: string + hotline: string + wechat: string +} diff --git a/src/api/shop/shopDealerApply/index.ts b/src/api/shop/shopDealerApply/index.ts new file mode 100644 index 0000000..c974214 --- /dev/null +++ b/src/api/shop/shopDealerApply/index.ts @@ -0,0 +1,155 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerApply, ShopDealerApplyParam } from './model'; + +/** + * 分页查询分销商申请记录表 + */ +export async function pageShopDealerApply(params: ShopDealerApplyParam) { + const res = await request.get>>( + '/shop/shop-dealer-apply/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商申请记录表列表 + */ +export async function listShopDealerApply(params?: ShopDealerApplyParam) { + const res = await request.get>( + '/shop/shop-dealer-apply', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商申请记录表 + */ +export async function addShopDealerApply(data: ShopDealerApply) { + try { + const res = await request.post>( + '/shop/shop-dealer-apply', + data + ); + if (res.code === 0) { + return res.message || '提交成功'; + } + // 直接抛出包含服务器错误信息的错误 + const error = new Error(res.message || '提交失败'); + (error as any).code = res.code; + (error as any).data = res.data; + throw error; + } catch (error: any) { + // 如果已经是我们处理过的错误,直接抛出 + if (error.message && error.code !== undefined) { + throw error; + } + + // 处理网络错误或其他异常 + console.error('添加分销商申请失败:', error); + + // 尝试从响应中提取错误信息 + if (error.response?.data) { + const responseData = error.response.data; + if (responseData.message) { + const newError = new Error(responseData.message); + (newError as any).code = responseData.code; + throw newError; + } + } + + // 默认错误处理 + throw new Error(error.message || '网络错误,请重试'); + } +} + +/** + * 修改分销商申请记录表 + */ +export async function updateShopDealerApply(data: ShopDealerApply) { + try { + const res = await request.put>( + '/shop/shop-dealer-apply', + data + ); + if (res.code === 0) { + return res.message || '修改成功'; + } + // 直接抛出包含服务器错误信息的错误 + const error = new Error(res.message || '修改失败'); + (error as any).code = res.code; + (error as any).data = res.data; + throw error; + } catch (error: any) { + // 如果已经是我们处理过的错误,直接抛出 + if (error.message && error.code !== undefined) { + throw error; + } + + // 处理网络错误或其他异常 + console.error('修改分销商申请失败:', error); + + // 尝试从响应中提取错误信息 + if (error.response?.data) { + const responseData = error.response.data; + if (responseData.message) { + const newError = new Error(responseData.message); + (newError as any).code = responseData.code; + throw newError; + } + } + + // 默认错误处理 + throw new Error(error.message || '网络错误,请重试'); + } +} + +/** + * 删除分销商申请记录表 + */ +export async function removeShopDealerApply(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-apply/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商申请记录表 + */ +export async function removeBatchShopDealerApply(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-apply/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商申请记录表 + */ +export async function getShopDealerApply(id: number) { + const res = await request.get>( + '/shop/shop-dealer-apply/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerApply/model/index.ts b/src/api/shop/shopDealerApply/model/index.ts new file mode 100644 index 0000000..8ea27cc --- /dev/null +++ b/src/api/shop/shopDealerApply/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api/index'; + +/** + * 分销商申请记录表 + */ +export interface ShopDealerApply { + // 主键ID + applyId?: number; + // 用户ID + userId?: number; + // 姓名 + realName?: string; + // 手机号 + mobile?: string; + // 推荐人用户ID + refereeId?: number; + // 申请方式(10需后台审核 20无需审核) + applyType?: number; + // 申请时间 + applyTime?: number; + // 审核状态 (10待审核 20审核通过 30驳回) + applyStatus?: number; + // 审核时间 + auditTime?: number; + // 驳回原因 + rejectReason?: string; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商申请记录表搜索条件 + */ +export interface ShopDealerApplyParam extends PageParam { + applyId?: number; + mobile?: string; + userId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerCapital/index.ts b/src/api/shop/shopDealerCapital/index.ts new file mode 100644 index 0000000..4c4b112 --- /dev/null +++ b/src/api/shop/shopDealerCapital/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerCapital, ShopDealerCapitalParam } from './model'; + +/** + * 分页查询分销商资金明细表 + */ +export async function pageShopDealerCapital(params: ShopDealerCapitalParam) { + const res = await request.get>>( + '/shop/shop-dealer-capital/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商资金明细表列表 + */ +export async function listShopDealerCapital(params?: ShopDealerCapitalParam) { + const res = await request.get>( + '/shop/shop-dealer-capital', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商资金明细表 + */ +export async function addShopDealerCapital(data: ShopDealerCapital) { + const res = await request.post>( + '/shop/shop-dealer-capital', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商资金明细表 + */ +export async function updateShopDealerCapital(data: ShopDealerCapital) { + const res = await request.put>( + '/shop/shop-dealer-capital', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商资金明细表 + */ +export async function removeShopDealerCapital(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-capital/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商资金明细表 + */ +export async function removeBatchShopDealerCapital(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-capital/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商资金明细表 + */ +export async function getShopDealerCapital(id: number) { + const res = await request.get>( + '/shop/shop-dealer-capital/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerCapital/model.ts b/src/api/shop/shopDealerCapital/model.ts new file mode 100644 index 0000000..ad4b293 --- /dev/null +++ b/src/api/shop/shopDealerCapital/model.ts @@ -0,0 +1,109 @@ +/** + * 分销商资金明细表 + */ +export interface ShopDealerCapital { + /** 主键ID */ + id?: number; + /** 分销商用户ID */ + userId?: number; + /** 分销商昵称 */ + nickName?: string; + /** 订单编号 */ + orderNo?: string; + /** 订单状态 */ + orderStatus?: number; + /** 资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入 50佣金解冻 60配送奖励) */ + flowType?: number; + /** 金额 */ + money?: number; + /** 描述 */ + comments?: string; + /** 对方用户ID */ + toUserId?: number; + /** 对方昵称 */ + toNickName?: string; + /** 结算月份 */ + month?: string; + /** 商城ID */ + tenantId?: number; + /** 创建时间 */ + createTime?: string; + /** 修改时间 */ + updateTime?: string; +} + +/** + * 分销商资金明细表查询参数 + */ +export interface ShopDealerCapitalParam { + /** 主键ID */ + id?: number; + /** 分销商用户ID */ + userId?: number; + /** 订单编号 */ + orderNo?: string; + /** 资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入 50佣金解冻) */ + flowType?: number; + /** 金额 */ + money?: number; + /** 描述 */ + comments?: string; + /** 对方用户ID */ + toUserId?: number; + /** 月份 */ + month?: string; + /** 第几页 */ + page?: number; + /** 每页多少条 */ + limit?: number; + /** 排序字段 */ + sort?: string; + /** 排序方式, asc升序, desc降序 */ + order?: string; + /** 起始时间 */ + createTimeStart?: string; + /** 结束时间 */ + createTimeEnd?: string; +} + +/** + * 资金流动类型枚举 + */ +export enum FlowTypeEnum { + /** 佣金收入 */ + COMMISSION_INCOME = 10, + /** 提现支出 */ + WITHDRAW_OUT = 20, + /** 转账支出 */ + TRANSFER_OUT = 30, + /** 转账收入 */ + TRANSFER_IN = 40, + /** 佣金解冻 */ + COMMISSION_UNFREEZE = 50, + /** 配送奖励 */ + DELIVERY_REWARD = 60, +} + +/** + * 返利记录类型 + */ +export type RebateRecordType = 'register' | 'order'; + +/** + * 返利记录状态 + */ +export type RebateRecordStatus = 'pending' | 'settled'; + +/** + * 返利记录(前端展示用) + */ +export interface RebateRecord { + id: number; + type: RebateRecordType; + title: string; + amount: number; + status: RebateRecordStatus; + date: string; + orderNo?: string; + comments?: string; +} diff --git a/src/api/shop/shopDealerCapital/model/index.ts b/src/api/shop/shopDealerCapital/model/index.ts new file mode 100644 index 0000000..00d29a7 --- /dev/null +++ b/src/api/shop/shopDealerCapital/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api/index'; + +/** + * 分销商资金明细表 + */ +export interface ShopDealerCapital { + // 主键ID + id?: number; + // 分销商用户ID + userId?: number; + // 订单ID + orderId?: number; + // 资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入) + flowType?: number; + // 金额 + money?: string; + // 描述 + describe?: string; + // 对方用户ID + toUserId?: number; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商资金明细表搜索条件 + */ +export interface ShopDealerCapitalParam extends PageParam { + id?: number; + // 仅查询当前分销商的收益/资金明细 + userId?: number; + // 可选:按订单过滤 + orderId?: number; + // 可选:资金流动类型过滤 + flowType?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerOrder/index.ts b/src/api/shop/shopDealerOrder/index.ts new file mode 100644 index 0000000..d29f0d8 --- /dev/null +++ b/src/api/shop/shopDealerOrder/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerOrder, ShopDealerOrderParam } from './model'; + +/** + * 分页查询分销商订单记录表 + */ +export async function pageShopDealerOrder(params: ShopDealerOrderParam) { + const res = await request.get>>( + '/shop/shop-dealer-order/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商订单记录表列表 + */ +export async function listShopDealerOrder(params?: ShopDealerOrderParam) { + const res = await request.get>( + '/shop/shop-dealer-order', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商订单记录表 + */ +export async function addShopDealerOrder(data: ShopDealerOrder) { + const res = await request.post>( + '/shop/shop-dealer-order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商订单记录表 + */ +export async function updateShopDealerOrder(data: ShopDealerOrder) { + const res = await request.put>( + '/shop/shop-dealer-order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商订单记录表 + */ +export async function removeShopDealerOrder(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-order/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商订单记录表 + */ +export async function removeBatchShopDealerOrder(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-order/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商订单记录表 + */ +export async function getShopDealerOrder(id: number) { + const res = await request.get>( + '/shop/shop-dealer-order/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerOrder/model/index.ts b/src/api/shop/shopDealerOrder/model/index.ts new file mode 100644 index 0000000..03c9512 --- /dev/null +++ b/src/api/shop/shopDealerOrder/model/index.ts @@ -0,0 +1,60 @@ +import type { PageParam } from '@/api/index'; + +/** + * 分销商订单记录表 + */ +export interface ShopDealerOrder { + // 主键ID + id?: number; + // 买家用户ID + userId?: number; + nickname?: string; + // 订单编号(部分接口会直接返回订单号字符串) + orderNo?: string; + // 订单ID + orderId?: number; + // 订单总金额(不含运费) + orderPrice?: string; + // 分销商用户id(一级) + firstUserId?: number; + // 分销商用户id(二级) + secondUserId?: number; + // 分销商用户id(三级) + thirdUserId?: number; + // 分销佣金(一级) + firstMoney?: string; + // 分销佣金(二级) + secondMoney?: string; + // 分销佣金(三级) + thirdMoney?: string; + // 订单是否失效(0未失效 1已失效) + isInvalid?: number; + // 佣金结算(0未结算 1已结算) + isSettled?: number; + // 佣金解冻(0未解冻 1已解冻) + isUnfreeze?: number; + // 订单状态 + orderStatus?: number; + // 结算时间 + settleTime?: number; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商订单记录表搜索条件 + */ +export interface ShopDealerOrderParam extends PageParam { + id?: number; + firstUserId?: number; + secondUserId?: number; + thirdUserId?: number; + userId?: number; + // 数据权限/资源ID(通常传当前登录用户ID) + resourceId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerReferee/index.ts b/src/api/shop/shopDealerReferee/index.ts new file mode 100644 index 0000000..949794f --- /dev/null +++ b/src/api/shop/shopDealerReferee/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerReferee, ShopDealerRefereeParam } from './model'; + +/** + * 分页查询分销商推荐关系表 + */ +export async function pageShopDealerReferee(params: ShopDealerRefereeParam) { + const res = await request.get>>( + '/shop/shop-dealer-referee/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商推荐关系表列表 + */ +export async function listShopDealerReferee(params?: ShopDealerRefereeParam) { + const res = await request.get>( + '/shop/shop-dealer-referee', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商推荐关系表 + */ +export async function addShopDealerReferee(data: ShopDealerReferee) { + const res = await request.post>( + '/shop/shop-dealer-referee', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商推荐关系表 + */ +export async function updateShopDealerReferee(data: ShopDealerReferee) { + const res = await request.put>( + '/shop/shop-dealer-referee', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商推荐关系表 + */ +export async function removeShopDealerReferee(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-referee/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商推荐关系表 + */ +export async function removeBatchShopDealerReferee(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-referee/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商推荐关系表 + */ +export async function getShopDealerReferee(id: number) { + const res = await request.get>( + '/shop/shop-dealer-referee/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerReferee/model/index.ts b/src/api/shop/shopDealerReferee/model/index.ts new file mode 100644 index 0000000..044a77d --- /dev/null +++ b/src/api/shop/shopDealerReferee/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商推荐关系表 + */ +export interface ShopDealerReferee { + // 主键ID + id?: number; + // 分销商用户ID + dealerId?: number; + // 用户id(被推荐人) + userId?: number; + // 推荐关系层级(1,2,3) + level?: number; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商推荐关系表搜索条件 + */ +export interface ShopDealerRefereeParam extends PageParam { + id?: number; + dealerId?: number; + keywords?: string; + deleted?: number; +} diff --git a/src/api/shop/shopDealerSetting/index.ts b/src/api/shop/shopDealerSetting/index.ts new file mode 100644 index 0000000..b6b457b --- /dev/null +++ b/src/api/shop/shopDealerSetting/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerSetting, ShopDealerSettingParam } from './model'; + +/** + * 分页查询分销商设置表 + */ +export async function pageShopDealerSetting(params: ShopDealerSettingParam) { + const res = await request.get>>( + '/shop/shop-dealer-setting/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商设置表列表 + */ +export async function listShopDealerSetting(params?: ShopDealerSettingParam) { + const res = await request.get>( + '/shop/shop-dealer-setting', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商设置表 + */ +export async function addShopDealerSetting(data: ShopDealerSetting) { + const res = await request.post>( + '/shop/shop-dealer-setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商设置表 + */ +export async function updateShopDealerSetting(data: ShopDealerSetting) { + const res = await request.put>( + '/shop/shop-dealer-setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商设置表 + */ +export async function removeShopDealerSetting(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-setting/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商设置表 + */ +export async function removeBatchShopDealerSetting(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-setting/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商设置表 + */ +export async function getShopDealerSetting(id: number) { + const res = await request.get>( + '/shop/shop-dealer-setting/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerSetting/model/index.ts b/src/api/shop/shopDealerSetting/model/index.ts new file mode 100644 index 0000000..12126c3 --- /dev/null +++ b/src/api/shop/shopDealerSetting/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api/index'; + +/** + * 分销商设置表 + */ +export interface ShopDealerSetting { + // 设置项标示 + key?: string; + // 设置项描述 + describe?: string; + // 设置内容(json格式) + values?: string; + // 商城ID + tenantId?: number; + // 更新时间 + updateTime?: number; +} + +/** + * 分销商设置表搜索条件 + */ +export interface ShopDealerSettingParam extends PageParam { + key?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerUser/index.ts b/src/api/shop/shopDealerUser/index.ts new file mode 100644 index 0000000..df82b27 --- /dev/null +++ b/src/api/shop/shopDealerUser/index.ts @@ -0,0 +1,103 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerUser, ShopDealerUserParam } from './model'; + +/** + * 分页查询分销商用户记录表 + */ +export async function pageShopDealerUser(params: ShopDealerUserParam) { + // 使用新的request方法,它会自动处理错误并返回完整的ApiResult + const res = await request.get>>( + '/shop/shop-dealer-user/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商用户记录表列表 + */ +export async function listShopDealerUser(params?: ShopDealerUserParam) { + const res = await request.get>( + '/shop/shop-dealer-user', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商用户记录表 + */ +export async function addShopDealerUser(data: ShopDealerUser) { + const res = await request.post>( + '/shop/shop-dealer-user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商用户记录表 + */ +export async function updateShopDealerUser(data: ShopDealerUser) { + const res = await request.put>( + '/shop/shop-dealer-user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商用户记录表 + */ +export async function removeShopDealerUser(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-user/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商用户记录表 + */ +export async function removeBatchShopDealerUser(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-user/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据userId查询分销商用户记录表 + */ +export async function getShopDealerUser(userId: number) { + const res = await request.get>( + '/shop/shop-dealer-user/' + userId + ); + if (res.code === 0) { + // 未注册为分销商时,后端可能返回 data=null,这里用 null 表示“没有分销商信息” + return res.data || null; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerUser/model/index.ts b/src/api/shop/shopDealerUser/model/index.ts new file mode 100644 index 0000000..beda51c --- /dev/null +++ b/src/api/shop/shopDealerUser/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api/index'; + +/** + * 分销商用户记录表 + */ +export interface ShopDealerUser { + // 主键ID + id?: number; + // 自增ID + userId?: number; + // 姓名 + realName?: string; + // 手机号 + mobile?: string; + // 支付密码 + payPassword?: string; + // 当前可提现佣金 + money?: string; + // 已冻结佣金 + freezeMoney?: string; + // 累积提现佣金 + totalMoney?: string; + // 推荐人用户ID + refereeId?: number; + // 成员数量(一级) + firstNum?: number; + // 成员数量(二级) + secondNum?: number; + // 成员数量(三级) + thirdNum?: number; + // 专属二维码 + qrcode?: string; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 分销商等级:0-普通用户 1-超级管理员 2-合伙人(总店) 3-合伙人(分店) + dealerLevel?: number; +} + +/** + * 分销商用户记录表搜索条件 + */ +export interface ShopDealerUserParam extends PageParam { + id?: number; + phone?: string; + userId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerWithdraw/index.ts b/src/api/shop/shopDealerWithdraw/index.ts new file mode 100644 index 0000000..398b9be --- /dev/null +++ b/src/api/shop/shopDealerWithdraw/index.ts @@ -0,0 +1,145 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerWithdraw, ShopDealerWithdrawParam } from './model'; + +// WeChat transfer v3: backend may return `package_info` for MiniProgram to open the +// "confirm receipt" page via `wx.requestMerchantTransfer`. +export type ShopDealerWithdrawCreateResult = + | string + | { + package_info?: string; + packageInfo?: string; + [k: string]: any; + } + | null + | undefined; + +// When applyStatus=20, user can "receive" (WeChat confirm receipt flow). +export type ShopDealerWithdrawReceiveResult = ShopDealerWithdrawCreateResult; + +/** + * 分页查询分销商提现明细表 + */ +export async function pageShopDealerWithdraw(params: ShopDealerWithdrawParam) { + const res = await request.get>>( + '/shop/shop-dealer-withdraw/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商提现明细表列表 + */ +export async function listShopDealerWithdraw(params?: ShopDealerWithdrawParam) { + const res = await request.get>( + '/shop/shop-dealer-withdraw', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商提现明细表 + */ +export async function addShopDealerWithdraw(data: ShopDealerWithdraw): Promise { + const res = await request.post>( + '/shop/shop-dealer-withdraw', + data + ); + if (res.code === 0) { + // Some backends return `message`, while WeChat transfer flow returns `data.package_info`. + return res.data ?? res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 用户领取(仅当 applyStatus=20 时)- 后台返回 package_info 供小程序调起确认收款页 + */ +export async function receiveShopDealerWithdraw(id: number): Promise { + const res = await request.post>( + '/shop/shop-dealer-withdraw/receive/' + id, + {} + ); + if (res.code === 0) { + return res.data ?? res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 领取成功回调:前端确认收款后通知后台把状态置为 applyStatus=40 + */ +export async function receiveSuccessShopDealerWithdraw(id: number) { + const res = await request.post>( + '/shop/shop-dealer-withdraw/receive-success/' + id, + {} + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商提现明细表 + */ +export async function updateShopDealerWithdraw(data: ShopDealerWithdraw) { + const res = await request.put>( + '/shop/shop-dealer-withdraw', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商提现明细表 + */ +export async function removeShopDealerWithdraw(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-withdraw/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商提现明细表 + */ +export async function removeBatchShopDealerWithdraw(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-withdraw/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商提现明细表 + */ +export async function getShopDealerWithdraw(id: number) { + const res = await request.get>( + '/shop/shop-dealer-withdraw/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerWithdraw/model/index.ts b/src/api/shop/shopDealerWithdraw/model/index.ts new file mode 100644 index 0000000..d53db44 --- /dev/null +++ b/src/api/shop/shopDealerWithdraw/model/index.ts @@ -0,0 +1,48 @@ +import type { PageParam } from '@/api/index'; + +/** + * 分销商提现明细表 + */ +export interface ShopDealerWithdraw { + // 主键ID + id?: number; + // 分销商用户ID + userId?: number; + // 提现金额 + money?: string; + // 打款方式 (10微信 20支付宝 30银行卡) + payType?: number; + // 支付宝姓名 + alipayName?: string; + // 支付宝账号 + alipayAccount?: string; + // 开户行名称 + bankName?: string; + // 银行开户名 + bankAccount?: string; + // 银行卡号 + bankCard?: string; + // 申请状态 (10待审核 20审核通过 30驳回 40已打款) + applyStatus?: number; + // 审核时间 + auditTime?: number; + // 驳回原因 + rejectReason?: string; + // 来源客户端(APP、H5、小程序等) + platform?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商提现明细表搜索条件 + */ +export interface ShopDealerWithdrawParam extends PageParam { + id?: number; + userId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopEvaluation/index.ts b/src/api/shop/shopEvaluation/index.ts new file mode 100644 index 0000000..b46e13a --- /dev/null +++ b/src/api/shop/shopEvaluation/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { + ShopEvaluation, + ShopEvaluationParam, + CreateEvaluationParams, + LikeEvaluationParams, + EvaluationStats, +} from './model' + +/** + * 分页查询评价 + */ +export async function pageShopEvaluation(params: ShopEvaluationParam) { + const res = await request.get>>( + '/shop/shop-evaluation/page', + params + ) + if (res.code === 0) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询评价列表 + */ +export async function listShopEvaluation(params?: ShopEvaluationParam) { + const res = await request.get>( + '/shop/shop-evaluation', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 根据ID查询评价 + */ +export async function getShopEvaluation(id: number) { + const res = await request.get>( + '/shop/shop-evaluation/' + id + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 创建评价 + */ +export async function createShopEvaluation(data: CreateEvaluationParams) { + const res = await request.post>( + '/shop/shop-evaluation', + data + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 删除评价 + */ +export async function removeShopEvaluation(id?: number) { + const res = await request.del>( + '/shop/shop-evaluation/' + id + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 点赞/取消点赞评价 + */ +export async function likeShopEvaluation(params: LikeEvaluationParams) { + const res = await request.post>( + '/shop/shop-evaluation/like', + params + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 获取商品评价统计 + */ +export async function getEvaluationStats(goodsId: number) { + const res = await request.get>( + '/shop/shop-evaluation/stats', + { goodsId } + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 获取订单的评价信息(用于判断是否已评价) + */ +export async function getOrderEvaluationStatus(orderId: number) { + const res = await request.get>( + '/shop/shop-evaluation/order-status', + { orderId } + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopEvaluation/model/index.ts b/src/api/shop/shopEvaluation/model/index.ts new file mode 100644 index 0000000..d74b52e --- /dev/null +++ b/src/api/shop/shopEvaluation/model/index.ts @@ -0,0 +1,77 @@ +/** + * 商品评价模型 + */ + +// 评价维度 +export interface EvaluationDimension { + name: string // 维度名称(如:质量、服务、物流) + score: number // 维度评分(1-5) +} + +// 评价数据 +export interface ShopEvaluation { + id: number + goodsId: number // 商品ID + goodsName: string // 商品名称 + goodsImage: string // 商品图片 + orderId: number // 订单ID + userId: number // 用户ID + userName: string // 用户名(脱敏) + userAvatar?: string // 用户头像 + score: number // 总评分(1-5) + dimensions?: EvaluationDimension[] // 评价维度 + content: string // 评价内容 + images: string[] // 评价图片 + isAnonymous: boolean // 是否匿名 + likes: number // 点赞数 + isLiked: boolean // 当前用户是否点赞 + reply?: string // 商家回复 + replyTime?: string // 回复时间 + createTime: string // 评价时间 + updateTime?: string // 更新时间 +} + +// 评价查询参数 +export interface ShopEvaluationParam { + page?: number + limit?: number + goodsId?: number // 按商品查询 + userId?: number // 按用户查询 + orderId?: number // 按订单查询 + minScore?: number // 最低评分 + maxScore?: number // 最高评分 + hasImages?: boolean // 是否有图 + isLiked?: boolean // 是否点赞过 + sortBy?: string // 排序方式(newest, mostLiked) + keywords?: string // 关键词搜索 +} + +// 创建评价参数 +export interface CreateEvaluationParams { + orderId: number + goodsId: number + score: number + dimensions?: EvaluationDimension[] + content: string + images?: string[] + isAnonymous: boolean +} + +// 点赞/取消点赞参数 +export interface LikeEvaluationParams { + evaluationId: number + isLiked: boolean +} + +// 评价统计 +export interface EvaluationStats { + total: number // 总评价数 + averageScore: number // 平均评分 + scoreDistribution: { // 评分分布 + [key: number]: number + } + imageCount: number // 有图评价数 + positiveCount: number // 好评数(4-5星) + neutralCount: number // 中评数(3星) + negativeCount: number // 差评数(1-2星) +} diff --git a/src/api/shop/shopEvent/index.ts b/src/api/shop/shopEvent/index.ts new file mode 100644 index 0000000..237fe7b --- /dev/null +++ b/src/api/shop/shopEvent/index.ts @@ -0,0 +1,80 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { + ShopEvent, + ShopEventParam, + EventRegisterParams, + EventRegistration, + RegistrationStatus, +} from './model' + +export type { ShopEvent, EventRegistration, RegistrationStatus, EventStatus, EventFormField } from './model' +export { getEventStatusLabel, getPayStatusLabel } from './model' + +/** + * 分页查询赛事 + */ +export async function pageShopEvent(params: ShopEventParam) { + const res = await request.get>>( + '/shop/shop-event/page', + params + ) + if (res.code === 0 && res.data) return res.data + return Promise.reject(new Error(res.message)) +} + +/** + * 赛事详情 + */ +export async function getShopEvent(id: number) { + const res = await request.get>(`/shop/shop-event/${id}`) + if (res.code === 0 && res.data) return res.data + return Promise.reject(new Error(res.message)) +} + +/** + * 提交报名(免费返回 {success,free},收费返回微信支付参数) + */ +export async function registerEvent(data: EventRegisterParams) { + const res = await request.post>>( + '/shop/shop-event/register', + data + ) + if (res.code === 0 && res.data) return res.data + return Promise.reject(new Error(res.message)) +} + +/** + * 重新发起支付 + */ +export async function payEventRegistration(registrationId: number) { + const res = await request.post>>( + '/shop/shop-event/pay', + { registrationId } + ) + if (res.code === 0 && res.data) return res.data + return Promise.reject(new Error(res.message)) +} + +/** + * 查询报名状态 + */ +export async function getRegistrationStatus(eventId: number) { + const res = await request.get>( + '/shop/shop-event/registration-status', + { eventId } + ) + if (res.code === 0 && res.data) return res.data + return Promise.reject(new Error(res.message)) +} + +/** + * 我的报名记录 + */ +export async function getMyRegistrations() { + const res = await request.get>( + '/shop/shop-event/my-registrations' + ) + if (res.code === 0 && res.data) return res.data + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopEvent/model/index.ts b/src/api/shop/shopEvent/model/index.ts new file mode 100644 index 0000000..bfde609 --- /dev/null +++ b/src/api/shop/shopEvent/model/index.ts @@ -0,0 +1,96 @@ +/** + * 赛事模型 + */ + +export type EventStatus = 'upcoming' | 'registering' | 'closed' | 'ended' + +/** 动态报名表单字段配置 */ +export interface EventFormField { + /** 字段唯一标识 */ + key: string + /** 显示名称(后台可自定义) */ + label: string + /** 字段类型:text-文本 number-数字 idcard-身份证 phone-手机号 select-下拉选择 radio-单选 */ + type: 'text' | 'number' | 'idcard' | 'phone' | 'select' | 'radio' + /** 是否必填 1=必填 0=选填 */ + required: number + /** 选项列表(type=select/radio时有效) */ + options?: string[] + /** 占位提示文字 */ + placeholder?: string + /** 排序号 */ + sort: number +} + +export interface ShopEvent { + id: number + name: string + description: string + image?: string + banner?: string + eventDate: string + location?: string + maxParticipants: number + entryFee: number + /** 动态表单字段配置(JSON字符串或数组) */ + formFields?: string | EventFormField[] + status: number | EventStatus + isHot: number + tenantId?: number + createTime: string + paidCount: number +} + +export interface ShopEventParam { + page?: number + limit?: number + status?: number + isHot?: number + tenantId?: number +} + +export interface EventRegisterParams { + eventId: number + /** 动态表单数据,key-value 形式 */ + formData?: Record +} + +export interface EventRegistration { + id: number + eventId: number + userId: number + /** 动态表单提交的数据 */ + formData?: string | Record + entryFee: number + payStatus: number // 0=待缴费 1=已缴费 2=已取消 + orderNo?: string + paidAt?: string + createTime: string + eventName?: string +} + +export interface RegistrationStatus { + registered: boolean + payStatus: number | null + registrationId?: number +} + +// 状态映射 +export function getEventStatusLabel(status: number): { label: string; color: string } { + const map: Record = { + 0: { label: '未开始', color: 'text-blue-500' }, + 1: { label: '报名中', color: 'text-green-500' }, + 2: { label: '已截止', color: 'text-orange-400' }, + 3: { label: '已结束', color: 'text-gray-400' }, + } + return map[status] ?? { label: '未知', color: 'text-gray-400' } +} + +export function getPayStatusLabel(payStatus: number): { label: string; color: string } { + const map: Record = { + 0: { label: '待缴费', color: 'text-orange-500' }, + 1: { label: '已缴费', color: 'text-green-500' }, + 2: { label: '已取消', color: 'text-gray-400' }, + } + return map[payStatus] ?? { label: '未知', color: 'text-gray-400' } +} diff --git a/src/api/shop/shopExpress/index.ts b/src/api/shop/shopExpress/index.ts new file mode 100644 index 0000000..abfcf46 --- /dev/null +++ b/src/api/shop/shopExpress/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpress, ShopExpressParam } from './model'; + +/** + * 分页查询物流公司 + */ +export async function pageShopExpress(params: ShopExpressParam) { + const res = await request.get>>( + '/shop/shop-express/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询物流公司列表 + */ +export async function listShopExpress(params?: ShopExpressParam) { + const res = await request.get>( + '/shop/shop-express', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加物流公司 + */ +export async function addShopExpress(data: ShopExpress) { + const res = await request.post>( + '/shop/shop-express', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改物流公司 + */ +export async function updateShopExpress(data: ShopExpress) { + const res = await request.put>( + '/shop/shop-express', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除物流公司 + */ +export async function removeShopExpress(id?: number) { + const res = await request.del>( + '/shop/shop-express/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除物流公司 + */ +export async function removeBatchShopExpress(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-express/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询物流公司 + */ +export async function getShopExpress(id: number) { + const res = await request.get>( + '/shop/shop-express/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopExpress/model/index.ts b/src/api/shop/shopExpress/model/index.ts new file mode 100644 index 0000000..378a652 --- /dev/null +++ b/src/api/shop/shopExpress/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api/index'; + +/** + * 物流公司 + */ +export interface ShopExpress { + // 物流公司ID + expressId?: number; + // 物流公司名称 + expressName?: string; + // 物流公司编码 (微信) + wxCode?: string; + // 物流公司编码 (快递100) + kuaidi100Code?: string; + // 物流公司编码 (快递鸟) + kdniaoCode?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 物流公司搜索条件 + */ +export interface ShopExpressParam extends PageParam { + expressId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopExpressTemplate/index.ts b/src/api/shop/shopExpressTemplate/index.ts new file mode 100644 index 0000000..b056f1f --- /dev/null +++ b/src/api/shop/shopExpressTemplate/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpressTemplate, ShopExpressTemplateParam } from './model'; + +/** + * 分页查询运费模板 + */ +export async function pageShopExpressTemplate(params: ShopExpressTemplateParam) { + const res = await request.get>>( + '/shop/shop-express-template/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询运费模板列表 + */ +export async function listShopExpressTemplate(params?: ShopExpressTemplateParam) { + const res = await request.get>( + '/shop/shop-express-template', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加运费模板 + */ +export async function addShopExpressTemplate(data: ShopExpressTemplate) { + const res = await request.post>( + '/shop/shop-express-template', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改运费模板 + */ +export async function updateShopExpressTemplate(data: ShopExpressTemplate) { + const res = await request.put>( + '/shop/shop-express-template', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除运费模板 + */ +export async function removeShopExpressTemplate(id?: number) { + const res = await request.del>( + '/shop/shop-express-template/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除运费模板 + */ +export async function removeBatchShopExpressTemplate(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-express-template/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询运费模板 + */ +export async function getShopExpressTemplate(id: number) { + const res = await request.get>( + '/shop/shop-express-template/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopExpressTemplate/model/index.ts b/src/api/shop/shopExpressTemplate/model/index.ts new file mode 100644 index 0000000..5700987 --- /dev/null +++ b/src/api/shop/shopExpressTemplate/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api/index'; + +/** + * 运费模板 + */ +export interface ShopExpressTemplate { + // + id?: number; + // + type?: string; + // + title?: string; + // 收件价格 + firstAmount?: string; + // 续件价格 + extraAmount?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // + sortNumber?: number; + // 首件数量/重量 + firstNum?: string; + // 续件数量/重量 + extraNum?: string; +} + +/** + * 运费模板搜索条件 + */ +export interface ShopExpressTemplateParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopExpressTemplateDetail/index.ts b/src/api/shop/shopExpressTemplateDetail/index.ts new file mode 100644 index 0000000..783a53e --- /dev/null +++ b/src/api/shop/shopExpressTemplateDetail/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpressTemplateDetail, ShopExpressTemplateDetailParam } from './model'; + +/** + * 分页查询运费模板 + */ +export async function pageShopExpressTemplateDetail(params: ShopExpressTemplateDetailParam) { + const res = await request.get>>( + '/shop/shop-express-template-detail/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询运费模板列表 + */ +export async function listShopExpressTemplateDetail(params?: ShopExpressTemplateDetailParam) { + const res = await request.get>( + '/shop/shop-express-template-detail', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加运费模板 + */ +export async function addShopExpressTemplateDetail(data: ShopExpressTemplateDetail) { + const res = await request.post>( + '/shop/shop-express-template-detail', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改运费模板 + */ +export async function updateShopExpressTemplateDetail(data: ShopExpressTemplateDetail) { + const res = await request.put>( + '/shop/shop-express-template-detail', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除运费模板 + */ +export async function removeShopExpressTemplateDetail(id?: number) { + const res = await request.del>( + '/shop/shop-express-template-detail/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除运费模板 + */ +export async function removeBatchShopExpressTemplateDetail(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-express-template-detail/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询运费模板 + */ +export async function getShopExpressTemplateDetail(id: number) { + const res = await request.get>( + '/shop/shop-express-template-detail/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopExpressTemplateDetail/model/index.ts b/src/api/shop/shopExpressTemplateDetail/model/index.ts new file mode 100644 index 0000000..84e2dc8 --- /dev/null +++ b/src/api/shop/shopExpressTemplateDetail/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api/index'; + +/** + * 运费模板 + */ +export interface ShopExpressTemplateDetail { + // + id?: number; + // + templateId?: number; + // 0按件 + type?: string; + // + provinceId?: number; + // + cityId?: number; + // 首件数量/重量 + firstNum?: string; + // 收件价格 + firstAmount?: string; + // 续件价格 + extraAmount?: string; + // 续件数量/重量 + extraNum?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // + sortNumber?: number; +} + +/** + * 运费模板搜索条件 + */ +export interface ShopExpressTemplateDetailParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGift/index.ts b/src/api/shop/shopGift/index.ts new file mode 100644 index 0000000..9afda93 --- /dev/null +++ b/src/api/shop/shopGift/index.ts @@ -0,0 +1,260 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import {ShopGift, ShopGiftParam, GiftRedeemParam, GiftUseParam, QRCodeParam} from './model'; + +/** + * 分页查询礼品卡 + */ +export async function pageShopGift(params: ShopGiftParam) { + const res = await request.get>>( + '/shop/shop-gift/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询礼品卡列表 + */ +export async function listShopGift(params?: ShopGiftParam) { + const res = await request.get>( + '/shop/shop-gift', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加礼品卡 + */ +export async function addShopGift(data: ShopGift) { + const res = await request.post>( + '/shop/shop-gift', + data + ); + if (res.code === 0) { + return res.message; + } +} + +/** + * 生成礼品卡 + */ +export async function makeShopGift(data: ShopGift) { + const res = await request.post>( + '/shop/shop-gift/make', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改礼品卡 + */ +export async function updateShopGift(data: ShopGift) { + const res = await request.put>( + '/shop/shop-gift', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除礼品卡 + */ +export async function removeShopGift(id?: number) { + const res = await request.del>( + '/shop/shop-gift/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除礼品卡 + */ +export async function removeBatchShopGift(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-gift/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询礼品卡 + */ +export async function getShopGift(id: number) { + const res = await request.get>( + '/shop/shop-gift/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据code查询礼品卡 + * @param code + */ +export async function getShopGiftByCode(code: string) { + const res = await request.get>( + '/shop/shop-gift/by-code/' + code + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + + + +/** + * 兑换礼品卡 + */ +export async function redeemGift(params: GiftRedeemParam) { + const res = await request.post>( + '/shop/shop-gift/redeem', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 使用礼品卡 + */ +export async function useGift(params: GiftUseParam) { + const res = await request.post>( + '/shop/shop-gift/use', + params + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取用户的礼品卡列表 + */ +export async function getUserGifts(params: ShopGiftParam) { + const res = await request.get>>( + '/shop/shop-gift/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 验证礼品卡兑换码 + */ +export async function validateGiftCode(code: string) { + const res = await request.get>( + `/shop/shop-gift/validate/${code}` + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function exportShopGift(ids?: number[]) { + const res = await request.post>( + '/shop/shop-gift/export', + ids + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 生成礼品卡核销码(可用) + */ +export async function generateVerificationCode(data: QRCodeParam) { + const res = await request.post>( + '/qr-code/create-encrypted-qr-code', + data + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 验证核销码 + */ +export async function verifyGiftCard(params: { verificationCode?: string; giftCode?: string }) { + const res = await request.post>( + '/shop/shop-gift/verify', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 完成礼品卡核销 + */ +export async function completeVerification(params: { + giftId: number; + verificationCode: string; + storeId?: number; + storeName?: string; + operatorId?: number; + operatorName?: string; +}) { + const res = await request.post>( + '/shop/shop-gift/complete-verification', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 解密二维码数据 + */ +export async function decryptQrData(params: { token: string; encryptedData: string }) { + const res = await request.post>( + '/qr-code/decrypt-qr-data', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + diff --git a/src/api/shop/shopGift/model/index.ts b/src/api/shop/shopGift/model/index.ts new file mode 100644 index 0000000..f3c7450 --- /dev/null +++ b/src/api/shop/shopGift/model/index.ts @@ -0,0 +1,127 @@ +import type { PageParam } from '@/api'; + +/** + * 水票 + */ +export interface ShopGift { + // 礼品卡ID + id?: number; + // 礼品卡名称 + name?: string; + // 礼品卡描述 + description?: string; + // 礼品卡兑换码 + code?: string; + // 关联商品ID + goodsId?: number; + // 商品名称 + goodsName?: string; + // 商品图片 + goodsImage?: string; + // 礼品卡面值 + faceValue?: string; + // 礼品卡类型 (10实物礼品卡 20虚拟礼品卡 30服务礼品卡) + type?: number; + // 领取时间 + takeTime?: string; + // 过期时间 + expireTime?: string; + // 有效期天数 + validDays?: number; + // 操作人 + operatorUserId?: number; + // 操作人名称 + operatorUserName?: string; + // 是否展示 + isShow?: string; + // 状态 (0未使用 1已使用 2已过期 3已失效) + status?: number; + // 备注 + comments?: string; + // 使用说明 + instructions?: string; + // 排序号 + sortNumber?: number; + // 拥有者用户ID + userId?: number; + // 发放者用户ID + issuerUserId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 数量 + num?: number; + // 已发放数量 + issuedCount?: number; + // 总发放数量 + totalCount?: number; + // 使用门店/地址 + useLocation?: string; + // 客服联系方式 + contactInfo?: string; + // 核销时间 + verificationTime?: string; +} + +/** + * 礼品卡搜索条件 + */ +export interface ShopGiftParam extends PageParam { + id?: number; + keywords?: string; + code?: string; + // 礼品卡类型筛选 + type?: number; + // 状态筛选 (0未使用 1已使用 2失效) + status?: number; + // 用户ID筛选 + userId?: number; + // 商品ID筛选 + goodsId?: number; + // 是否过期筛选 + isExpired?: boolean; + // 排序字段 + sortBy?: 'createTime' | 'expireTime' | 'faceValue' | 'takeTime'; + // 排序方向 + sortOrder?: 'asc' | 'desc'; +} + +/** + * 礼品卡兑换参数 + */ +export interface GiftRedeemParam { + // 兑换码 + code: string; + // 用户ID + userId?: number; +} + +/** + * 礼品卡使用参数 + */ +export interface GiftUseParam { + // 礼品卡ID + giftId?: number; + // 使用地址/门店 + useLocation?: string; + // 使用备注 + useNote?: string; +} + +export interface QRCodeParam { + // 二维码数据 + data?: string; + // 二维码尺寸 + width?: number; + // 二维码高度 + height?: number; + // 二维码过期时间 + expireMinutes?: number; + // 业务类型 + businessType?: string; +} diff --git a/src/api/shop/shopGiftCard/index.ts b/src/api/shop/shopGiftCard/index.ts new file mode 100644 index 0000000..8136bb5 --- /dev/null +++ b/src/api/shop/shopGiftCard/index.ts @@ -0,0 +1,21 @@ +import request from '@/utils/request' +import type { ShopGiftCard } from './model' + +/** 获取我的礼品卡列表 */ +export function listMyGiftCards() { + return request.get<{ code: number; data: ShopGiftCard[] }>('/shop/shop-gift/my') +} + +/** 绑定/兑换礼品卡 + * @param code - 礼品卡代码 + */ +export function bindGiftCard(code: string) { + return request.post<{ code: number; message: string }>('/shop/shop-gift/bind', { + code, + }) +} + +/** 获取礼品卡余额(从用户卡包统计中获取) */ +export function getGiftCardBalance() { + return request.get<{ code: number; data: { giftCards: number } }>('/user/card/stats') +} diff --git a/src/api/shop/shopGiftCard/model.ts b/src/api/shop/shopGiftCard/model.ts new file mode 100644 index 0000000..f16c42e --- /dev/null +++ b/src/api/shop/shopGiftCard/model.ts @@ -0,0 +1,29 @@ +/** 礼品卡 */ +export interface ShopGiftCard { + id: number + /** 卡号 */ + cardNo: string + /** 密码 */ + password?: string + /** 面额 */ + faceValue: number + /** 余额 */ + balance: number + /** 状态:0-未激活 1-正常 2-已用完 3-已过期 */ + status: number + /** 有效期 */ + expireTime: string + /** 创建时间 */ + createTime: string +} + +/** 礼品卡购买参数 */ +export interface GiftCardPurchaseParams { + amount: number + paymentMethod: number +} + +/** 礼品卡兑换参数 */ +export interface GiftCardExchangeParams { + code: string +} diff --git a/src/api/shop/shopGoods/index.ts b/src/api/shop/shopGoods/index.ts new file mode 100644 index 0000000..9b3a3a9 --- /dev/null +++ b/src/api/shop/shopGoods/index.ts @@ -0,0 +1,112 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopGoods, ShopGoodsParam } from './model'; + + +/** + * 分页查询商品 + */ +export async function pageShopGoods(params: ShopGoodsParam) { + const res = await request.get>>( + '/shop/shop-goods/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商品列表 + */ +export async function listShopGoods(params?: ShopGoodsParam) { + const res = await request.get>( + '/shop/shop-goods', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商品 + */ +export async function addShopGoods(data: ShopGoods) { + const res = await request.post>( + '/shop/shop-goods', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商品 + */ +export async function updateShopGoods(data: ShopGoods) { + const res = await request.put>( + '/shop/shop-goods', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商品 + */ +export async function removeShopGoods(id?: number) { + const res = await request.del>( + '/shop/shop-goods/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商品 + */ +export async function removeBatchShopGoods(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-goods/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商品 + */ +export async function getShopGoods(id: number) { + const res = await request.get>( + '/shop/shop-goods/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +export async function getCount(params: ShopGoodsParam) { + const res = await request.get>('/shop/shop-goods/data', { + params + }); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopGoods/model/index.ts b/src/api/shop/shopGoods/model/index.ts new file mode 100644 index 0000000..fe12790 --- /dev/null +++ b/src/api/shop/shopGoods/model/index.ts @@ -0,0 +1,158 @@ +import type { PageParam } from '@/api/index'; +import { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model'; +import { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model'; +import { ShopGoodsRoleCommission } from '@/api/shop/shopGoodsRoleCommission/model'; + +export interface GoodsCount { + totalNum: number; + totalNum2: number; + totalNum3: number; + totalNum4: number; +} +/** + * 商品记录表 + */ +export interface ShopGoods { + // 自增ID + goodsId?: number; + // 类型 1实物商品 2虚拟商品 + type?: number; + // 商品编码 + code?: string; + // 商品名称 + name?: string; + // 商品标题 + goodsName?: string; + // 商品封面图 + image?: string; + video?: string; + // 商品详情 + content?: string; + canExpress?: number; + // 商品分类 + category?: string; + // 商品分类ID + categoryId?: number; + parentName?: string; + categoryName?: string; + // 一级分类 + categoryParent?: string; + // 二级分类 + categoryChildren?: string; + // 商品规格 0单规格 1多规格 + specs?: number; + commissionRole?: number; + // 货架 + position?: string; + // 进货价 + buyingPrice?: string; + // 商品价格 + price?: string; + originPrice?: string; + // 销售价格 + salePrice?: string; + chainStorePrice?: string; + chainStoreRate?: string; + memberStoreRate?: string; + memberMarketRate?: string; + memberStoreCommission?: string; + supplierCommission?: string; + coopCommission?: string; + memberStorePrice?: string; + memberMarketPrice?: string; + // 经销商价格 + dealerPrice?: string; + // 有赠品 + buyingGift?: boolean; + // 有赠品 + priceGift?: boolean; + // 有赠品 + dealerGift?: boolean; + buyingGiftNum?: number; + priceGiftNum?: number; + priceGiftName?: string; + dealerGiftNum?: number; + // 库存计算方式(10下单减库存 20付款减库存) + deductStockType?: number; + // 封面图 + files?: string; + // 销量 + sales?: number; + isNew?: number; + // 库存 + stock?: number; + // 步长 + step?: number; + // 商品重量 + goodsWeight?: number; + // 消费赚取积分 + gainIntegral?: number; + // 推荐 + recommend?: number; + // 商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + supplierMerchantId?: number; + supplierName?: string; + // 状态(0:未上架,1:上架) + isShow?: number; + // 状态, 0上架 1待上架 2待审核 3审核不通过 + status?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 显示规格名 + specName?: string; + // 商品规格 + goodsSpecs?: ShopGoodsSpec[]; + goodsRoleCommission?: ShopGoodsRoleCommission[]; + // 商品sku列表 + goodsSkus?: ShopGoodsSku[]; + // 单位名称 + unitName?: string; + expressTemplateId?: number; + canUseDate?: string; + ensureTag?: string; + expiredDay?: number; + // 可购买数量 + canBuyNumber?: number; + // 活动方式:0全平台 1新用户专享 + activityType?: number; + // 配送方式:0送上门 1限自提 + deliveryMode?: number; +} + +export interface BathSet { + price?: number; + salePrice?: number; + stock?: number; + skuNo?: string; +} + +/** + * 商品记录表搜索条件 + */ +export interface ShopGoodsParam extends PageParam { + parentId?: number; + categoryId?: number; + goodsId?: number; + goodsName?: string; + isShow?: number; + stock?: number; + keywords?: string; + recommend?: number; + // 0上架 1下架(以实际后端约定为准) + status?: number; +} diff --git a/src/api/shop/shopGoodsCategory/index.ts b/src/api/shop/shopGoodsCategory/index.ts new file mode 100644 index 0000000..3df88c0 --- /dev/null +++ b/src/api/shop/shopGoodsCategory/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopGoodsCategory, ShopGoodsCategoryParam } from './model'; + +/** + * 分页查询商品分类 + */ +export async function pageShopGoodsCategory(params: ShopGoodsCategoryParam) { + const res = await request.get>>( + '/shop/shop-goods-category/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商品分类列表 + */ +export async function listShopGoodsCategory(params?: ShopGoodsCategoryParam) { + const res = await request.get>( + '/shop/shop-goods-category', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商品分类 + */ +export async function addShopGoodsCategory(data: ShopGoodsCategory) { + const res = await request.post>( + '/shop/shop-goods-category', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商品分类 + */ +export async function updateShopGoodsCategory(data: ShopGoodsCategory) { + const res = await request.put>( + '/shop/shop-goods-category', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商品分类 + */ +export async function removeShopGoodsCategory(id?: number) { + const res = await request.del>( + '/shop/shop-goods-category/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商品分类 + */ +export async function removeBatchShopGoodsCategory(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-goods-category/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商品分类 + */ +export async function getShopGoodsCategory(id: number) { + const res = await request.get>( + '/shop/shop-goods-category/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopGoodsCategory/model/index.ts b/src/api/shop/shopGoodsCategory/model/index.ts new file mode 100644 index 0000000..c56c8b1 --- /dev/null +++ b/src/api/shop/shopGoodsCategory/model/index.ts @@ -0,0 +1,64 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商品分类 + */ +export interface ShopGoodsCategory { + // 商品分类ID + categoryId?: number; + // 分类标识 + categoryCode?: string; + // 分类名称 + title?: string; + // 类型 0商城分类 1外卖分类 + type?: number; + // 分类图片 + image?: string; + // 上级分类ID + parentId?: number; + // 路由/链接地址 + path?: string; + // 组件路径 + component?: string; + // 绑定的页面 + pageId?: number; + // 用户ID + userId?: number; + // 商品数量 + count?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 是否推荐 + recommend?: number; + // 是否显示在首页 + showIndex?: number; + // 商铺ID + merchantId?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 子菜单 + children?: ShopGoodsCategory[]; + key?: number; + value?: number; + label?: string; +} + +/** + * 商品分类搜索条件 + */ +export interface ShopGoodsCategoryParam extends PageParam { + categoryId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsComment/index.ts b/src/api/shop/shopGoodsComment/index.ts new file mode 100644 index 0000000..2f29fb6 --- /dev/null +++ b/src/api/shop/shopGoodsComment/index.ts @@ -0,0 +1,69 @@ +import request from '@/utils/request' +import type { ShopGoodsComment, SubmitCommentParams, CommentPageParams } from './model' + +/** + * 提交商品评价 + * @desc 对接 Java 后端 /api/shop/shopGoodsComment + */ +export function submitGoodsComment(data: SubmitCommentParams) { + return request.post<{ code: number; message: string }>('/shop/shopGoodsComment', { + goodsId: data.goodsId, + oid: data.oid || data.orderId, + unique: data.unique, + replyType: data.replyType, + goodsScore: data.goodsScore, + serviceScore: data.serviceScore || 5, + comment: data.comment || data.content, + pics: data.pics || data.images?.join(','), + }) +} + +/** + * 分页查询商品评价 + * @desc 对接 Java 后端 /api/shop/shopGoodsComment/page + */ +export function pageGoodsComment(params: CommentPageParams = {}) { + return request.get<{ + code: number + data: { + records: ShopGoodsComment[] + total: number + size: number + current: number + } + }>('/shop/shopGoodsComment/page', { + params: { + page: params.page || 1, + size: params.pageSize || 10, + goodsId: params.goodsId, + oid: params.oid || params.orderId, + }, + }) +} + +/** + * 查询我的评价列表 + * @desc 对接 Java 后端 /api/shop/shopGoodsComment + */ +export function myGoodsComment(params: { page?: number; pageSize?: number } = {}) { + return request.get<{ + code: number + data: { + records: ShopGoodsComment[] + total: number + } + }>('/shop/shopGoodsComment', { + params: { + page: params.page || 1, + size: params.pageSize || 10, + }, + }) +} + +/** + * 获取评价详情 + * @desc 对接 Java 后端 /api/shop/shopGoodsComment/{id} + */ +export function getGoodsComment(id: number) { + return request.get<{ code: number; data: ShopGoodsComment }>(`/shop/shopGoodsComment/${id}`) +} diff --git a/src/api/shop/shopGoodsComment/model.ts b/src/api/shop/shopGoodsComment/model.ts new file mode 100644 index 0000000..f0e4d00 --- /dev/null +++ b/src/api/shop/shopGoodsComment/model.ts @@ -0,0 +1,77 @@ +/** 商品评价 - 对接 Java 后端 /api/shop/shopGoodsComment */ +export interface ShopGoodsComment { + /** 评论ID */ + id: number + /** 用户ID */ + uid?: number + userId?: number + /** 订单ID */ + oid?: number + orderId?: number + /** 商品唯一标识 */ + unique?: string + /** 商品ID */ + goodsId?: number + /** 商品类型(普通商品、秒杀商品) */ + replyType?: string + /** 商品分数 */ + goodsScore?: boolean | number + /** 服务分数 */ + serviceScore?: boolean | number + /** 评论内容 */ + comment?: string + content?: string + /** 评论图片(逗号分隔) */ + pics?: string + images?: string[] + /** 商家回复内容 */ + merchantReplyContent?: string + reply?: string + /** 商家回复时间 */ + merchantReplyTime?: number + replyTime?: number + /** 用户名称 */ + nickname?: string + /** 用户头像 */ + avatar?: string + /** 商品规格属性值 */ + sku?: string + /** 状态: 0正常, 1冻结 */ + status?: number + /** 创建时间 */ + createTime?: string +} + +/** 提交评价参数 - 对接 Java 后端 */ +export interface SubmitCommentParams { + /** 订单ID */ + oid?: number + orderId?: number + /** 商品ID */ + goodsId: number + /** 商品唯一标识 */ + unique?: string + /** 商品类型 */ + replyType?: string + /** 商品分数 (1-5) */ + goodsScore: number + /** 服务分数 (1-5) */ + serviceScore?: number + /** 评论内容 */ + comment: string + content?: string + /** 评论图片(逗号分隔) */ + pics?: string + images?: string[] +} + +/** 评价分页参数 */ +export interface CommentPageParams { + page?: number + pageSize?: number + /** 商品ID筛选 */ + goodsId?: number + /** 订单ID筛选 */ + oid?: number + orderId?: number +} diff --git a/src/api/shop/shopGoodsEvaluate/index.ts b/src/api/shop/shopGoodsEvaluate/index.ts new file mode 100644 index 0000000..3c73131 --- /dev/null +++ b/src/api/shop/shopGoodsEvaluate/index.ts @@ -0,0 +1,22 @@ +import request from '@/utils/request' +import type { ShopGoodsEvaluate, SubmitEvaluateParams, EvaluatePageParams } from './model' + +/** 提交商品评价 */ +export function submitGoodsEvaluate(data: SubmitEvaluateParams) { + return request.post('/shopGoodsEvaluate/submit', data) +} + +/** 获取商品评价列表 */ +export function pageGoodsEvaluate(params: EvaluatePageParams = {}) { + return request.post<{ items: ShopGoodsEvaluate[]; total: number }>('/shopGoodsEvaluate/page', params) +} + +/** 获取我的评价列表 */ +export function myGoodsEvaluate(params: { page?: number; pageSize?: number } = {}) { + return request.post<{ items: ShopGoodsEvaluate[]; total: number }>('/shopGoodsEvaluate/myList', params) +} + +/** 获取评价详情 */ +export function getGoodsEvaluate(id: number) { + return request.post('/shopGoodsEvaluate/get', { id }) +} diff --git a/src/api/shop/shopGoodsEvaluate/model.ts b/src/api/shop/shopGoodsEvaluate/model.ts new file mode 100644 index 0000000..5846ae9 --- /dev/null +++ b/src/api/shop/shopGoodsEvaluate/model.ts @@ -0,0 +1,39 @@ +/** 商品评价 */ +export interface ShopGoodsEvaluate { + id: number + orderId: number + orderGoodsId: number + goodsId: number + goodsName?: string + goodsImage?: string + userId: number + nickname: string + avatar?: string + rating: number + content: string + images?: string[] + isAnonymous: boolean + createTime: string + /** 商家回复 */ + reply?: string + replyTime?: string +} + +/** 提交评价参数 */ +export interface SubmitEvaluateParams { + orderId: number + orderGoodsId: number + goodsId: number + rating: number + content: string + images?: string[] + isAnonymous?: boolean +} + +/** 分页参数 */ +export interface EvaluatePageParams { + page?: number + pageSize?: number + goodsId?: number + orderId?: number +} diff --git a/src/api/shop/shopGoodsFavorite/index.ts b/src/api/shop/shopGoodsFavorite/index.ts new file mode 100644 index 0000000..83be18a --- /dev/null +++ b/src/api/shop/shopGoodsFavorite/index.ts @@ -0,0 +1,27 @@ +import request from '@/utils/request' +import type { ShopGoodsFavorite, ShopGoodsFavoriteParam } from './model' + +// 添加收藏 +export function addShopGoodsFavorite(data: { goodsId: number }) { + return request.post('/shop/goods/favorite/add', data) +} + +// 取消收藏 +export function removeShopGoodsFavorite(data: { goodsId: number }) { + return request.post('/shop/goods/favorite/remove', data) +} + +// 查询收藏状态 +export function getShopGoodsFavoriteStatus(params: { goodsId: number }) { + return request.get('/shop/goods/favorite/status', params) +} + +// 收藏列表 +export function listShopGoodsFavorite(params: ShopGoodsFavoriteParam) { + return request.get('/shop/goods/favorite/list', params) +} + +// 收藏列表(分页) +export function pageShopGoodsFavorite(params: ShopGoodsFavoriteParam) { + return request.get<{ list: ShopGoodsFavorite[]; total: number }>('/shop/goods/favorite/page', params) +} diff --git a/src/api/shop/shopGoodsFavorite/model.ts b/src/api/shop/shopGoodsFavorite/model.ts new file mode 100644 index 0000000..2a89dac --- /dev/null +++ b/src/api/shop/shopGoodsFavorite/model.ts @@ -0,0 +1,15 @@ +export interface ShopGoodsFavorite { + favoriteId?: number + userId?: number + goodsId?: number + createTime?: string + goodsName?: string + goodsImage?: string + salePrice?: string +} + +export interface ShopGoodsFavoriteParam { + page?: number + limit?: number + userId?: number +} diff --git a/src/api/shop/shopGoodsRoleCommission/index.ts b/src/api/shop/shopGoodsRoleCommission/index.ts new file mode 100644 index 0000000..c047baf --- /dev/null +++ b/src/api/shop/shopGoodsRoleCommission/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { ShopGoodsRoleCommission, ShopGoodsRoleCommissionParam } from '@/api/shop/shopGoodsRoleCommission/model'; + +/** + * 分页查询商品绑定角色的分润金额 + */ +export async function pageShopGoodsRoleCommission(params: ShopGoodsRoleCommissionParam) { + const res = await request.get>>( + '/shop/shop-goods-role-commission/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商品绑定角色的分润金额列表 + */ +export async function listShopGoodsRoleCommission(params?: ShopGoodsRoleCommissionParam) { + const res = await request.get>( + '/shop/shop-goods-role-commission', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商品绑定角色的分润金额 + */ +export async function addShopGoodsRoleCommission(data: ShopGoodsRoleCommission) { + const res = await request.post>( + '/shop/shop-goods-role-commission', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商品绑定角色的分润金额 + */ +export async function updateShopGoodsRoleCommission(data: ShopGoodsRoleCommission) { + const res = await request.put>( + '/shop/shop-goods-role-commission', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商品绑定角色的分润金额 + */ +export async function removeShopGoodsRoleCommission(id?: number) { + const res = await request.del>( + '/shop/shop-goods-role-commission/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商品绑定角色的分润金额 + */ +export async function removeBatchShopGoodsRoleCommission(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-goods-role-commission/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商品绑定角色的分润金额 + */ +export async function getShopGoodsRoleCommission(id: number) { + const res = await request.get>( + '/shop/shop-goods-role-commission/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopGoodsRoleCommission/model/index.ts b/src/api/shop/shopGoodsRoleCommission/model/index.ts new file mode 100644 index 0000000..6db1178 --- /dev/null +++ b/src/api/shop/shopGoodsRoleCommission/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商品绑定角色的分润金额 + */ +export interface ShopGoodsRoleCommission { + // + id?: number; + // + roleId?: number; + // + goodsId?: number; + // + sku?: string; + // + amount?: string; + // 状态, 0正常, 1异常 + status?: number; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // + sortNumber?: number; +} + +/** + * 商品绑定角色的分润金额搜索条件 + */ +export interface ShopGoodsRoleCommissionParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsSku/index.ts b/src/api/shop/shopGoodsSku/index.ts new file mode 100644 index 0000000..8458fcb --- /dev/null +++ b/src/api/shop/shopGoodsSku/index.ts @@ -0,0 +1,113 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model'; +import { ShopGoodsSku, ShopGoodsSkuParam } from '@/api/shop/shopGoodsSku/model'; + +export async function generateGoodsSku(data: ShopGoodsSpec) { + const res = await request.post>( + '/shop/goods-sku/generateGoodsSku', + data + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 分页查询商品sku列表 + */ +export async function pageShopGoodsSku(params: ShopGoodsSkuParam) { + const res = await request.get>>( + '/shop/shop-goods-sku/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商品sku列表列表 + */ +export async function listShopGoodsSku(params?: ShopGoodsSkuParam) { + const res = await request.get>( + '/shop/shop-goods-sku', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商品sku列表 + */ +export async function addShopGoodsSku(data: ShopGoodsSku) { + const res = await request.post>( + '/shop/shop-goods-sku', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商品sku列表 + */ +export async function updateShopGoodsSku(data: ShopGoodsSku) { + const res = await request.put>( + '/shop/shop-goods-sku', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商品sku列表 + */ +export async function removeShopGoodsSku(id?: number) { + const res = await request.del>( + '/shop/shop-goods-sku/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商品sku列表 + */ +export async function removeBatchShopGoodsSku(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-goods-sku/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商品sku列表 + */ +export async function getShopGoodsSku(id: number) { + const res = await request.get>( + '/shop/shop-goods-sku/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopGoodsSku/model/index.ts b/src/api/shop/shopGoodsSku/model/index.ts new file mode 100644 index 0000000..0880d7f --- /dev/null +++ b/src/api/shop/shopGoodsSku/model/index.ts @@ -0,0 +1,50 @@ +import type { PageParam } from '@/api'; + +/** + * 商品sku列表 + */ +export interface ShopGoodsSku { + // 主键ID + id?: number; + // 商品ID + goodsId?: number; + // 商品属性索引值 (attr_value|attr_value[|....]) + sku?: string; + // 商品图片 + image?: string; + // 商品价格 + price?: string; + // 市场价格 + salePrice?: string; + // 成本价 + cost?: string; + // 库存 + stock?: number; + // sku编码 + skuNo?: string; + // 商品条码 + barCode?: string; + // 重量 + weight?: string; + // 体积 + volume?: string; + // 唯一值 + uuid?: string; + // 状态, 0正常, 1异常 + status?: number; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + images?: string; +} + +/** + * 商品sku列表搜索条件 + */ +export interface ShopGoodsSkuParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsSpec/index.ts b/src/api/shop/shopGoodsSpec/index.ts new file mode 100644 index 0000000..5dde057 --- /dev/null +++ b/src/api/shop/shopGoodsSpec/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopGoodsSpec, ShopGoodsSpecParam } from './model'; + +/** + * 分页查询商品多规格 + */ +export async function pageShopGoodsSpec(params: ShopGoodsSpecParam) { + const res = await request.get>>( + '/shop/shop-goods-spec/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商品多规格列表 + */ +export async function listShopGoodsSpec(params?: ShopGoodsSpecParam) { + const res = await request.get>( + '/shop/shop-goods-spec', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商品多规格 + */ +export async function addShopGoodsSpec(data: ShopGoodsSpec) { + const res = await request.post>( + '/shop/shop-goods-spec', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商品多规格 + */ +export async function updateShopGoodsSpec(data: ShopGoodsSpec) { + const res = await request.put>( + '/shop/shop-goods-spec', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商品多规格 + */ +export async function removeShopGoodsSpec(id?: number) { + const res = await request.del>( + '/shop/shop-goods-spec/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商品多规格 + */ +export async function removeBatchShopGoodsSpec(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-goods-spec/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商品多规格 + */ +export async function getShopGoodsSpec(id: number) { + const res = await request.get>( + '/shop/shop-goods-spec/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopGoodsSpec/model/index.ts b/src/api/shop/shopGoodsSpec/model/index.ts new file mode 100644 index 0000000..44a6644 --- /dev/null +++ b/src/api/shop/shopGoodsSpec/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 商品多规格 + */ +export interface ShopGoodsSpec { + // 主键 + id?: number; + // 商品ID + goodsId?: number; + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + type?: string; + // 租户id + tenantId?: number; +} + +/** + * 商品多规格搜索条件 + */ +export interface ShopGoodsSpecParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGroupBuy/index.ts b/src/api/shop/shopGroupBuy/index.ts new file mode 100644 index 0000000..a7be827 --- /dev/null +++ b/src/api/shop/shopGroupBuy/index.ts @@ -0,0 +1,36 @@ +import request from '@/utils/request' +import type { + ShopGroupBuy, + ShopGroupBuyRecord, + ShopGroupBuyPageParams, +} from './model' + +/** 获取拼团商品列表 */ +export function pageShopGroupBuy(params: ShopGroupBuyPageParams = {}) { + return request.post<{ items: ShopGroupBuy[]; total: number }>('/shopGroupBuy/page', params) +} + +/** 获取拼团商品详情 */ +export function getShopGroupBuy(id: number) { + return request.post('/shopGroupBuy/get', { id }) +} + +/** 获取进行中的拼团记录(可参团) */ +export function listShopGroupBuyRecords(groupBuyId: number) { + return request.post('/shopGroupBuy/listRecords', { groupBuyId }) +} + +/** 发起拼团 */ +export function createGroupBuy(data: { groupBuyId: number; goodsId: number; skuId: number; quantity: number }) { + return request.post('/shopGroupBuy/create', data) +} + +/** 参与拼团 */ +export function joinGroupBuy(data: { recordId: number; goodsId: number; skuId: number; quantity: number }) { + return request.post('/shopGroupBuy/join', data) +} + +/** 获取我的拼团记录 */ +export function myGroupBuyRecords(params: { page?: number; pageSize?: number } = {}) { + return request.post<{ items: ShopGroupBuyRecord[]; total: number }>('/shopGroupBuy/myRecords', params) +} diff --git a/src/api/shop/shopGroupBuy/model.ts b/src/api/shop/shopGroupBuy/model.ts new file mode 100644 index 0000000..162af4a --- /dev/null +++ b/src/api/shop/shopGroupBuy/model.ts @@ -0,0 +1,61 @@ +/** 拼团活动 */ +export interface ShopGroupBuy { + id: number + goodsId: number + goodsName?: string + goodsImage?: string + /** 拼团价格 */ + groupPrice: number + /** 成团人数 */ + groupSize: number + /** 已参团人数 */ + currentSize: number + /** 开始时间 */ + startTime: string + /** 结束时间 */ + endTime: string + /** 状态:0-未开始 1-进行中 2-已结束 */ + status: number + /** 商品详情 */ + product?: { + id: number + name: string + image: string + price: number + } +} + +/** 拼团记录 */ +export interface ShopGroupBuyRecord { + id: number + groupBuyId: number + userId: number + /** 团长ID */ + leaderId: number + /** 是否团长 */ + isLeader: boolean + /** 参团人数 */ + memberCount: number + /** 状态:0-待成团 1-已成团 2-已失败 */ + status: number + /** 过期时间 */ + expireTime: string + /** 成员列表 */ + members?: ShopGroupBuyMember[] +} + +/** 拼团成员 */ +export interface ShopGroupBuyMember { + id: number + userId: number + nickname: string + avatar: string + joinTime: string +} + +/** 分页参数 */ +export interface ShopGroupBuyPageParams { + page?: number + pageSize?: number + status?: number +} diff --git a/src/api/shop/shopInvite/index.ts b/src/api/shop/shopInvite/index.ts new file mode 100644 index 0000000..ba38f75 --- /dev/null +++ b/src/api/shop/shopInvite/index.ts @@ -0,0 +1,278 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { BaseUrl } from '@/config/app'; + +/** + * 小程序码生成参数 + */ +export interface MiniProgramCodeParam { + // 小程序页面路径 + page?: string; + // 场景值,最大32个可见字符 + scene: string; + // 二维码宽度,单位 px,最小 280px,最大 1280px + width?: number; + // 是否检查页面是否存在 + checkPath?: boolean; + // 环境版本 + envVersion?: 'release' | 'trial' | 'develop'; +} + +/** + * 邀请关系参数 + */ +export interface InviteRelationParam { + // 邀请人ID + inviterId: number; + // 被邀请人ID + inviteeId: number; + // 邀请来源 + source: string; + // 场景值 + scene?: string; + // 邀请时间 + inviteTime?: string; +} + +/** + * 绑定推荐关系参数 + */ +export interface BindRefereeParam { + // 推荐人ID + dealerId: number; + // 被推荐人ID (可选,如果不传则使用当前登录用户) + userId?: number; + // 推荐来源 + source?: string; + // 场景值 + scene?: string; +} + +/** + * 邀请统计数据 + */ +export interface InviteStats { + // 总邀请数 + totalInvites: number; + // 成功注册数 + successfulRegistrations: number; + // 转化率 + conversionRate: number; + // 今日邀请数 + todayInvites: number; + // 本月邀请数 + monthlyInvites: number; + // 邀请来源统计 + sourceStats: InviteSourceStat[]; +} + +/** + * 邀请来源统计 + */ +export interface InviteSourceStat { + source: string; + count: number; + successCount: number; + conversionRate: number; +} + +/** + * 邀请记录 + */ +export interface InviteRecord { + id?: number; + inviterId?: number; + inviteeId?: number; + inviterName?: string; + inviteeName?: string; + source?: string; + scene?: string; + status?: 'pending' | 'registered' | 'activated'; + inviteTime?: string; + registerTime?: string; + activateTime?: string; +} + +/** + * 邀请记录查询参数 + */ +export interface InviteRecordParam { + page?: number; + limit?: number; + inviterId?: number; + status?: string; + source?: string; + startTime?: string; + endTime?: string; +} + +/** + * 生成小程序码 + */ +export async function generateMiniProgramCode(data: MiniProgramCodeParam) { + try { + const url = '/wx-login/getOrderQRCodeUnlimited/' + data.scene; + // 由于接口直接返回图片buffer,我们直接构建完整的URL + return `${BaseUrl}${url}`; + } catch (error: any) { + throw new Error(error.message || '生成小程序码失败'); + } +} + +/** + * 生成邀请小程序码 + */ +export async function generateInviteCode(inviterId: number) { + const scene = `uid_${inviterId}`; + + return generateMiniProgramCode({ + page: 'pages/index/index', + scene: scene, + width: 180, + checkPath: true, + envVersion: 'trial' + }); +} + +/** + * 建立邀请关系 (旧接口,保留兼容性) + */ +export async function createInviteRelation(data: InviteRelationParam) { + const res = await request.post>( + '/invite/create-relation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 绑定推荐关系 (新接口) + */ +export async function bindRefereeRelation(data: BindRefereeParam) { + try { + const res = await request.post>( + '/shop/shop-dealer-referee', + { + dealerId: data.dealerId, + userId: data.userId, + source: data.source || 'qrcode', + scene: data.scene + } + ); + + if (res.code === 0) { + return res.data; + } + + throw new Error(res.message || '绑定推荐关系失败'); + } catch (error: any) { + console.error('绑定推荐关系API调用失败:', error); + throw new Error(error.message || '绑定推荐关系失败'); + } +} + +/** + * 处理邀请场景值 + */ +export async function processInviteScene(scene: string, userId: number) { + const res = await request.post>( + '/invite/process-scene', + { scene, userId } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取邀请统计数据 + */ +export async function getInviteStats(inviterId: number) { + const res = await request.get>( + `/invite/stats/${inviterId}` + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 分页查询邀请记录 + */ +export async function pageInviteRecords(params: InviteRecordParam) { + const res = await request.get>>( + '/invite/records/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取我的邀请记录 + */ +export async function getMyInviteRecords(params: InviteRecordParam) { + const res = await request.get>>( + '/invite/my-records', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 验证邀请码有效性 + */ +export async function validateInviteCode(scene: string) { + const res = await request.post>( + '/invite/validate-code', + { scene } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 更新邀请状态 + */ +export async function updateInviteStatus(inviteId: number, status: 'registered' | 'activated') { + const res = await request.put>( + `/invite/update-status/${inviteId}`, + { status } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取邀请排行榜 + */ +export async function getInviteRanking(params?: { limit?: number; period?: 'day' | 'week' | 'month' }) { + const res = await request.get>>( + '/invite/ranking', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopInvite/model/index.ts b/src/api/shop/shopInvite/model/index.ts new file mode 100644 index 0000000..11aada9 --- /dev/null +++ b/src/api/shop/shopInvite/model/index.ts @@ -0,0 +1,279 @@ +import type { PageParam } from '@/api/index'; + +/** + * 邀请记录表 + */ +export interface InviteRecord { + // 主键ID + id?: number; + // 邀请人ID + inviterId?: number; + // 被邀请人ID + inviteeId?: number; + // 邀请人姓名 + inviterName?: string; + // 被邀请人姓名 + inviteeName?: string; + // 邀请来源 (qrcode, link, share等) + source?: string; + // 场景值 + scene?: string; + // 邀请状态: pending-待注册, registered-已注册, activated-已激活 + status?: 'pending' | 'registered' | 'activated'; + // 邀请时间 + inviteTime?: string; + // 注册时间 + registerTime?: string; + // 激活时间 + activateTime?: string; + // 备注 + comments?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 邀请统计表 + */ +export interface InviteStats { + // 主键ID + id?: number; + // 邀请人ID + inviterId?: number; + // 统计日期 + statDate?: string; + // 总邀请数 + totalInvites?: number; + // 成功注册数 + successfulRegistrations?: number; + // 激活用户数 + activatedUsers?: number; + // 转化率 + conversionRate?: number; + // 今日邀请数 + todayInvites?: number; + // 本周邀请数 + weeklyInvites?: number; + // 本月邀请数 + monthlyInvites?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 邀请来源统计表 + */ +export interface InviteSourceStats { + // 主键ID + id?: number; + // 邀请人ID + inviterId?: number; + // 来源类型 + source?: string; + // 来源名称 + sourceName?: string; + // 邀请数量 + inviteCount?: number; + // 成功数量 + successCount?: number; + // 转化率 + conversionRate?: number; + // 统计日期 + statDate?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 小程序码记录表 + */ +export interface MiniProgramCode { + // 主键ID + id?: number; + // 邀请人ID + inviterId?: number; + // 场景值 + scene?: string; + // 小程序码URL + codeUrl?: string; + // 页面路径 + pagePath?: string; + // 二维码宽度 + width?: number; + // 环境版本 + envVersion?: string; + // 过期时间 + expireTime?: string; + // 使用次数 + useCount?: number; + // 最后使用时间 + lastUseTime?: string; + // 状态: active-有效, expired-过期, disabled-禁用 + status?: 'active' | 'expired' | 'disabled'; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 邀请记录搜索条件 + */ +export interface InviteRecordParam extends PageParam { + // 邀请人ID + inviterId?: number; + // 被邀请人ID + inviteeId?: number; + // 邀请状态 + status?: string; + // 邀请来源 + source?: string; + // 开始时间 + startTime?: string; + // 结束时间 + endTime?: string; + // 关键词搜索 + keywords?: string; +} + +/** + * 邀请统计搜索条件 + */ +export interface InviteStatsParam extends PageParam { + // 邀请人ID + inviterId?: number; + // 统计开始日期 + startDate?: string; + // 统计结束日期 + endDate?: string; +} + +/** + * 邀请来源统计搜索条件 + */ +export interface InviteSourceStatsParam extends PageParam { + // 邀请人ID + inviterId?: number; + // 来源类型 + source?: string; + // 统计开始日期 + startDate?: string; + // 统计结束日期 + endDate?: string; +} + +/** + * 小程序码搜索条件 + */ +export interface MiniProgramCodeParam extends PageParam { + // 邀请人ID + inviterId?: number; + // 状态 + status?: string; + // 场景值 + scene?: string; +} + +/** + * 邀请排行榜数据 + */ +export interface InviteRanking { + // 邀请人ID + inviterId?: number; + // 邀请人姓名 + inviterName?: string; + // 邀请人头像 + inviterAvatar?: string; + // 邀请数量 + inviteCount?: number; + // 成功数量 + successCount?: number; + // 转化率 + conversionRate?: number; + // 排名 + rank?: number; + // 奖励金额 + rewardAmount?: number; +} + +/** + * 邀请奖励配置 + */ +export interface InviteRewardConfig { + // 主键ID + id?: number; + // 奖励类型: register-注册奖励, activate-激活奖励, order-订单奖励 + rewardType?: string; + // 奖励名称 + rewardName?: string; + // 奖励金额 + rewardAmount?: number; + // 奖励积分 + rewardPoints?: number; + // 奖励优惠券ID + couponId?: number; + // 是否启用 + enabled?: boolean; + // 生效时间 + effectTime?: string; + // 失效时间 + expireTime?: string; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 邀请奖励记录 + */ +export interface InviteRewardRecord { + // 主键ID + id?: number; + // 邀请记录ID + inviteRecordId?: number; + // 邀请人ID + inviterId?: number; + // 被邀请人ID + inviteeId?: number; + // 奖励类型 + rewardType?: string; + // 奖励金额 + rewardAmount?: number; + // 奖励积分 + rewardPoints?: number; + // 优惠券ID + couponId?: number; + // 发放状态: pending-待发放, issued-已发放, failed-发放失败 + status?: 'pending' | 'issued' | 'failed'; + // 发放时间 + issueTime?: string; + // 失败原因 + failReason?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} diff --git a/src/api/shop/shopInvoiceTitle/index.ts b/src/api/shop/shopInvoiceTitle/index.ts new file mode 100644 index 0000000..f2509c5 --- /dev/null +++ b/src/api/shop/shopInvoiceTitle/index.ts @@ -0,0 +1,166 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopInvoiceTitle, ShopInvoiceTitleParam, ShopInvoiceRecord, ShopInvoiceRecordParam, InvoiceApplyRequest } from './model'; + +/** + * 分页查询发票抬头 + */ +export async function pageShopInvoiceTitle(params: ShopInvoiceTitleParam) { + const res = await request.get>>( + '/shop/shop-invoice-title/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询发票抬头列表 + */ +export async function listShopInvoiceTitle(params?: ShopInvoiceTitleParam) { + const res = await request.get>( + '/shop/shop-invoice-title', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加发票抬头 + */ +export async function addShopInvoiceTitle(data: ShopInvoiceTitle) { + const res = await request.post>( + '/shop/shop-invoice-title', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改发票抬头 + */ +export async function updateShopInvoiceTitle(data: ShopInvoiceTitle) { + const res = await request.put>( + '/shop/shop-invoice-title', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除发票抬头 + */ +export async function removeShopInvoiceTitle(id?: number) { + const res = await request.del>( + '/shop/shop-invoice-title/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询发票抬头 + */ +export async function getShopInvoiceTitle(id: number) { + const res = await request.get>( + '/shop/shop-invoice-title/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 设置默认发票抬头 + */ +export async function setDefaultInvoiceTitle(id: number) { + const res = await request.put>( + '/shop/shop-invoice-title/set-default/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 分页查询发票记录 + */ +export async function pageShopInvoiceRecord(params: ShopInvoiceRecordParam) { + const res = await request.get>>( + '/shop/shop-invoice-record/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询发票记录列表 + */ +export async function listShopInvoiceRecord(params?: ShopInvoiceRecordParam) { + const res = await request.get>( + '/shop/shop-invoice-record', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 申请发票 + */ +export async function applyInvoice(data: InvoiceApplyRequest) { + const res = await request.post>( + '/shop/shop-invoice-record/apply', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询发票记录 + */ +export async function getShopInvoiceRecord(id: number) { + const res = await request.get>( + '/shop/shop-invoice-record/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取用户可开票订单列表 + */ +export async function listInvoiceableOrders() { + const res = await request.get>( + '/shop/shop-invoice-record/invoiceable-orders' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopInvoiceTitle/model.ts b/src/api/shop/shopInvoiceTitle/model.ts new file mode 100644 index 0000000..88330bf --- /dev/null +++ b/src/api/shop/shopInvoiceTitle/model.ts @@ -0,0 +1,155 @@ +/** + * 发票抬头表 + */ +export interface ShopInvoiceTitle { + /** 主键ID */ + id?: number; + /** 用户ID */ + userId?: number; + /** 抬头类型: personal-个人, company-企业 */ + type?: 'personal' | 'company'; + /** 发票抬头名称 */ + name?: string; + /** 税号(企业必填) */ + taxNumber?: string; + /** 注册地址 */ + address?: string; + /** 注册电话 */ + phone?: string; + /** 开户银行 */ + bankName?: string; + /** 银行账号 */ + bankAccount?: string; + /** 接收邮箱 */ + email?: string; + /** 是否默认: 0-否, 1-是 */ + isDefault?: number; + /** 商城ID */ + tenantId?: number; + /** 创建时间 */ + createTime?: string; + /** 修改时间 */ + updateTime?: string; +} + +/** + * 发票抬头查询参数 + */ +export interface ShopInvoiceTitleParam { + /** 主键ID */ + id?: number; + /** 用户ID */ + userId?: number; + /** 抬头类型 */ + type?: string; + /** 是否默认 */ + isDefault?: number; + /** 第几页 */ + page?: number; + /** 每页多少条 */ + limit?: number; + /** 排序字段 */ + sort?: string; + /** 排序方式 */ + order?: string; +} + +/** + * 发票申请记录 + */ +export interface ShopInvoiceRecord { + /** 主键ID */ + id?: number; + /** 用户ID */ + userId?: number; + /** 用户昵称 */ + userNickName?: string; + /** 订单ID */ + orderId?: number; + /** 订单编号 */ + orderNo?: string; + /** 发票抬头ID */ + titleId?: number; + /** 发票类型: normal-普通发票, vat-增值税发票 */ + invoiceType?: 'normal' | 'vat'; + /** 发票抬头 */ + titleName?: string; + /** 税号 */ + taxNumber?: string; + /** 发票金额 */ + amount?: number; + /** 发票状态: 0-待处理, 1-开票中, 2-已开票, 3-开票失败 */ + status?: number; + /** 发票流水号 */ + invoiceNo?: string; + /** 发票URL */ + invoiceUrl?: string; + /** 申请时间 */ + applyTime?: string; + /** 开票时间 */ + invoiceTime?: string; + /** 商城ID */ + tenantId?: number; + /** 创建时间 */ + createTime?: string; + /** 修改时间 */ + updateTime?: string; +} + +/** + * 发票申请参数 + */ +export interface ShopInvoiceRecordParam { + /** 主键ID */ + id?: number; + /** 用户ID */ + userId?: number; + /** 订单ID */ + orderId?: number; + /** 发票抬头ID */ + titleId?: number; + /** 发票类型 */ + invoiceType?: string; + /** 发票状态 */ + status?: number; + /** 第几页 */ + page?: number; + /** 每页多少条 */ + limit?: number; + /** 排序字段 */ + sort?: string; + /** 排序方式 */ + order?: string; + /** 起始时间 */ + createTimeStart?: string; + /** 结束时间 */ + createTimeEnd?: string; +} + +/** + * 发票申请请求 + */ +export interface InvoiceApplyRequest { + /** 订单ID */ + orderId: number; + /** 发票抬头ID */ + titleId: number; + /** 发票类型 */ + invoiceType?: 'normal' | 'vat'; + /** 接收邮箱(电子发票) */ + email?: string; +} + +/** + * 发票状态枚举 + */ +export enum InvoiceStatusEnum { + /** 待处理 */ + PENDING = 0, + /** 开票中 */ + PROCESSING = 1, + /** 已开票 */ + COMPLETED = 2, + /** 开票失败 */ + FAILED = 3, +} diff --git a/src/api/shop/shopLogistics/index.ts b/src/api/shop/shopLogistics/index.ts new file mode 100644 index 0000000..97ccd93 --- /dev/null +++ b/src/api/shop/shopLogistics/index.ts @@ -0,0 +1,258 @@ +import { request } from '@/utils/request' + +// 物流信息接口 +export interface LogisticsInfo { + expressCompany: string // 快递公司代码 + expressCompanyName: string // 快递公司名称 + expressNo: string // 快递单号 + status: string // 物流状态 + updateTime: string // 更新时间 + estimatedTime?: string // 预计送达时间 + currentLocation?: string // 当前位置 + senderInfo?: { + name: string + phone: string + address: string + } + receiverInfo?: { + name: string + phone: string + address: string + } +} + +// 物流跟踪记录 +export interface LogisticsTrack { + time: string + location: string + status: string + description: string + isCompleted: boolean +} + +// 物流查询响应 +export interface LogisticsResponse { + success: boolean + data: { + logisticsInfo: LogisticsInfo + trackList: LogisticsTrack[] + } + message?: string +} + +// 支持的快递公司 +export const EXPRESS_COMPANIES = { + 'SF': '顺丰速运', + 'YTO': '圆通速递', + 'ZTO': '中通快递', + 'STO': '申通快递', + 'YD': '韵达速递', + 'HTKY': '百世快递', + 'JD': '京东物流', + 'EMS': '中国邮政', + 'YUNDA': '韵达快递', + 'JTSD': '极兔速递', + 'DBKD': '德邦快递', + 'UC': '优速快递' +} + +// 查询物流信息 +export const queryLogistics = async (params: { + orderId?: string + expressNo: string + expressCompany: string +}): Promise => { + try { + // 调用真实的物流查询API + const response = await request({ + url: '/logistics/query', + method: 'POST', + data: params + }) + + return response + } catch (error) { + console.error('查询物流信息失败:', error) + // 抛出错误而不是返回 Mock 数据 + throw error + } +} + +/** + * @deprecated 已弃用 - Mock 数据仅用于开发调试 + * 生产环境应删除此函数 + */ +const getMockLogisticsData = (params: { + orderId?: string + expressNo: string + expressCompany: string +}): LogisticsResponse => { + const now = new Date() + const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000) + const twoDaysAgo = new Date(now.getTime() - 2 * 24 * 60 * 60 * 1000) + const threeDaysAgo = new Date(now.getTime() - 3 * 24 * 60 * 60 * 1000) + + const mockData: LogisticsResponse = { + success: true, + data: { + logisticsInfo: { + expressCompany: params.expressCompany, + expressCompanyName: EXPRESS_COMPANIES[params.expressCompany] || params.expressCompany, + expressNo: params.expressNo, + status: '运输中', + updateTime: now.toISOString(), + estimatedTime: new Date(now.getTime() + 24 * 60 * 60 * 1000).toISOString(), + currentLocation: '北京市朝阳区', + senderInfo: { + name: '商家仓库', + phone: '400-123-4567', + address: '上海市浦东新区张江高科技园区' + }, + receiverInfo: { + name: '张三', + phone: '138****5678', + address: '北京市朝阳区三里屯街道' + } + }, + trackList: [ + { + time: now.toISOString(), + location: '北京市朝阳区', + status: '运输中', + description: '快件正在运输途中,预计今日送达,请保持手机畅通', + isCompleted: false + }, + { + time: new Date(now.getTime() - 2 * 60 * 60 * 1000).toISOString(), + location: '北京转运中心', + status: '已发出', + description: '快件已从北京转运中心发出,正在派送途中', + isCompleted: true + }, + { + time: new Date(now.getTime() - 6 * 60 * 60 * 1000).toISOString(), + location: '北京转运中心', + status: '已到达', + description: '快件已到达北京转运中心,正在进行分拣', + isCompleted: true + }, + { + time: yesterday.toISOString(), + location: '天津转运中心', + status: '已发出', + description: '快件已从天津转运中心发出', + isCompleted: true + }, + { + time: new Date(yesterday.getTime() - 4 * 60 * 60 * 1000).toISOString(), + location: '天津转运中心', + status: '已到达', + description: '快件已到达天津转运中心', + isCompleted: true + }, + { + time: twoDaysAgo.toISOString(), + location: '上海转运中心', + status: '已发出', + description: '快件已从上海转运中心发出', + isCompleted: true + }, + { + time: new Date(twoDaysAgo.getTime() - 2 * 60 * 60 * 1000).toISOString(), + location: '上海转运中心', + status: '已到达', + description: '快件已到达上海转运中心,正在进行分拣', + isCompleted: true + }, + { + time: threeDaysAgo.toISOString(), + location: '上海市浦东新区', + status: '已发货', + description: '商家已发货,快件已交给快递公司', + isCompleted: true + } + ] + } + } + + return mockData +} + +// 获取快递公司列表 +export const getExpressCompanies = () => { + return Object.entries(EXPRESS_COMPANIES).map(([code, name]) => ({ + code, + name + })) +} + +// 根据快递单号自动识别快递公司 +export const detectExpressCompany = (expressNo: string): string => { + // 这里可以根据快递单号的规则来自动识别快递公司 + // 实际项目中可以使用第三方服务的自动识别API + + if (expressNo.startsWith('SF')) return 'SF' + if (expressNo.startsWith('YT')) return 'YTO' + if (expressNo.startsWith('ZT')) return 'ZTO' + if (expressNo.startsWith('ST')) return 'STO' + if (expressNo.startsWith('YD')) return 'YD' + if (expressNo.startsWith('JD')) return 'JD' + if (expressNo.startsWith('EMS')) return 'EMS' + + // 默认返回顺丰 + return 'SF' +} + +// 格式化物流状态 +export const formatLogisticsStatus = (status: string): { + text: string + color: string + icon: string +} => { + const statusMap = { + '已发货': { text: '已发货', color: '#1890ff', icon: '📦' }, + '运输中': { text: '运输中', color: '#52c41a', icon: '🚚' }, + '派送中': { text: '派送中', color: '#faad14', icon: '🏃' }, + '已签收': { text: '已签收', color: '#52c41a', icon: '✅' }, + '异常': { text: '异常', color: '#ff4d4f', icon: '⚠️' }, + '退回': { text: '退回', color: '#ff4d4f', icon: '↩️' } + } + + return statusMap[status] || { text: status, color: '#666', icon: '📋' } +} + +// 计算预计送达时间 +export const calculateEstimatedTime = ( + sendTime: string, + expressCompany: string, + distance?: number +): string => { + const sendDate = new Date(sendTime) + let estimatedDays = 3 // 默认3天 + + // 根据快递公司调整预计时间 + switch (expressCompany) { + case 'SF': + estimatedDays = 1 // 顺丰次日达 + break + case 'JD': + estimatedDays = 1 // 京东次日达 + break + case 'YTO': + case 'ZTO': + case 'STO': + estimatedDays = 2 // 三通一达2天 + break + default: + estimatedDays = 3 + } + + // 根据距离调整(如果有距离信息) + if (distance) { + if (distance > 2000) estimatedDays += 1 // 超过2000公里加1天 + if (distance > 3000) estimatedDays += 1 // 超过3000公里再加1天 + } + + const estimatedDate = new Date(sendDate.getTime() + estimatedDays * 24 * 60 * 60 * 1000) + return estimatedDate.toISOString() +} diff --git a/src/api/shop/shopMemberBenefit.ts b/src/api/shop/shopMemberBenefit.ts new file mode 100644 index 0000000..83ce19d --- /dev/null +++ b/src/api/shop/shopMemberBenefit.ts @@ -0,0 +1,29 @@ +import request from '@/utils/request'; + +/** 获取可用权益包列表 */ +export function getBenefitPackageList() { + return request.get('/shop/shop-member-benefit-package/list'); +} + +/** 获取权益包详情 */ +export function getBenefitPackageDetail(id: number) { + return request.get(`/shop/shop-member-benefit-package/${id}`); +} + +/** 申请兑换 */ +export function exchangeBenefitPackage(data: { + packageId: number; + addressId?: number; +}) { + return request.post('/shop/shop-member-benefit-exchange/exchange', data); +} + +/** 我的兑换记录 */ +export function getMyExchangeList(params?: any) { + return request.get('/shop/shop-member-benefit-exchange/my/list', params); +} + +/** 取消兑换 */ +export function cancelExchange(id: number) { + return request.post(`/shop/shop-member-benefit-exchange/cancel/${id}`); +} diff --git a/src/api/shop/shopMemberCenter.ts b/src/api/shop/shopMemberCenter.ts new file mode 100644 index 0000000..66c4793 --- /dev/null +++ b/src/api/shop/shopMemberCenter.ts @@ -0,0 +1,113 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; + +/** + * 会员中心数据 - 整合分销商相关信息 + */ +export interface MemberCenterData { + // 基本信息 + memberLevel: string; // 会员等级名称 + memberLevelId: number; // 会员等级ID + isDealer: boolean; // 是否是分销商 + // 佣金信息 + commission: number; // 可提现佣金 + totalCommission: number; // 累计佣金 + frozenCommission: number; // 冻结佣金 + // 团队信息 + teamCount: number; // 团队人数 + activeCount: number; // 活跃人数 + memberCount: number; // 会员人数 + // 推广信息 + inviteCode: string; // 邀请码 + qrCode: string; // 推广二维码 +} + +/** + * 佣金明细记录 + */ +export interface CommissionRecord { + id: number; + type: number; // 1=佣金收入, 2=佣金提现, 3=佣金退回 + amount: number; // 金额 + status: number; // 状态: 0=待审核, 10=审核通过, 20=待收款, 30=已拒绝, 40=已完成 + remark: string; // 备注 + createTime: string; // 创建时间 + updateTime: string; // 更新时间 +} + +/** + * 获取会员中心数据 + */ +export async function getMemberCenterData() { + const res = await request.get>('/shop/shop-dealer-user/info'); + if (res.code === 0 && res.data) { + return res.data; + } + // 如果接口不存在,返回默认数据 + return { + memberLevel: '普通会员', + memberLevelId: 0, + isDealer: false, + commission: 0, + totalCommission: 0, + frozenCommission: 0, + teamCount: 0, + activeCount: 0, + memberCount: 0, + inviteCode: '', + qrCode: '', + }; +} + +/** + * 获取佣金明细列表 + */ +export async function listCommissionRecord(params?: { page?: number; limit?: number }) { + const res = await request.get>('/shop/shop-commission-record/page', params); + if (res.code === 0 && res.data) { + return res.data; + } + return { list: [], total: 0 }; +} + +/** + * 获取分销商资金信息 + */ +export async function getDealerCapital() { + const res = await request.get>('/shop/shop-dealer-capital/summary'); + if (res.code === 0 && res.data) { + return res.data; + } + return { + balance: 0, + totalEarning: 0, + frozenAmount: 0, + withdrawAmount: 0, + }; +} + +/** + * 获取分销设置信息(用于会员升级) + */ +export async function getDealerSetting() { + const res = await request.get>('/shop/shop-commission-role/list'); + if (res.code === 0 && res.data) { + return res.data; + } + return []; +} diff --git a/src/api/shop/shopMemberRegister.ts b/src/api/shop/shopMemberRegister.ts new file mode 100644 index 0000000..299449f --- /dev/null +++ b/src/api/shop/shopMemberRegister.ts @@ -0,0 +1,108 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; + +/** + * 会员注册记录相关API + */ + +/** + * 会员注册记录 + */ +export interface MemberRegister { + id: number; + dealerId: number; + dealerName?: string; + dealerPhone?: string; + phone: string; + realName?: string; + memberFee: number; + memberFeeStatus: number; + registerFee: number; + registerFeeStatus: number; + userId?: number; + nickName?: string; + status: number; + comments?: string; + createTime: string; +} + +/** + * 注册费支付信息 + */ +export interface RegisterPayInfo { + id: number; + phone: string; + realName?: string; + registerFee: number; + dealerName?: string; + dealerPhone?: string; +} + +/** + * 获取我的下级注册列表 + */ +export async function getMyRegisterList(params?: { page?: number; limit?: number }) { + const res = await request.get>('/shop/shop-member-register/my/list', params); + return res.data || []; +} + +/** + * 录入下级 + */ +export async function addSubordinate(data: { phone: string; realName?: string }) { + const res = await request.post>('/shop/shop-member-register/add', data); + return res; +} + +/** + * 修改下级信息 + */ +export async function updateSubordinate(data: { id: number; phone?: string; realName?: string }) { + const res = await request.put>('/shop/shop-member-register/update', data); + return res; +} + +/** + * 检查手机号是否可注册 + */ +export async function checkPhone(phone: string) { + const res = await request.get>('/shop/shop-member-register/check', { phone }); + return res.data; +} + +/** + * 获取注册费支付信息 + */ +export async function getRegisterPayInfo(phone: string) { + const res = await request.get>('/shop/shop-member-register/pay/info', { phone }); + return res.data; +} + +/** + * 获取当前用户的注册状态 + */ +export async function getMyRegisterStatus() { + const res = await request.get>('/shop/shop-member-register/my/status'); + return res.data; +} + +/** + * 获取会员配置信息 + */ +export async function getMemberConfig() { + const res = await request.get>('/shop/shop-member-register/config'); + return res.data; +} diff --git a/src/api/shop/shopMerchant/index.ts b/src/api/shop/shopMerchant/index.ts new file mode 100644 index 0000000..6a855bf --- /dev/null +++ b/src/api/shop/shopMerchant/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchant, ShopMerchantParam } from './model'; + +/** + * 分页查询商户 + */ +export async function pageShopMerchant(params: ShopMerchantParam) { + const res = await request.get>>( + '/shop/shop-merchant/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商户列表 + */ +export async function listShopMerchant(params?: ShopMerchantParam) { + const res = await request.get>( + '/shop/shop-merchant', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商户 + */ +export async function addShopMerchant(data: ShopMerchant) { + const res = await request.post>( + '/shop/shop-merchant', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商户 + */ +export async function updateShopMerchant(data: ShopMerchant) { + const res = await request.put>( + '/shop/shop-merchant', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商户 + */ +export async function removeShopMerchant(id?: number) { + const res = await request.del>( + '/shop/shop-merchant/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商户 + */ +export async function removeBatchShopMerchant(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-merchant/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商户 + */ +export async function getShopMerchant(id: number) { + const res = await request.get>( + '/shop/shop-merchant/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopMerchant/model/index.ts b/src/api/shop/shopMerchant/model/index.ts new file mode 100644 index 0000000..4074c0d --- /dev/null +++ b/src/api/shop/shopMerchant/model/index.ts @@ -0,0 +1,95 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商户 + */ +export interface ShopMerchant { + // ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商户编号 + merchantCode?: string; + // 商户类型 + type?: number; + // 商户图标 + image?: string; + // 商户手机号 + phone?: string; + // 商户姓名 + realName?: string; + // 店铺类型 + shopType?: string; + // 项目分类 + itemType?: string; + // 商户分类 + category?: string; + // 商户经营分类 + merchantCategoryId?: number; + // 商户分类 + merchantCategoryTitle?: string; + // 经纬度 + lngAndLat?: string; + // + lng?: string; + // + lat?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 详细地址 + address?: string; + // 手续费 + commission?: string; + // 关键字 + keywords?: string; + // 资质图片 + files?: string; + // 营业时间 + businessTime?: string; + // 文章内容 + content?: string; + // 每小时价格 + price?: string; + // 是否自营 + ownStore?: number; + // 是否可以快递 + canExpress?: string; + // 是否推荐 + recommend?: number; + // 是否营业 + isOn?: number; + // + startTime?: string; + // + endTime?: string; + // 是否需要审核 + goodsReview?: number; + // 管理入口 + adminUrl?: string; + // 备注 + comments?: string; + // 所有人 + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户搜索条件 + */ +export interface ShopMerchantParam extends PageParam { + merchantId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantAccount/index.ts b/src/api/shop/shopMerchantAccount/index.ts new file mode 100644 index 0000000..eaa94f2 --- /dev/null +++ b/src/api/shop/shopMerchantAccount/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantAccount, ShopMerchantAccountParam } from './model'; + +/** + * 分页查询商户账号 + */ +export async function pageShopMerchantAccount(params: ShopMerchantAccountParam) { + const res = await request.get>>( + '/shop/shop-merchant-account/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商户账号列表 + */ +export async function listShopMerchantAccount(params?: ShopMerchantAccountParam) { + const res = await request.get>( + '/shop/shop-merchant-account', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商户账号 + */ +export async function addShopMerchantAccount(data: ShopMerchantAccount) { + const res = await request.post>( + '/shop/shop-merchant-account', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商户账号 + */ +export async function updateShopMerchantAccount(data: ShopMerchantAccount) { + const res = await request.put>( + '/shop/shop-merchant-account', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商户账号 + */ +export async function removeShopMerchantAccount(id?: number) { + const res = await request.del>( + '/shop/shop-merchant-account/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商户账号 + */ +export async function removeBatchShopMerchantAccount(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-merchant-account/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商户账号 + */ +export async function getShopMerchantAccount(id: number) { + const res = await request.get>( + '/shop/shop-merchant-account/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopMerchantAccount/model/index.ts b/src/api/shop/shopMerchantAccount/model/index.ts new file mode 100644 index 0000000..8dc79db --- /dev/null +++ b/src/api/shop/shopMerchantAccount/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商户账号 + */ +export interface ShopMerchantAccount { + // ID + id?: number; + // 商户手机号 + phone?: string; + // 真实姓名 + realName?: string; + // 商户ID + merchantId?: number; + // 角色ID + roleId?: number; + // 角色名称 + roleName?: string; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户账号搜索条件 + */ +export interface ShopMerchantAccountParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantApply/index.ts b/src/api/shop/shopMerchantApply/index.ts new file mode 100644 index 0000000..151f6aa --- /dev/null +++ b/src/api/shop/shopMerchantApply/index.ts @@ -0,0 +1,115 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantApply, ShopMerchantApplyParam } from './model'; + +/** + * 分页查询商户入驻申请 + */ +export async function pageShopMerchantApply(params: ShopMerchantApplyParam) { + const res = await request.get>>( + '/shop/shop-merchant-apply/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商户入驻申请列表 + */ +export async function listShopMerchantApply(params?: ShopMerchantApplyParam) { + const res = await request.get>( + '/shop/shop-merchant-apply', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商户入驻申请 + */ +export async function addShopMerchantApply(data: ShopMerchantApply) { + const res = await request.post>( + '/shop/shop-merchant-apply', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商户入驻申请 + */ +export async function updateShopMerchantApply(data: ShopMerchantApply) { + const res = await request.put>( + '/shop/shop-merchant-apply', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 审核通过 +export async function checkShopMerchantApply(data: ShopMerchantApply) { + const res = await request.put>( + '/shop/shop-merchant-apply/check', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商户入驻申请 + */ +export async function removeShopMerchantApply(id?: number) { + const res = await request.del>( + '/shop/shop-merchant-apply/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商户入驻申请 + */ +export async function removeBatchShopMerchantApply( + data: (number | undefined)[] +) { + const res = await request.del>( + '/shop/shop-merchant-apply/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商户入驻申请 + */ +export async function getShopMerchantApply(id: number) { + const res = await request.get>( + '/shop/shop-merchant-apply/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopMerchantApply/model/index.ts b/src/api/shop/shopMerchantApply/model/index.ts new file mode 100644 index 0000000..ba14a2e --- /dev/null +++ b/src/api/shop/shopMerchantApply/model/index.ts @@ -0,0 +1,72 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商户入驻申请 + */ +export interface ShopMerchantApply { + // ID + applyId?: number; + // 类型 + type?: number; + // 主体名称 + merchantName?: string; + // 证件号码 + merchantCode?: string; + // 商户图标 + image?: string; + // 商户手机号 + phone?: string; + // 商户姓名 + realName?: string; + // 身份证号码 + idCard?: string; + // 店铺类型 + shopType?: string; + // 商户分类 + category?: string; + // 手续费 + commission?: string; + // 关键字 + keywords?: string; + // 营业执照 + yyzz?: string; + // 身份证正面 + sfz1?: string; + // 身份证反面 + sfz2?: string; + // 资质图片 + files?: string; + // 所有人 + userId?: number; + // 是否自营 + ownStore?: number; + // 是否推荐 + recommend?: number; + // 是否需要审核 + goodsReview?: number; + // 工作负责人 + name2?: string; + // 驳回原因 + reason?: string; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户入驻申请搜索条件 + */ +export interface ShopMerchantApplyParam extends PageParam { + applyId?: number; + userId?: number; + shopType?: string; + phone?: string; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantCount/index.ts b/src/api/shop/shopMerchantCount/index.ts new file mode 100644 index 0000000..feef797 --- /dev/null +++ b/src/api/shop/shopMerchantCount/index.ts @@ -0,0 +1,103 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantCount, ShopMerchantCountParam } from './model'; + +/** + * 分页查询门店销售统计表 + */ +export async function pageShopMerchantCount(params: ShopMerchantCountParam) { + const res = await request.get>>( + '/shop/shop-merchant-count/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询门店销售统计表列表 + */ +export async function listShopMerchantCount(params?: ShopMerchantCountParam) { + const res = await request.get>( + '/shop/shop-merchant-count', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加门店销售统计表 + */ +export async function addShopMerchantCount(data: ShopMerchantCount) { + const res = await request.post>( + '/shop/shop-merchant-count', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改门店销售统计表 + */ +export async function updateShopMerchantCount(data: ShopMerchantCount) { + const res = await request.put>( + '/shop/shop-merchant-count', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除门店销售统计表 + */ +export async function removeShopMerchantCount(id?: number) { + const res = await request.del>( + '/shop/shop-merchant-count/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除门店销售统计表 + */ +export async function removeBatchShopMerchantCount( + data: (number | undefined)[] +) { + const res = await request.del>( + '/shop/shop-merchant-count/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询门店销售统计表 + */ +export async function getShopMerchantCount(id: number) { + const res = await request.get>( + '/shop/shop-merchant-count/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopMerchantCount/model/index.ts b/src/api/shop/shopMerchantCount/model/index.ts new file mode 100644 index 0000000..cc136f3 --- /dev/null +++ b/src/api/shop/shopMerchantCount/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api/index'; + +/** + * 门店销售统计表 + */ +export interface ShopMerchantCount { + // ID + id?: number; + // 店铺名称 + name?: string; + // 店铺说明 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 门店销售统计表搜索条件 + */ +export interface ShopMerchantCountParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantType/index.ts b/src/api/shop/shopMerchantType/index.ts new file mode 100644 index 0000000..4bf8b4e --- /dev/null +++ b/src/api/shop/shopMerchantType/index.ts @@ -0,0 +1,103 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantType, ShopMerchantTypeParam } from './model'; + +/** + * 分页查询商户类型 + */ +export async function pageShopMerchantType(params: ShopMerchantTypeParam) { + const res = await request.get>>( + '/shop/shop-merchant-type/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询商户类型列表 + */ +export async function listShopMerchantType(params?: ShopMerchantTypeParam) { + const res = await request.get>( + '/shop/shop-merchant-type', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加商户类型 + */ +export async function addShopMerchantType(data: ShopMerchantType) { + const res = await request.post>( + '/shop/shop-merchant-type', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改商户类型 + */ +export async function updateShopMerchantType(data: ShopMerchantType) { + const res = await request.put>( + '/shop/shop-merchant-type', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除商户类型 + */ +export async function removeShopMerchantType(id?: number) { + const res = await request.del>( + '/shop/shop-merchant-type/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除商户类型 + */ +export async function removeBatchShopMerchantType( + data: (number | undefined)[] +) { + const res = await request.del>( + '/shop/shop-merchant-type/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询商户类型 + */ +export async function getShopMerchantType(id: number) { + const res = await request.get>( + '/shop/shop-merchant-type/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopMerchantType/model/index.ts b/src/api/shop/shopMerchantType/model/index.ts new file mode 100644 index 0000000..522d081 --- /dev/null +++ b/src/api/shop/shopMerchantType/model/index.ts @@ -0,0 +1,30 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商户类型 + */ +export interface ShopMerchantType { + // ID + id?: number; + // 店铺类型 + name?: string; + // 店铺入驻条件 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + value?: string; +} + +/** + * 商户类型搜索条件 + */ +export interface ShopMerchantTypeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMessage/index.ts b/src/api/shop/shopMessage/index.ts new file mode 100644 index 0000000..f8c4d8f --- /dev/null +++ b/src/api/shop/shopMessage/index.ts @@ -0,0 +1,37 @@ +import request from '@/utils/request' +import type { ShopMessage } from './model' + +/** 获取消息列表 */ +export function listShopMessage(params?: { + page?: number + limit?: number + type?: string + isRead?: boolean +}) { + return request.get<{ code: number; data: { list: ShopMessage[]; total: number } }>('/user/message/list', params) +} + +/** 获取消息详情 */ +export function getShopMessage(id: string) { + return request.get<{ code: number; data: ShopMessage }>(`/user/message/${id}`) +} + +/** 标记消息已读 */ +export function readShopMessage(id: string) { + return request.put<{ code: number }>(`/user/message/read/${id}`) +} + +/** 删除消息 */ +export function deleteShopMessage(id: string) { + return request.del<{ code: number }>(`/user/message/${id}`) +} + +/** 全部标记已读 */ +export function readAllShopMessage() { + return request.put<{ code: number }>('/user/message/read-all') +} + +/** 获取未读消息数量 */ +export function getUnreadMessageCount() { + return request.get<{ code: number; data: { count: number } }>('/user/message/unread-count') +} diff --git a/src/api/shop/shopMessage/model/index.ts b/src/api/shop/shopMessage/model/index.ts new file mode 100644 index 0000000..65f40cb --- /dev/null +++ b/src/api/shop/shopMessage/model/index.ts @@ -0,0 +1,20 @@ +/** 消息类型 */ +export type MessageType = 'system' | 'order' | 'activity' + +/** 消息 */ +export interface ShopMessage { + /** 消息ID */ + id: string + /** 消息类型 */ + type: MessageType + /** 消息标题 */ + title: string + /** 消息内容 */ + content: string + /** 是否已读 */ + isRead: boolean + /** 创建时间 */ + createdAt: string + /** 相关链接(可选) */ + link?: string +} diff --git a/src/api/shop/shopNotification/index.ts b/src/api/shop/shopNotification/index.ts new file mode 100644 index 0000000..d4a1eee --- /dev/null +++ b/src/api/shop/shopNotification/index.ts @@ -0,0 +1,140 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopNotification, ShopNotificationParam } from './model'; + +/** + * 分页查询消息通知 + */ +export async function pageShopNotification(params: ShopNotificationParam) { + const res = await request.get>>( + '/shop/shop-notification/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询全部消息通知 + */ +export async function listShopNotification(params?: ShopNotificationParam) { + const res = await request.get>( + '/shop/shop-notification', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询消息通知 + */ +export async function getShopNotification(id: number) { + const res = await request.get>( + '/shop/shop-notification/' + id + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加消息通知 + */ +export async function addShopNotification(data: ShopNotification) { + const res = await request.post>( + '/shop/shop-notification', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改消息通知 + */ +export async function updateShopNotification(data: ShopNotification) { + const res = await request.put>( + '/shop/shop-notification', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除消息通知 + */ +export async function removeShopNotification(id?: number) { + const res = await request.del>( + '/shop/shop-notification/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取用户消息列表 + */ +export async function getShopNotificationByUserId(userId: number) { + const res = await request.get>( + '/shop/shop-notification/user/' + userId + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 标记消息已读 + */ +export async function markShopNotificationAsRead(id: number, userId: number) { + const res = await request.put>( + '/shop/shop-notification/read/' + id + '?userId=' + userId, + null + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 标记全部已读 + */ +export async function markAllShopNotificationAsRead(userId: number) { + const res = await request.put>( + '/shop/shop-notification/read-all?userId=' + userId, + null + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取未读消息数量 + */ +export async function getShopNotificationUnreadCount(userId: number) { + const res = await request.get>( + '/shop/shop-notification/unread-count', + { userId } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopNotification/model/index.ts b/src/api/shop/shopNotification/model/index.ts new file mode 100644 index 0000000..ce330d7 --- /dev/null +++ b/src/api/shop/shopNotification/model/index.ts @@ -0,0 +1,25 @@ +export interface ShopNotification { + id?: number; + userId?: number; + type?: number; // 1系统通知 2订单消息 3优惠活动 4物流通知 + title?: string; + content?: string; + relationId?: number; + relationType?: string; + isRead?: number; // 0未读 1已读 + readTime?: string; + tenantId?: number; + createTime?: string; +} + +export interface ShopNotificationParam { + id?: number; + userId?: number; + type?: number; + title?: string; + isRead?: number; + tenantId?: number; + keywords?: string; + createTimeStart?: string; + createTimeEnd?: string; +} diff --git a/src/api/shop/shopOrder/index.ts b/src/api/shop/shopOrder/index.ts new file mode 100644 index 0000000..95fdd26 --- /dev/null +++ b/src/api/shop/shopOrder/index.ts @@ -0,0 +1,194 @@ +import request, { ErrorType, RequestError } from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopOrder, ShopOrderParam, OrderCreateRequest } from './model'; + +/** + * 分页查询订单 + */ +export async function pageShopOrder(params: ShopOrderParam) { + const res = await request.get>>( + '/shop/shop-order/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询订单列表 + */ +export async function listShopOrder(params?: ShopOrderParam) { + const res = await request.get>( + '/shop/shop-order', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加订单 + */ +export async function addShopOrder(data: ShopOrder) { + const res = await request.post>( + '/shop/shop-order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改订单 + */ +export async function updateShopOrder(data: ShopOrder) { + const res = await request.put>( + '/shop/shop-order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除订单 + */ +export async function removeShopOrder(id?: number) { + const res = await request.del>( + '/shop/shop-order/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchShopOrder(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-order/batch', + { ids: data.filter(Boolean) } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询订单 + */ +export async function getShopOrder(id: number) { + const res = await request.get>( + '/shop/shop-order/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 微信支付返回数据 + */ +export interface WxPayResult { + prepayId: string; + orderNo: string; + timeStamp: string; + nonceStr: string; + package: string; + signType: string; + paySign: string; +} + +/** + * 订单重新发起支付(对"已创建但未支付"的订单生成新的预支付参数,不应重复创建订单) + * + * 说明:不同后端版本可能暴露不同路径,这里做兼容探测;若全部失败,调用方可自行降级处理。 + */ +export interface OrderPrepayRequest { + orderId: number; + payType: number; +} + +export async function prepayShopOrder(data: OrderPrepayRequest) { + const urls = [ + '/shop/shop-order/pay', + '/shop/shop-order/prepay', + '/shop/shop-order/repay' + ]; + + let lastError: unknown; + let businessError: unknown; + for (const url of urls) { + try { + const res = await request.post>(url, data, { showError: false }); + // request.ts 在 code!=0 时会直接 throw;走到这里通常都是 code===0 + if (res.code === 0) return res.data; + } catch (e) { + // 若已命中"业务错误"(例如订单已取消/已支付),优先保留该错误用于向上提示; + // 不要被后续的 404/网络错误覆盖掉,避免调用方误判为"不支持该接口"而降级走创建订单。 + if (!businessError && e instanceof RequestError && e.type === ErrorType.BUSINESS_ERROR) { + businessError = e; + } else { + lastError = e; + } + } + } + + return Promise.reject(businessError || lastError || new Error('发起支付失败')); +} + +/** + * 创建订单 + */ +export async function createOrder(data: OrderCreateRequest) { + // Java 后端期望 camelCase 字段,直接传 + const res = await request.post>( + '/shop/shop-order', + data + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修复订单支付状态 + */ +export async function repairOrder(data: ShopOrder) { + const res = await request.put>( + '/shop/shop-order/repair', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + + +/** + * 申请|同意退款 + */ +export async function refundShopOrder(data: ShopOrder) { + const res = await request.put>( + '/shop/shop-order/refund', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopOrder/model/index.ts b/src/api/shop/shopOrder/model/index.ts new file mode 100644 index 0000000..2b8d177 --- /dev/null +++ b/src/api/shop/shopOrder/model/index.ts @@ -0,0 +1,231 @@ +import type { PageParam } from '@/api/index'; +import type { ShopOrderGoods } from '@/api/shop/shopOrderGoods/model'; + +/** + * 订单 + */ +export interface ShopOrder { + // 订单号 + orderId?: number; + // 订单编号 + orderNo?: string; + // 订单类型,0商城订单 1预定订单/外卖 2会员卡 + type?: number; + // 标题 + title?: string; + // 快递/自提 + deliveryType?: number; + // 下单渠道,0小程序预定 1俱乐部训练场 3活动订场 + channel?: number; + // 微信支付订单号 + transactionId?: string; + // 微信退款订单号 + refundOrder?: string; + // 商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商户编号 + merchantCode?: string; + // 归属门店ID(shop_store.id) + storeId?: number; + // 归属门店名称 + storeName?: string; + // 配送员用户ID(优先级派单) + riderId?: number; + // 发货仓库ID + warehouseId?: number; + // 使用的优惠券id + couponId?: number; + // 使用的会员卡id + cardId?: string; + // 关联管理员id + adminId?: number; + // 核销管理员id + confirmId?: number; + // IC卡号 + icCard?: string; + // 头像 + avatar?: string; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 手机号码(脱敏) + mobile?: string; + // 关联收货地址 + addressId?: number; + // 收货地址 + address?: string; + // + addressLat?: string; + // + addressLng?: string; + // 自提店铺id + selfTakeMerchantId?: number; + // 自提店铺 + selfTakeMerchantName?: string; + // 配送开始时间 + sendStartTime?: string; + // 配送结束时间 + sendEndTime?: string; + // 配送员送达拍照(选填) + sendEndImg?: string; + // 发货店铺id + expressMerchantId?: number; + // 发货店铺 + expressMerchantName?: string; + // 订单总额 + totalPrice?: string; + // 减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格 + reducePrice?: string; + // 实际付款 + payPrice?: string; + // 用于统计 + price?: string; + // 价钱,用于积分赠送 + money?: string; + // 退款金额 + refundMoney?: string; + // 教练价格 + coachPrice?: string; + // 购买数量 + totalNum?: number; + // 教练id + coachId?: number; + // 商品ID + formId?: number; + // 支付的用户id + payUserId?: number; + // 0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付 + payType?: number; + // 代付支付方式,0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付 + friendPayType?: number; + // 0未付款,1已付款 + payStatus?: boolean; + // 0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 发货状态(10未发货 20已发货 30部分发货) + deliveryStatus?: number; + // 发货时间 + deliveryTime?: string; + // 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡 + couponType?: number; + // 优惠说明 + couponDesc?: string; + // 二维码地址,保存订单号,支付成功后才生成 + qrcode?: string; + // vip月卡年卡、ic月卡年卡回退次数 + returnNum?: number; + // vip充值回退金额 + returnMoney?: string; + // 预约详情开始时间数组 + startTime?: string; + // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 + isInvoice?: number; + // 发票流水号 + invoiceNo?: string; + // 支付时间 + payTime?: string; + // 退款时间 + refundTime?: string; + // 申请退款时间 + refundApplyTime?: string; + // 过期时间 + expirationTime?: string; + // 对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单 + checkBill?: number; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 系统版本号 0当前版本 value=其他版本 + version?: number; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 修改时间 + updateTime?: string; + // 创建时间 + createTime?: string; + // 自提码 + selfTakeCode?: string; + // 是否已收到赠品 + hasTakeGift?: string; + // 订单商品项 + orderGoods?: ShopOrderGoods[]; +} + +/** + * 订单商品项 + */ +export interface OrderGoodsItem { + goodsId: number; + quantity: number; + skuId?: number; + specInfo?: string; +} + +/** + * 创建订单请求 + */ +export interface OrderCreateRequest { + // 商品信息列表 + goodsItems: OrderGoodsItem[]; + // 归属门店ID(shop_store.id) + storeId?: number; + // 归属门店名称(可选) + storeName?: string; + // 配送员用户ID(优先级派单) + riderId?: number; + // 发货仓库ID + warehouseId?: number; + // 收货地址ID + addressId?: number; + // 支付方式 + payType: number; + // 优惠券ID + couponId?: number; + // 备注 + comments?: string; + // 配送开始时间(用于预约/配送时间) + sendStartTime?: string; + // 配送方式 0快递 1自提 + deliveryType?: number; + // 自提店铺ID + selfTakeMerchantId?: number; + // 订单标题(可选,后端会自动生成) + title?: string; + // 配送方式:elevator(电梯) / stairs(步梯) / groundFloor(一楼商铺/其他) + deliveryMethod?: string; + // 楼层(步梯+送上楼时有值,从2开始) + deliveryFloor?: number; +} + +/** + * 订单搜索条件 + */ +export interface ShopOrderParam extends PageParam { + orderId?: number; + orderNo?: string; + phone?: string; + payStatus?: number; + orderStatus?: number; + payType?: number; + isInvoice?: boolean; + userId?: number; + // 归属门店ID(shop_store.id) + storeId?: number; + // 配送员用户ID + riderId?: number; + // 发货仓库ID + warehouseId?: number; + keywords?: string; + deliveryStatus?: number; + statusFilter?: number; +} diff --git a/src/api/shop/shopOrderGoods/index.ts b/src/api/shop/shopOrderGoods/index.ts new file mode 100644 index 0000000..e12d634 --- /dev/null +++ b/src/api/shop/shopOrderGoods/index.ts @@ -0,0 +1,30 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { ShopOrderGoods } from '@/api/shop/shopOrderGoods/model'; + +/** + * 根据订单ID查询订单商品列表 + */ +export async function listShopOrderGoodsByOrderId(orderId: number) { + const res = await request.get>( + '/shop/shop-order-goods', + { orderId } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据ID查询订单商品 + */ +export async function getShopOrderGoods(id: number) { + const res = await request.get>( + '/shop/shop-order-goods/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopOrderGoods/model/index.ts b/src/api/shop/shopOrderGoods/model/index.ts new file mode 100644 index 0000000..a4034de --- /dev/null +++ b/src/api/shop/shopOrderGoods/model/index.ts @@ -0,0 +1,70 @@ +import type { PageParam } from '@/api'; + +/** + * 商品信息 + */ +export interface ShopOrderGoods { + // 自增ID + id?: number; + // 关联订单表id + orderId?: number; + // 订单标识 + orderCode?: string; + // 关联商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商品封面图 + image?: string; + // 关联商品id + goodsId?: number; + // 商品名称 + goodsName?: string; + // 商品规格 + spec?: string; + // + skuId?: number; + // 单价 + price?: string; + // 购买数量 + totalNum?: number; + // 0 未付款 1已付款,2无需付款或占用状态 + payStatus?: number; + // 0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 是否免费:0收费、1免费 + isFree?: string; + // 系统版本 0当前版本 其他版本 + version?: number; + // 预约时间段 + timePeriod?: string; + // 预定日期 + dateTime?: string; + // 开场时间 + startTime?: string; + // 结束时间 + endTime?: string; + // 毫秒时间戳 + timeFlag?: string; + // 过期时间 + expirationTime?: string; + // 备注 + comments?: string; + // 用户id + userId?: number; + // 租户id + tenantId?: number; + // 更新时间 + updateTime?: string; + // 创建时间 + createTime?: string; +} + +/** + * 商品信息搜索条件 + */ +export interface ShopOrderGoodsParam extends PageParam { + id?: number; + orderId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopOrderRefund/index.ts b/src/api/shop/shopOrderRefund/index.ts new file mode 100644 index 0000000..c36b12b --- /dev/null +++ b/src/api/shop/shopOrderRefund/index.ts @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +export interface RefundDetail { + orderNo: string; + refundMoney: string; + reason: string; + status: number; + statusText: string; + time: string; + steps: RefundStep[]; +} + +export interface RefundStep { + title: string; + desc: string; + time: string; + done: boolean; +} + +/** + * 获取退款详情 + * @param orderId 订单ID + * @returns 退款详情 + */ +export async function getRefundDetail(orderId: string): Promise { + try { + const res = await request.get('/order/refund/detail', { + params: { orderId } + }); + return res.data; + } catch (error) { + console.error('获取退款详情失败', error); + throw error; + } +} + +/** + * 取消退款申请 + * @param orderId 订单ID + * @returns 是否成功 + */ +export async function cancelRefund(orderId: string): Promise { + try { + const res = await request.post('/order/refund/cancel', { + data: { orderId } + }); + return res.code === 0; + } catch (error) { + console.error('取消退款失败', error); + throw error; + } +} diff --git a/src/api/shop/shopPointsOrder/index.ts b/src/api/shop/shopPointsOrder/index.ts new file mode 100644 index 0000000..ece68f6 --- /dev/null +++ b/src/api/shop/shopPointsOrder/index.ts @@ -0,0 +1,66 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { ShopPointsOrder, PointsOrderStatus, CreatePointsOrderParams } from './model' + +export type { ShopPointsOrder, PointsOrderStatus, CreatePointsOrderParams } from './model' + +/** 查询积分订单列表参数 */ +export interface ListShopPointsOrderParams { + page?: number + limit?: number + status?: PointsOrderStatus +} + +/** + * 查询积分订单列表 + */ +export async function listShopPointsOrder(params?: ListShopPointsOrderParams) { + const res = await request.get>>( + '/shop/shop-points-order/page', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 获取积分订单详情 + */ +export async function getShopPointsOrder(id: string) { + const res = await request.get>( + '/shop/shop-points-order/' + id + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 创建积分兑换订单 + */ +export async function createPointsOrder(data: CreatePointsOrderParams) { + const res = await request.post>( + '/shop/shop-points-order', + data + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 取消积分订单 + */ +export async function cancelShopPointsOrder(id: string) { + const res = await request.put>( + '/shop/shop-points-order/cancel/' + id + ) + if (res.code === 0) { + return true + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopPointsOrder/model/index.ts b/src/api/shop/shopPointsOrder/model/index.ts new file mode 100644 index 0000000..c556be9 --- /dev/null +++ b/src/api/shop/shopPointsOrder/model/index.ts @@ -0,0 +1,62 @@ +/** 积分订单状态 */ +export type PointsOrderStatus = 'pending' | 'paid' | 'shipped' | 'completed' | 'cancelled' + +/** 积分订单商品 */ +export interface PointsOrderItem { + /** 商品ID */ + goodsId: string + /** 商品名称 */ + goodsName: string + /** 商品图片 */ + goodsImage: string + /** 兑换积分 */ + points: number + /** 补差价金额 */ + moneyAmount?: string + /** 数量 */ + quantity: number +} + +/** 积分订单 */ +export interface ShopPointsOrder { + /** 订单ID */ + id: string + /** 订单号 */ + orderNo: string + /** 订单状态 */ + status: PointsOrderStatus + /** 总积分 */ + totalPoints: number + /** 补差价金额 */ + moneyAmount?: string + /** 支付方式: 1微信 0余额 */ + payType?: number + /** 商品列表 */ + items: PointsOrderItem[] + /** 收货人 */ + receiverName?: string + /** 收货电话 */ + receiverPhone?: string + /** 收货地址 */ + address: string + /** 物流单号 */ + trackingNo?: string + /** 物流公司 */ + trackingCompany?: string + /** 创建时间 */ + createdAt: string + /** 更新时间 */ + updatedAt?: string +} + +/** 创建积分订单参数 */ +export interface CreatePointsOrderParams { + /** 商品ID */ + productId: number + /** 数量 */ + quantity?: number + /** 收货地址ID(实物商品必填) */ + addressId?: number + /** 支付方式: 1微信 0余额(补差价时必填) */ + payType?: number +} diff --git a/src/api/shop/shopPointsProduct/index.ts b/src/api/shop/shopPointsProduct/index.ts new file mode 100644 index 0000000..a9053b6 --- /dev/null +++ b/src/api/shop/shopPointsProduct/index.ts @@ -0,0 +1,44 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { ShopPointsProduct, ShopPointsProductParam } from './model' + +/** + * 分页查询积分兑换商品表 + */ +export async function pageShopPointsProduct(params: ShopPointsProductParam) { + const res = await request.get>>( + '/shop/shop-points-product/page', + params + ) + if (res.code === 0) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询积分兑换商品表列表 + */ +export async function listShopPointsProduct(params?: ShopPointsProductParam) { + const res = await request.get>( + '/shop/shop-points-product', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 根据id查询积分兑换商品详情 + */ +export async function getShopPointsProduct(id: number) { + const res = await request.get>( + '/shop/shop-points-product/' + id + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopPointsProduct/model/index.ts b/src/api/shop/shopPointsProduct/model/index.ts new file mode 100644 index 0000000..d027ad1 --- /dev/null +++ b/src/api/shop/shopPointsProduct/model/index.ts @@ -0,0 +1,51 @@ +/** + * 积分兑换商品表 + */ +export interface ShopPointsProduct { + /** ID */ + id?: number + /** 商品名称 */ + productName?: string + /** 商品图片 */ + productImage?: string + /** 商品类型: 0实物 1优惠券 2虚拟商品 */ + productType?: number + /** 优惠券ID(商品类型为优惠券时) */ + couponId?: number + /** 兑换所需积分 */ + pointsPrice?: number + /** 补差价金额 */ + moneyPrice?: string + /** 库存 */ + stock?: number + /** 兑换量 */ + sales?: number + /** 商品描述 */ + description?: string + /** 是否热门: 0否 1是 */ + isHot?: number + /** 状态: 0下架 1上架 */ + status?: number + /** 排序号 */ + sortNumber?: number + /** 创建时间 */ + createTime?: string +} + +/** + * 积分兑换商品搜索条件 + */ +export interface ShopPointsProductParam { + /** 页码 */ + page?: number + /** 每页数量 */ + limit?: number + /** ID */ + id?: number + /** 关键词 */ + keywords?: string + /** 是否热门 */ + isHot?: number + /** 状态 */ + status?: number +} diff --git a/src/api/shop/shopRecharge/index.ts b/src/api/shop/shopRecharge/index.ts new file mode 100644 index 0000000..d9be40c --- /dev/null +++ b/src/api/shop/shopRecharge/index.ts @@ -0,0 +1,35 @@ +import request from '@/utils/request' +import type { ApiResult } from '@/api' +import type { UserRecharge, RechargeRequest } from './model' + +export type { UserRecharge, RechargeRequest } + +/** + * 创建用户充值订单 + * 注意:后端可能需要实现此接口 + */ +export async function createUserRecharge(data: RechargeRequest): Promise { + const res = await request.post>( + '/shop/shop-recharge/create', + data + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 发起充值支付 + * 注意:后端可能需要实现此接口 + */ +export async function payUserRecharge(rechargeId: number): Promise { + const res = await request.post>( + '/shop/shop-recharge/pay', + { rechargeId } + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopRecharge/model/index.ts b/src/api/shop/shopRecharge/model/index.ts new file mode 100644 index 0000000..b17aa40 --- /dev/null +++ b/src/api/shop/shopRecharge/model/index.ts @@ -0,0 +1,17 @@ +/** + * 用户充值类型定义 + */ + +export interface UserRecharge { + rechargeId?: number + orderNo?: string + amount?: string + payType?: number + payStatus?: number + createTime?: string +} + +export interface RechargeRequest { + amount: string + payType: number +} diff --git a/src/api/shop/shopRechargeCode/index.ts b/src/api/shop/shopRechargeCode/index.ts new file mode 100644 index 0000000..04d86d8 --- /dev/null +++ b/src/api/shop/shopRechargeCode/index.ts @@ -0,0 +1,48 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { ShopRechargeCode, ShopRechargeCodeParam } from './model' + +/** + * 使用兑换码充值 + */ +export async function useRechargeCode(code: string) { + const res = await request.post>( + '/shop/recharge-code/use', + { code } + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 获取兑换码信息 + */ +export async function getRechargeCodeInfo(code: string) { + const res = await request.get>( + '/shop/recharge-code/info', + { code } + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 分页查询用户兑换记录 + */ +export async function pageRechargeCodeRecords(params: { + page?: number + limit?: number +}) { + const res = await request.get>>( + '/shop/recharge-code/records', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopRechargeCode/model/index.ts b/src/api/shop/shopRechargeCode/model/index.ts new file mode 100644 index 0000000..b8aa00a --- /dev/null +++ b/src/api/shop/shopRechargeCode/model/index.ts @@ -0,0 +1,28 @@ +/** + * 充值兑换码类型定义 + */ + +export interface ShopRechargeCode { + id: number + code: string + amount: string + userId?: number + status: number // 0-未使用, 1-已使用, 2-已过期 + generateType: number // 1-管理员生成, 2-批量生成 + batchNo?: string + expireTime?: string + usedAt?: string + balanceBefore?: string + balanceAfter?: string + createTime: string + updateTime: string +} + +export interface ShopRechargeCodeParam { + page?: number + limit?: number + code?: string + status?: number + batchNo?: string + userId?: number +} diff --git a/src/api/shop/shopRechargeOrder.ts b/src/api/shop/shopRechargeOrder.ts new file mode 100644 index 0000000..b479610 --- /dev/null +++ b/src/api/shop/shopRechargeOrder.ts @@ -0,0 +1,40 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' + +/** + * 充值订单类型 + */ +export interface RechargeOrder { + orderId?: number + orderNo?: string + userId?: number + rechargeType?: number // 充值方式(10自定义金额 20套餐充值) + payPrice?: string // 支付金额 + giftMoney?: string // 赠送金额 + actualMoney?: string // 实际到账金额 + balance?: string // 用户可用余额 + payMethod?: string // 支付方式 + payStatus?: number // 支付状态(10待支付 20已支付) + payTime?: number // 付款时间戳 + platform?: string // 来源平台 + comments?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} + +/** + * 分页查询充值记录 + */ +export async function pageUserRechargeOrder(params: { + page?: number + limit?: number +}): Promise> { + const res = await request.get>>( + '/shop/shop-recharge-order/page', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message || '获取充值记录失败')) +} diff --git a/src/api/shop/shopSeckill/index.ts b/src/api/shop/shopSeckill/index.ts new file mode 100644 index 0000000..ccf4140 --- /dev/null +++ b/src/api/shop/shopSeckill/index.ts @@ -0,0 +1,31 @@ +import request from '@/utils/request' +import type { + ShopSeckill, + ShopSeckillOrder, + ShopSeckillPageParams, +} from './model' + +/** 获取秒杀商品列表 */ +export function pageShopSeckill(params: ShopSeckillPageParams = {}) { + return request.post<{ items: ShopSeckill[]; total: number }>('/shopSeckill/page', params) +} + +/** 获取秒杀商品详情 */ +export function getShopSeckill(id: number) { + return request.post('/shopSeckill/get', { id }) +} + +/** 创建秒杀订单 */ +export function createSeckillOrder(data: { seckillId: number; goodsId: number; skuId: number; quantity: number }) { + return request.post('/shopSeckill/createOrder', data) +} + +/** 获取我的秒杀订单 */ +export function mySeckillOrders(params: { page?: number; pageSize?: number } = {}) { + return request.post<{ items: ShopSeckillOrder[]; total: number }>('/shopSeckill/myOrders', params) +} + +/** 获取秒杀时间段(场次) */ +export function getSeckillTimeSlots() { + return request.post>('/shopSeckill/timeSlots', {}) +} diff --git a/src/api/shop/shopSeckill/model.ts b/src/api/shop/shopSeckill/model.ts new file mode 100644 index 0000000..5ee0b05 --- /dev/null +++ b/src/api/shop/shopSeckill/model.ts @@ -0,0 +1,48 @@ +/** 秒杀活动 */ +export interface ShopSeckill { + id: number + goodsId: number + goodsName?: string + goodsImage?: string + /** 秒杀价格 */ + seckillPrice: number + /** 开始时间 */ + startTime: string + /** 结束时间 */ + endTime: string + /** 秒杀库存 */ + stock: number + /** 已售数量 */ + soldCount: number + /** 状态:0-未开始 1-进行中 2-已结束 */ + status: number + /** 限购数量 */ + limitPerUser: number + /** 商品详情 */ + product?: { + id: number + name: string + image: string + price: number + originalPrice?: number + } +} + +/** 秒杀订单 */ +export interface ShopSeckillOrder { + id: number + seckillId: number + userId: number + goodsId: number + quantity: number + price: number + status: number + createTime: string +} + +/** 分页参数 */ +export interface ShopSeckillPageParams { + page?: number + pageSize?: number + status?: number +} diff --git a/src/api/shop/shopSetting/index.ts b/src/api/shop/shopSetting/index.ts new file mode 100644 index 0000000..92a3ffb --- /dev/null +++ b/src/api/shop/shopSetting/index.ts @@ -0,0 +1,138 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopSetting, ShopSettingParam } from './model'; + +/** + * 分页查询设置 + */ +export async function pageShopSetting(params: ShopSettingParam) { + const res = await request.get>>( + '/shop/shop-setting/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询设置列表 + */ +export async function listShopSetting(params?: ShopSettingParam) { + const res = await request.get>( + '/shop/shop-setting', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据分类获取设置列表 + */ +export async function getShopSettingByCategory(category: string) { + const res = await request.get>( + `/shop/shop-setting/category/${category}` + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取分类设置值(Map格式) + */ +export async function getShopSettingCategoryValues(category: string) { + const res = await request.get>>( + `/shop/shop-setting/category/${category}/values` + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据key获取设置值 + */ +export async function getShopSettingValue(key: string) { + const res = await request.get>( + `/shop/shop-setting/key/${key}` + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据key获取完整设置 + */ +export async function getShopSettingByKey(key: string) { + const res = await request.get>( + `/shop/shop-setting/info/${key}` + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 保存或更新设置 + */ +export async function saveShopSetting(data: ShopSetting) { + const res = await request.post>( + '/shop/shop-setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 更新设置 + */ +export async function updateShopSetting(data: ShopSetting) { + const res = await request.put>( + '/shop/shop-setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量保存分类设置 + */ +export async function batchSaveShopSetting(category: string, values: Record) { + const res = await request.post>( + `/shop/shop-setting/batch/${category}`, + values + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除设置 + */ +export async function removeShopSetting(settingId: number) { + const res = await request.del>( + `/shop/shop-setting/${settingId}` + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopSetting/model/index.ts b/src/api/shop/shopSetting/model/index.ts new file mode 100644 index 0000000..e476bac --- /dev/null +++ b/src/api/shop/shopSetting/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商城设置 + */ +export interface ShopSetting { + // 设置ID + settingId?: number; + // 设置分类: basic/payment/notify/order/points/dealer + category?: string; + // 设置项标识 + settingKey?: string; + // 设置项名称 + settingName?: string; + // 设置值(JSON格式) + settingValue?: string; + // 设置类型: string/number/boolean/json + valueType?: string; + // 设置说明 + description?: string; + // 排序号 + sortNumber?: number; + // 是否启用 0否 1是 + isEnabled?: number; + // 是否公开(前端可读)0否 1是 + isPublic?: number; + // 租户id + tenantId?: number; + // 创建时间 + createdTime?: number; + // 更新时间 + updatedTime?: number; +} + +/** + * 商城设置搜索条件 + */ +export interface ShopSettingParam extends PageParam { + settingId?: number; + category?: string; + settingKey?: string; + keywords?: string; +} diff --git a/src/api/shop/shopSigninConfig/index.ts b/src/api/shop/shopSigninConfig/index.ts new file mode 100644 index 0000000..73f9d43 --- /dev/null +++ b/src/api/shop/shopSigninConfig/index.ts @@ -0,0 +1,31 @@ +import request from '@/utils/request' +import type { ApiResult } from '@/api' +import type { ShopSigninConfig, ShopSigninConfigParam } from './model' + +/** + * 分页查询签到积分配置表 + */ +export async function pageShopSigninConfig(params: ShopSigninConfigParam) { + const res = await request.get>( + '/shop/shop-signin-config/page', + params + ) + if (res.code === 0) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询签到积分配置表列表 + */ +export async function listShopSigninConfig(params?: ShopSigninConfigParam) { + const res = await request.get>( + '/shop/shop-signin-config', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopSigninConfig/model/index.ts b/src/api/shop/shopSigninConfig/model/index.ts new file mode 100644 index 0000000..07de101 --- /dev/null +++ b/src/api/shop/shopSigninConfig/model/index.ts @@ -0,0 +1,29 @@ +/** + * 签到积分配置表 + */ +export interface ShopSigninConfig { + /** 配置ID */ + configId?: number + /** 第几天(1-7循环) */ + dayNumber?: number + /** 获得积分数 */ + points?: number + /** 是否删除: 0否 1是 */ + deleted?: number + /** 租户ID */ + tenantId?: string +} + +/** + * 签到积分配置表搜索条件 + */ +export interface ShopSigninConfigParam { + /** 页码 */ + page?: number + /** 每页数量 */ + limit?: number + /** 配置ID */ + configId?: number + /** 关键词 */ + keywords?: string +} diff --git a/src/api/shop/shopSigninRecord/index.ts b/src/api/shop/shopSigninRecord/index.ts new file mode 100644 index 0000000..0f0d359 --- /dev/null +++ b/src/api/shop/shopSigninRecord/index.ts @@ -0,0 +1,58 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { ShopSigninRecord, ShopSigninRecordParam } from './model' + +/** + * 分页查询签到记录表 + */ +export async function pageShopSigninRecord(params: ShopSigninRecordParam) { + const res = await request.get>>( + '/shop/shop-signin-record/page', + params + ) + if (res.code === 0) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询签到记录表列表 + */ +export async function listShopSigninRecord(params?: ShopSigninRecordParam) { + const res = await request.get>( + '/shop/shop-signin-record', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 添加签到记录表 + */ +export async function addShopSigninRecord(data: Partial) { + const res = await request.post>( + '/shop/shop-signin-record', + data + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} + +/** + * 删除签到记录表 + */ +export async function removeShopSigninRecord(id?: number) { + const res = await request.del>( + '/shop/shop-signin-record/' + id + ) + if (res.code === 0) { + return res.message + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/shop/shopSigninRecord/model/index.ts b/src/api/shop/shopSigninRecord/model/index.ts new file mode 100644 index 0000000..343df1f --- /dev/null +++ b/src/api/shop/shopSigninRecord/model/index.ts @@ -0,0 +1,33 @@ +/** + * 签到记录表 + */ +export interface ShopSigninRecord { + /** 记录ID */ + recordId?: number + /** 用户ID */ + userId?: number + /** 签到日期 */ + signinDate?: string + /** 获得积分 */ + points?: number + /** 连续签到天数 */ + continuousDays?: number + /** 租户ID */ + tenantId?: string + /** 创建时间 */ + createTime?: string +} + +/** + * 签到记录搜索条件 + */ +export interface ShopSigninRecordParam { + /** 页码 */ + page?: number + /** 每页数量 */ + limit?: number + /** 记录ID */ + recordId?: number + /** 关键词 */ + keywords?: string +} diff --git a/src/api/shop/shopSpec/index.ts b/src/api/shop/shopSpec/index.ts new file mode 100644 index 0000000..a4d9b29 --- /dev/null +++ b/src/api/shop/shopSpec/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { ShopSpec, ShopSpecParam } from '@/api/shop/shopSpec/model'; + +/** + * 分页查询规格 + */ +export async function pageShopSpec(params: ShopSpecParam) { + const res = await request.get>>( + '/shop/shop-spec/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询规格列表 + */ +export async function listShopSpec(params?: ShopSpecParam) { + const res = await request.get>( + '/shop/shop-spec', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加规格 + */ +export async function addShopSpec(data: ShopSpec) { + const res = await request.post>( + '/shop/shop-spec', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改规格 + */ +export async function updateShopSpec(data: ShopSpec) { + const res = await request.put>( + '/shop/shop-spec', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除规格 + */ +export async function removeShopSpec(id?: number) { + const res = await request.del>( + '/shop/shop-spec/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除规格 + */ +export async function removeBatchShopSpec(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-spec/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询规格 + */ +export async function getShopSpec(id: number) { + const res = await request.get>( + '/shop/shop-spec/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopSpec/model/index.ts b/src/api/shop/shopSpec/model/index.ts new file mode 100644 index 0000000..b85d062 --- /dev/null +++ b/src/api/shop/shopSpec/model/index.ts @@ -0,0 +1,38 @@ +import type { PageParam } from '@/api/index'; + +/** + * 规格 + */ +export interface ShopSpec { + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 商户ID + merchantId?: number; + // 创建用户 + userId?: number; + // 更新者 + updater?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1待修,2异常已修,3异常未修 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + value?: string; +} + +/** + * 规格搜索条件 + */ +export interface ShopSpecParam extends PageParam { + specId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopSpecValue/index.ts b/src/api/shop/shopSpecValue/index.ts new file mode 100644 index 0000000..a765b28 --- /dev/null +++ b/src/api/shop/shopSpecValue/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopSpecValue, ShopSpecValueParam } from './model'; + +/** + * 分页查询规格值 + */ +export async function pageShopSpecValue(params: ShopSpecValueParam) { + const res = await request.get>>( + '/shop/shop-spec-value/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询规格值列表 + */ +export async function listShopSpecValue(params?: ShopSpecValueParam) { + const res = await request.get>( + '/shop/shop-spec-value', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加规格值 + */ +export async function addShopSpecValue(data: ShopSpecValue) { + const res = await request.post>( + '/shop/shop-spec-value', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改规格值 + */ +export async function updateShopSpecValue(data: ShopSpecValue) { + const res = await request.put>( + '/shop/shop-spec-value', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除规格值 + */ +export async function removeShopSpecValue(id?: number) { + const res = await request.del>( + '/shop/shop-spec-value/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除规格值 + */ +export async function removeBatchShopSpecValue(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-spec-value/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询规格值 + */ +export async function getShopSpecValue(id: number) { + const res = await request.get>( + '/shop/shop-spec-value/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopSpecValue/model/index.ts b/src/api/shop/shopSpecValue/model/index.ts new file mode 100644 index 0000000..8980f3b --- /dev/null +++ b/src/api/shop/shopSpecValue/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api/index'; + +/** + * 规格值 + */ +export interface ShopSpecValue { + // 规格值ID + specValueId?: number; + // 规格组ID + specId?: number; + // 规格值 + specValue?: string; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格值搜索条件 + */ +export interface ShopSpecValueParam extends PageParam { + specValueId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopStore/index.ts b/src/api/shop/shopStore/index.ts new file mode 100644 index 0000000..7a9915e --- /dev/null +++ b/src/api/shop/shopStore/index.ts @@ -0,0 +1,130 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStore, ShopStoreParam, StoreLoginResult } from './model'; + +/** + * 分页查询门店 + */ +export async function pageShopStore(params: ShopStoreParam) { + const res = await request.get>>( + '/shop/shop-store/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询门店列表 + */ +export async function listShopStore(params?: ShopStoreParam) { + const res = await request.get>( + '/shop/shop-store', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加门店 + */ +export async function addShopStore(data: ShopStore) { + const res = await request.post>( + '/shop/shop-store', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改门店 + */ +export async function updateShopStore(data: ShopStore) { + const res = await request.put>( + '/shop/shop-store', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除门店 + */ +export async function removeShopStore(id?: number) { + const res = await request.del>( + '/shop/shop-store/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除门店 + */ +export async function removeBatchShopStore(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-store/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询门店 + */ +export async function getShopStore(id: number) { + const res = await request.get>( + '/shop/shop-store/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 门店账号密码登录 + */ +export async function storeLogin(data: { phone: string; password: string }) { + const res = await request.post>( + '/shop/shop-store/store-login', + data + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询当前用户的门店关联信息 + * 返回门店用户关联记录(含 roleType、storeName 等) + */ +export async function getMyStore() { + const res = await request.get>( + '/shop/shop-store/my-store' + ); + if (res.code === 0 && res.data) { + return res.data; + } + // 非门店用户返回 null 而非 reject,方便调用方判断 + return null; +} diff --git a/src/api/shop/shopStore/model/index.ts b/src/api/shop/shopStore/model/index.ts new file mode 100644 index 0000000..1c9e689 --- /dev/null +++ b/src/api/shop/shopStore/model/index.ts @@ -0,0 +1,81 @@ +import type { PageParam } from '@/api'; + +/** + * 门店 + */ +export interface ShopStore { + // 自增ID + id?: number; + // 店铺名称 + name?: string; + // 门店地址 + address?: string; + // 手机号码 + phone?: string; + // 邮箱 + email?: string; + // 门店经理 + managerName?: string; + // 门店banner + shopBanner?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度和纬度 + lngAndLat?: string; + // 位置 + location?:string; + // 区域 + district?: string; + // 轮廓 + points?: string; + // 用户ID + userId?: number; + // 默认仓库ID(shop_warehouse.id) + warehouseId?: number; + // 默认仓库名称(可选) + warehouseName?: string; + // 营业时间 + businessHours?: string; + // 状态 + status?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 距离(km,前端计算填充) + distance?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 登录密码(虚拟字段,不入库) + password?: string; + // 用户名(虚拟字段,不入库) + username?: string; +} + +/** + * 门店搜索条件 + */ +export interface ShopStoreParam extends PageParam { + id?: number; + keywords?: string; + phone?: string; + password?: string; +} + +/** + * 门店登录结果 + */ +export interface StoreLoginResult { + access_token: string; + user: any; +} diff --git a/src/api/shop/shopStoreFence/index.ts b/src/api/shop/shopStoreFence/index.ts new file mode 100644 index 0000000..609defa --- /dev/null +++ b/src/api/shop/shopStoreFence/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopStoreFence, ShopStoreFenceParam } from './model'; + +/** + * 分页查询黄家明_电子围栏 + */ +export async function pageShopStoreFence(params: ShopStoreFenceParam) { + const res = await request.get>>( + '/shop/shop-store-fence/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询黄家明_电子围栏列表 + */ +export async function listShopStoreFence(params?: ShopStoreFenceParam) { + const res = await request.get>( + '/shop/shop-store-fence', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加黄家明_电子围栏 + */ +export async function addShopStoreFence(data: ShopStoreFence) { + const res = await request.post>( + '/shop/shop-store-fence', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改黄家明_电子围栏 + */ +export async function updateShopStoreFence(data: ShopStoreFence) { + const res = await request.put>( + '/shop/shop-store-fence', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除黄家明_电子围栏 + */ +export async function removeShopStoreFence(id?: number) { + const res = await request.del>( + '/shop/shop-store-fence/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除黄家明_电子围栏 + */ +export async function removeBatchShopStoreFence(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-store-fence/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询黄家明_电子围栏 + */ +export async function getShopStoreFence(id: number) { + const res = await request.get>( + '/shop/shop-store-fence/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopStoreFence/model/index.ts b/src/api/shop/shopStoreFence/model/index.ts new file mode 100644 index 0000000..99c20dd --- /dev/null +++ b/src/api/shop/shopStoreFence/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api/index'; + +/** + * 黄家明_电子围栏 + */ +export interface ShopStoreFence { + // 自增ID + id?: number; + // 围栏名称 + name?: string; + // 类型 0圆形 1方形 + type?: number; + // 定位 + location?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 区域 + district?: string; + // 电子围栏轮廓 + points?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 黄家明_电子围栏搜索条件 + */ +export interface ShopStoreFenceParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopStoreRider/index.ts b/src/api/shop/shopStoreRider/index.ts new file mode 100644 index 0000000..c411aef --- /dev/null +++ b/src/api/shop/shopStoreRider/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStoreRider, ShopStoreRiderParam } from './model'; + +/** + * 分页查询配送员 + */ +export async function pageShopStoreRider(params: ShopStoreRiderParam) { + const res = await request.get>>( + '/shop/shop-store-rider/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询配送员列表 + */ +export async function listShopStoreRider(params?: ShopStoreRiderParam) { + const res = await request.get>( + '/shop/shop-store-rider', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加配送员 + */ +export async function addShopStoreRider(data: ShopStoreRider) { + const res = await request.post>( + '/shop/shop-store-rider', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改配送员 + */ +export async function updateShopStoreRider(data: ShopStoreRider) { + const res = await request.put>( + '/shop/shop-store-rider', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除配送员 + */ +export async function removeShopStoreRider(id?: number) { + const res = await request.del>( + '/shop/shop-store-rider/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除配送员 + */ +export async function removeBatchShopStoreRider(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-store-rider/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询配送员 + */ +export async function getShopStoreRider(id: number) { + const res = await request.get>( + '/shop/shop-store-rider/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopStoreRider/model/index.ts b/src/api/shop/shopStoreRider/model/index.ts new file mode 100644 index 0000000..0b7ed68 --- /dev/null +++ b/src/api/shop/shopStoreRider/model/index.ts @@ -0,0 +1,71 @@ +import type { PageParam } from '@/api'; + +/** + * 配送员 + */ +export interface ShopStoreRider { + // 主键ID + id?: string; + // 配送点ID(shop_dealer.id) + dealerId?: number; + // 骑手编号(可选) + riderNo?: string; + // 姓名 + realName?: string; + // 手机号 + mobile?: string; + // 头像 + avatar?: string; + // 身份证号(可选) + idCardNo?: string; + // 状态:1启用;0禁用 + status?: number; + // 接单状态:0休息/下线;1在线;2忙碌 + workStatus?: number; + // 是否开启自动派单:1是;0否 + autoDispatchEnabled?: number; + // 派单优先级(同小区多骑手时可用,值越大越优先) + dispatchPriority?: number; + // 最大同时配送单数(0表示不限制) + maxOnhandOrders?: number; + // 是否计算工资(提成):1计算;0不计算(如三方配送点可设0) + commissionCalcEnabled?: number; + // 水每桶提成金额(元/桶) + waterBucketUnitFee?: string; + // 其他商品提成方式:1按订单固定金额;2按订单金额比例;3按商品规则(另表) + otherGoodsCommissionType?: number; + // 其他商品提成值:固定金额(元)或比例(%) + otherGoodsCommissionValue?: string; + // 用户ID + userId?: number; + // 经度(配送员当前位置) + longitude?: string; + // 纬度(配送员当前位置) + latitude?: string; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 配送员搜索条件 + */ +export interface ShopStoreRiderParam extends PageParam { + id?: number; + keywords?: string; + // 配送点/门店ID(后端可能用 dealerId 或 storeId) + dealerId?: number; + storeId?: number; + status?: number; + workStatus?: number; + autoDispatchEnabled?: number; +} diff --git a/src/api/shop/shopStoreUser/index.ts b/src/api/shop/shopStoreUser/index.ts new file mode 100644 index 0000000..df33349 --- /dev/null +++ b/src/api/shop/shopStoreUser/index.ts @@ -0,0 +1,116 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStoreUser, ShopStoreUserParam } from './model'; + +/** + * 分页查询店员 + */ +export async function pageShopStoreUser(params: ShopStoreUserParam) { + const res = await request.get>>( + '/shop/shop-store-user/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询店员列表 + */ +export async function listShopStoreUser(params?: ShopStoreUserParam) { + const res = await request.get>( + '/shop/shop-store-user', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加店员 + */ +export async function addShopStoreUser(data: ShopStoreUser) { + const res = await request.post>( + '/shop/shop-store-user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改店员 + */ +export async function updateShopStoreUser(data: ShopStoreUser) { + const res = await request.put>( + '/shop/shop-store-user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除店员 + */ +export async function removeShopStoreUser(id?: number) { + const res = await request.del>( + '/shop/shop-store-user/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除店员 + */ +export async function removeBatchShopStoreUser(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-store-user/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询店员 + */ +export async function getShopStoreUser(id: number) { + const res = await request.get>( + '/shop/shop-store-user/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询当前登录用户的店员信息 + * 用于小程序端判断当前用户是否为门店经理/店员 + * 返回店员记录(含 storeName 等关联字段),非店员返回 null + */ +export async function getMyClerk() { + const res = await request.get>( + '/shop/shop-store-user/my' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return null; +} diff --git a/src/api/shop/shopStoreUser/model/index.ts b/src/api/shop/shopStoreUser/model/index.ts new file mode 100644 index 0000000..46151f5 --- /dev/null +++ b/src/api/shop/shopStoreUser/model/index.ts @@ -0,0 +1,36 @@ +import type { PageParam } from '@/api'; + +/** + * 店员 + */ +export interface ShopStoreUser { + // 主键ID + id?: number; + // 配送点ID(shop_dealer.id) + storeId?: number; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 店员搜索条件 + */ +export interface ShopStoreUserParam extends PageParam { + id?: number; + keywords?: string; + storeId?: number; + userId?: number; + isDelete?: number; +} diff --git a/src/api/shop/shopStoreWarehouse/index.ts b/src/api/shop/shopStoreWarehouse/index.ts new file mode 100644 index 0000000..898e7b9 --- /dev/null +++ b/src/api/shop/shopStoreWarehouse/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopStoreWarehouse, ShopStoreWarehouseParam } from './model'; + +/** + * 分页查询仓库 + */ +export async function pageShopStoreWarehouse(params: ShopStoreWarehouseParam) { + const res = await request.get>>( + '/shop/shop-store-warehouse/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询仓库列表 + */ +export async function listShopStoreWarehouse(params?: ShopStoreWarehouseParam) { + const res = await request.get>( + '/shop/shop-store-warehouse', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加仓库 + */ +export async function addShopStoreWarehouse(data: ShopStoreWarehouse) { + const res = await request.post>( + '/shop/shop-store-warehouse', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改仓库 + */ +export async function updateShopStoreWarehouse(data: ShopStoreWarehouse) { + const res = await request.put>( + '/shop/shop-store-warehouse', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除仓库 + */ +export async function removeShopStoreWarehouse(id?: number) { + const res = await request.del>( + '/shop/shop-store-warehouse/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchShopStoreWarehouse(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-store-warehouse/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询仓库 + */ +export async function getShopStoreWarehouse(id: number) { + const res = await request.get>( + '/shop/shop-store-warehouse/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopStoreWarehouse/model/index.ts b/src/api/shop/shopStoreWarehouse/model/index.ts new file mode 100644 index 0000000..90d5d84 --- /dev/null +++ b/src/api/shop/shopStoreWarehouse/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api/index'; + +/** + * 仓库 + */ +export interface ShopStoreWarehouse { + // 自增ID + id?: number; + // 仓库名称 + name?: string; + // 唯一标识 + code?: string; + // 类型 中心仓,区域仓,门店仓 + type?: string; + // 仓库地址 + address?: string; + // 真实姓名 + realName?: string; + // 联系电话 + phone?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经纬度 + lngAndLat?: string; + // 用户ID + userId?: number; + // 状态 + status?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 仓库搜索条件 + */ +export interface ShopStoreWarehouseParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopUserAddress.ts b/src/api/shop/shopUserAddress.ts new file mode 100644 index 0000000..de42abe --- /dev/null +++ b/src/api/shop/shopUserAddress.ts @@ -0,0 +1,41 @@ +import request from '@/utils/request'; + +/** 收货地址列表 */ +export function listShopUserAddress(params?: any) { + return request.get('/shop/shop-user-address', params); +} + +/** 获取收货地址详情 */ +export function getShopUserAddress(id: number) { + return request.get(`/shop/shop-user-address/${id}`); +} + +/** 添加收货地址 */ +export function addShopUserAddress(data: any) { + return request.post('/shop/shop-user-address', data); +} + +/** 更新收货地址 */ +export function updateShopUserAddress(data: any) { + return request.put('/shop/shop-user-address', data); +} + +/** 删除收货地址 */ +export function removeShopUserAddress(id: number) { + return request.delete(`/shop/shop-user-address/${id}`); +} + +/** 批量删除收货地址 */ +export function removeBatchShopUserAddress(ids: number[]) { + return request.post('/shop/shop-user-address/batch-delete', { ids }); +} + +/** 设置默认收货地址 */ +export function setDefaultAddress(id: number) { + return request.post(`/shop/shop-user-address/set-default/${id}`); +} + +/** 获取默认收货地址 */ +export function getDefaultAddress() { + return request.get('/shop/shop-user-address/default'); +} diff --git a/src/api/shop/shopUserAddress/index.ts b/src/api/shop/shopUserAddress/index.ts new file mode 100644 index 0000000..dde2623 --- /dev/null +++ b/src/api/shop/shopUserAddress/index.ts @@ -0,0 +1,112 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUserAddress, ShopUserAddressParam } from './model'; + +/** + * 分页查询收货地址 + */ +export async function pageShopUserAddress(params: ShopUserAddressParam) { + const res = await request.get>>( + '/shop/shop-user-address/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询收货地址列表 + */ +export async function listShopUserAddress(params?: ShopUserAddressParam) { + const res = await request.get>( + '/shop/shop-user-address', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加收货地址 + */ +export async function addShopUserAddress(data: ShopUserAddress) { + const res = await request.post>( + '/shop/shop-user-address', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改收货地址 + */ +export async function updateShopUserAddress(data: ShopUserAddress) { + const res = await request.put>( + '/shop/shop-user-address/' + data.id, + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除收货地址 + */ +export async function removeShopUserAddress(id?: number) { + const res = await request.del>( + '/shop/shop-user-address/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 设置默认收货地址 + */ +export async function setDefaultAddress(id: number) { + const res = await request.put>( + '/shop/shop-user-address/set-default/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除收货地址 + */ +export async function removeBatchShopUserAddress(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-user-address/batch', + { ids: data.filter(Boolean) } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询收货地址 + */ +export async function getShopUserAddress(id: number) { + const res = await request.get>( + '/shop/shop-user-address/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopUserAddress/model.ts b/src/api/shop/shopUserAddress/model.ts new file mode 100644 index 0000000..c6c5433 --- /dev/null +++ b/src/api/shop/shopUserAddress/model.ts @@ -0,0 +1,17 @@ +/** 收货地址 */ +export interface ShopUserAddress { + id?: number; + userId?: number; + name?: string; // 收货人姓名 + phone?: string; // 收货人电话 + province?: string; // 省份 + city?: string; // 城市 + district?: string; // 区县 + region?: string; // 区域(部分接口用 region) + detail?: string; // 详细地址 + lng?: string; // 经度 + lat?: string; // 纬度 + isDefault?: number; // 是否默认 0-否 1-是 + createTime?: string; + updateTime?: string; +} diff --git a/src/api/shop/shopUserAddress/model/index.ts b/src/api/shop/shopUserAddress/model/index.ts new file mode 100644 index 0000000..85696b9 --- /dev/null +++ b/src/api/shop/shopUserAddress/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api'; + +/** + * 收货地址 + */ +export interface ShopUserAddress { + // 主键ID + id?: number; + // 姓名 + name?: string; + // 手机号码 + phone?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 收货地址 + address?: string; + // 收货地址 + fullAddress?: string; + // + lat?: string; + // + lng?: string; + // 1先生 2女士 + gender?: number; + // 家、公司、学校 + type?: string; + // 默认收货地址 + isDefault?: boolean; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 更新时间 + updateTime?: string; +} + +/** + * 收货地址搜索条件 + */ +export interface ShopUserAddressParam extends PageParam { + id?: number; + userId?: number; + isDefault?: boolean; + keywords?: string; +} diff --git a/src/api/shop/shopUserCard/index.ts b/src/api/shop/shopUserCard/index.ts new file mode 100644 index 0000000..254d12e --- /dev/null +++ b/src/api/shop/shopUserCard/index.ts @@ -0,0 +1,57 @@ +import request from '@/utils/request' +import type { ApiResult } from '@/api' +import type { UserCardStats, UserOrderStats } from './model' + +/** + * 获取用户卡片统计(余额/积分/优惠券/礼品卡) + * 后端聚合接口:/api/user/card/stats(60s 缓存) + * 余额数据来源:后端跨库读取 gxwebsoft_core.sys_user + */ +export async function getUserCardStats(): Promise { + try { + const res = await request.get>('/user/card/stats') + if (res.code === 0 && res.data) { + const d = res.data + return { + balance: d.balance != null ? String(d.balance) : '0.00', + points: d.points || 0, + coupons: d.coupons || 0, + giftCards: d.giftCards || 0, + } + } + } catch (e) { + console.error('[CardStats] /user/card/stats 请求失败:', e) + } + return { + balance: '0.00', + points: 0, + coupons: 0, + giftCards: 0, + } +} + +/** + * 获取用户订单统计 + * 后端接口:/api/user/orders/stats(60s 缓存) + */ +export async function getUserOrderStats(): Promise { + try { + const res = await request.get>('/user/orders/stats') + if (res.code === 0 && res.data) { + return { + pending: res.data.pending || 0, + paid: res.data.paid || 0, + shipped: res.data.shipped || 0, + completed: res.data.completed || 0, + } + } + } catch (e) { + console.error('获取订单统计失败:', e) + } + return { + pending: 0, + paid: 0, + shipped: 0, + completed: 0, + } +} diff --git a/src/api/shop/shopUserCard/model/index.ts b/src/api/shop/shopUserCard/model/index.ts new file mode 100644 index 0000000..3cc0554 --- /dev/null +++ b/src/api/shop/shopUserCard/model/index.ts @@ -0,0 +1,17 @@ +/** + * 用户卡片统计类型定义 + */ + +export interface UserCardStats { + balance: string + points: number + coupons: number + giftCards: number +} + +export interface UserOrderStats { + pending: number // 待付款 + paid: number // 待发货 + shipped: number // 待收货 + completed: number // 已完成 +} diff --git a/src/api/shop/shopUserCoupon/index.ts b/src/api/shop/shopUserCoupon/index.ts new file mode 100644 index 0000000..0aa346a --- /dev/null +++ b/src/api/shop/shopUserCoupon/index.ts @@ -0,0 +1,155 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUserCoupon, ShopUserCouponParam } from './model'; + +/** + * 分页查询用户优惠券 + */ +export async function pageShopUserCoupon(params: ShopUserCouponParam) { + const res = await request.get>>( + '/shop/shop-user-coupon/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询用户优惠券列表 + */ +export async function listShopUserCoupon(params?: ShopUserCouponParam) { + const res = await request.get>( + '/shop/shop-user-coupon', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加用户优惠券 + */ +export async function addShopUserCoupon(data: ShopUserCoupon) { + const res = await request.post>( + '/shop/shop-user-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户优惠券 + */ +export async function updateShopUserCoupon(data: ShopUserCoupon) { + const res = await request.put>( + '/shop/shop-user-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除用户优惠券 + */ +export async function removeShopUserCoupon(id?: number) { + const res = await request.del>( + '/shop/shop-user-coupon/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除用户优惠券 + */ +export async function removeBatchShopUserCoupon(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-user-coupon/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询用户优惠券 + */ +export async function getShopUserCoupon(id: number) { + const res = await request.get>( + '/shop/shop-user-coupon/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取我的可用优惠券 + */ +export async function getMyAvailableCoupons() { + const res = await request.get>( + '/shop/shop-user-coupon/my/available' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取我的已使用优惠券 + */ +export async function getMyUsedCoupons() { + const res = await request.get>( + '/shop/shop-user-coupon/my/used' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取我的已过期优惠券 + */ +export async function getMyExpiredCoupons() { + const res = await request.get>( + '/shop/shop-user-coupon/my/expired' + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + + +/** + * 领取优惠券 + */ +export async function takeCoupon(couponId: number) { + const res = await request.post>( + '/shop/shop-user-coupon/take', + { couponId } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopUserCoupon/model/index.ts b/src/api/shop/shopUserCoupon/model/index.ts new file mode 100644 index 0000000..f0f77e3 --- /dev/null +++ b/src/api/shop/shopUserCoupon/model/index.ts @@ -0,0 +1,84 @@ +import type { PageParam } from '@/api/index'; + +/** + * 用户优惠券 + */ +export interface ShopUserCoupon { + // id + id?: string; + // 优惠券模板ID + couponId?: number; + // 用户ID + userId?: number; + // 优惠券名称 + name?: string; + // 优惠券描述 + description?: string; + // 优惠券类型(10满减券 20折扣券 30免费劵) + type?: number; + // 满减券-减免金额 + reducePrice?: string; + // 折扣券-折扣率(0-100) + discount?: number; + // 最低消费金额 + minPrice?: string; + // 适用范围(10全部商品 20指定商品 30指定分类) + applyRange?: number; + // 适用范围配置(json格式) + applyRangeConfig?: string; + // 有效期开始时间 + startTime?: string; + // 有效期结束时间 + endTime?: string; + // 使用状态(0未使用 1已使用 2已过期) + status?: number; + // 状态文本描述 + statusText?: string; + // 是否过期, 0否, 1是 + isExpire?: number; + // 是否即将过期(后端计算) + isExpiringSoon?: boolean; + // 剩余天数(后端计算) + daysRemaining?: number; + // 剩余小时数(后端计算) + hoursRemaining?: number; + // 使用时间 + takeTime?: string; + // 使用订单ID + orderId?: string; + // 使用订单号 + orderNo?: string; + // 获取方式(10主动领取 20系统发放 30活动赠送) + obtainType?: number; + // 获取来源描述 + obtainSource?: string; + // 是否删除, 0否, 1是 + deleted?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 用户优惠券搜索条件 + */ +export interface ShopUserCouponParam extends PageParam { + id?: number; + userId?: number; + status?: number; + isExpire?: number; + sortBy?: string; + sortOrder?: string; + // 仅查询有效的优惠券 + validOnly?: boolean; + // 仅查询已过期的优惠券 + expired?: boolean; + // 查询即将过期的优惠券 + expiringSoon?: boolean; + // 当前时间(用于测试) + currentTime?: string; + keywords?: string; +} diff --git a/src/api/shop/shopUserReferee/index.ts b/src/api/shop/shopUserReferee/index.ts new file mode 100644 index 0000000..5f7cc55 --- /dev/null +++ b/src/api/shop/shopUserReferee/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUserReferee, ShopUserRefereeParam } from './model'; + +/** + * 分页查询用户推荐关系表 + */ +export async function pageShopUserReferee(params: ShopUserRefereeParam) { + const res = await request.get>>( + '/shop/shop-user-referee/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询用户推荐关系表列表 + */ +export async function listShopUserReferee(params?: ShopUserRefereeParam) { + const res = await request.get>( + '/shop/shop-user-referee', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加用户推荐关系表 + */ +export async function addShopUserReferee(data: ShopUserReferee) { + const res = await request.post>( + '/shop/shop-user-referee', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户推荐关系表 + */ +export async function updateShopUserReferee(data: ShopUserReferee) { + const res = await request.put>( + '/shop/shop-user-referee', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除用户推荐关系表 + */ +export async function removeShopUserReferee(id?: number) { + const res = await request.del>( + '/shop/shop-user-referee/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除用户推荐关系表 + */ +export async function removeBatchShopUserReferee(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-user-referee/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询用户推荐关系表 + */ +export async function getShopUserReferee(id: number) { + const res = await request.get>( + '/shop/shop-user-referee/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopUserReferee/model/index.ts b/src/api/shop/shopUserReferee/model/index.ts new file mode 100644 index 0000000..910692c --- /dev/null +++ b/src/api/shop/shopUserReferee/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api/index'; + +/** + * 用户推荐关系表 + */ +export interface ShopUserReferee { + // 主键ID + id?: number; + // 推荐人ID + dealerId?: number; + // 用户id(被推荐人) + userId?: number; + // 推荐关系层级(1,2,3) + level?: number; + // 备注 + comments?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 用户推荐关系表搜索条件 + */ +export interface ShopUserRefereeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopWithdrawRecord.ts b/src/api/shop/shopWithdrawRecord.ts new file mode 100644 index 0000000..0426731 --- /dev/null +++ b/src/api/shop/shopWithdrawRecord.ts @@ -0,0 +1,50 @@ +import request from '@/utils/request'; + +/** + * 获取我的提现记录 + */ +export function getMyWithdrawList(params: any) { + return request.get('/shop/shop-withdraw-record/my/list', params); +} + +/** + * 获取提现统计 + */ +export function getWithdrawStats() { + return request.get('/shop/shop-withdraw-record/my/stats'); +} + +/** + * 获取提现配置 + */ +export function getWithdrawConfig() { + return request.get('/shop/shop-withdraw-record/config'); +} + +/** + * 申请提现 + */ +export function applyWithdraw(data: any) { + return request.post('/shop/shop-withdraw-record/apply', data); +} + +/** + * 获取提现记录列表(管理员) + */ +export function getWithdrawList(params: any) { + return request.get('/shop/shop-withdraw-record/page', params); +} + +/** + * 审核提现申请 + */ +export function auditWithdraw(id: number, data: any) { + return request.post(`/shop/shop-withdraw-record/audit/${id}`, data); +} + +/** + * 确认打款 + */ +export function confirmTransfer(id: number, data: any) { + return request.post(`/shop/shop-withdraw-record/transfer/${id}`, data); +} diff --git a/src/api/system/access-key/index.ts b/src/api/system/access-key/index.ts new file mode 100644 index 0000000..a2863a3 --- /dev/null +++ b/src/api/system/access-key/index.ts @@ -0,0 +1,59 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { AccessKey, AccessKeyParam } from './model'; +import { PageResult } from '@/api/index'; +import {SERVER_API_URL} from "@/utils/server"; +/** + * 查询AccessKey列表 + */ +export async function pageAccessKey(params: AccessKeyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/access-key/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加AccessKey + */ +export async function addAccessKey(data: AccessKey) { + const res = await request.post>( + SERVER_API_URL + '/system/access-key', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改AccessKey + */ +export async function updateAccessKey(data: AccessKey) { + const res = await request.put>( + SERVER_API_URL + '/system/access-key', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除AccessKey + */ +export async function removeAccessKey(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/access-key/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/access-key/model/index.ts b/src/api/system/access-key/model/index.ts new file mode 100644 index 0000000..376b577 --- /dev/null +++ b/src/api/system/access-key/model/index.ts @@ -0,0 +1,20 @@ +/** + * AccessKey + */ +export interface AccessKey { + id?: number; + phone?: string; + accessKey?: string; + accessSecret?: string; + createTime?: string; + tenantId?: number; + code?: number; +} + +/** + * AccessKey搜索条件 + */ +export interface AccessKeyParam { + id?: number; + accessKey?: string; +} diff --git a/src/api/system/appstore/index.ts b/src/api/system/appstore/index.ts new file mode 100644 index 0000000..4acad48 --- /dev/null +++ b/src/api/system/appstore/index.ts @@ -0,0 +1,11 @@ +// json数据 +export function appstoreType() { + return [ + { value: '0', label: '全部', text: '全部', comments: '' }, + { value: '1', label: '系统管理', text: '系统管理', comments: '' }, + { value: '2', label: '内容管理', text: '内容管理', comments: '' }, + { value: '3', label: '第三方应用', text: '第三方应用', comments: '' }, + { value: '4', label: '办公协同', text: '办公协同', comments: '' }, + { value: '5', label: '商城模块', text: '商城模块', comments: '' } + ]; +} diff --git a/src/api/system/appstore/model/index.ts b/src/api/system/appstore/model/index.ts new file mode 100644 index 0000000..c3c9c45 --- /dev/null +++ b/src/api/system/appstore/model/index.ts @@ -0,0 +1,13 @@ +/** + * 消息 + */ +export interface Appstore { + // 消息id + id?: number; + // 标题 + title?: string; + // 时间 + time?: string; + // 状态 + status?: number; +} diff --git a/src/api/system/cache/index.ts b/src/api/system/cache/index.ts new file mode 100644 index 0000000..0fd5813 --- /dev/null +++ b/src/api/system/cache/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { Cache, CacheParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 查询缓存数据 + */ +export async function listCache(params?: CacheParam) { + const res = await request.get>( + SERVER_API_URL + '/system/cache', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取缓存数据 + * @param key + */ +export async function getCache(key: string) { + const res = await request.get>( + SERVER_API_URL + '/system/cache/' + key + ); + if (res.code === 0) { + return res.data; + } +} + +/** + * 更新缓存数据 + * @param cache + */ +export async function updateCache(cache: Cache) { + const res = await request.post>( + SERVER_API_URL + '/system/cache', + cache + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除缓存数据 + * @param key + */ +export async function removeCache(key?: string) { + const res = await request.del>( + SERVER_API_URL + '/system/cache/' + key + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 更新缓存数据 + * @param cache + */ +export async function updateCacheTheme(cache: Cache) { + const res = await request.post>( + SERVER_API_URL + '/system/cache/theme', + cache + ); + if (res.code === 0) { + return res.message; + } +} diff --git a/src/api/system/cache/model/index.ts b/src/api/system/cache/model/index.ts new file mode 100644 index 0000000..dc28d00 --- /dev/null +++ b/src/api/system/cache/model/index.ts @@ -0,0 +1,18 @@ +import type { PageParam } from '@/api'; + +/** + * 缓存管理 + */ +export interface Cache { + key?: string; + content?: string; + uploadMethod?: any; + expireTime?: number; // 过期时间(秒) +} + +/** + * 搜索条件 + */ +export interface CacheParam extends PageParam { + key?: string; +} diff --git a/src/api/system/chat/index.ts b/src/api/system/chat/index.ts new file mode 100644 index 0000000..e7b9e79 --- /dev/null +++ b/src/api/system/chat/index.ts @@ -0,0 +1,157 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + ChatConversation, + ChatConversationParam, + ChatMessage, + ChatMessageParam +} from '@/api/system/chat/model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 查询聊天列表 + */ +export async function pageChatConversation(params: ChatConversationParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-conversation/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询聊天列表 + */ +export async function pageChatMessage(params: ChatMessageParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-message/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} +/** + * 查询日志列表 + */ +export async function listChatConversation(params?: ChatConversationParam) { + const res = await request.get>( + SERVER_API_URL + '/system/chat-conversation', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加日志 + */ +export async function addChatMessage(data: ChatMessage) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-message', + data + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加日志 + */ +export async function addChatConversation(data: ChatConversation) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-conversation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改日志 + */ +export async function updateChatConversation(data: any) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-conversation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 绑定日志 + */ +export async function bindChatConversation(data: ChatConversation) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-conversation/bind', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量添加 + */ +export async function addBatchChatConversation(data: ChatConversation[]) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-conversation/batch', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除日志 + */ +export async function removeChatConversation(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/chat-conversation/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除日志 + */ +export async function removeBatchChatConversation( + data: (number | undefined)[] +) { + const res = await request.del>( + SERVER_API_URL + '/system/chat-conversation/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/chat/model/index.ts b/src/api/system/chat/model/index.ts new file mode 100644 index 0000000..5ead20e --- /dev/null +++ b/src/api/system/chat/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; +import type { User } from '@/api/system/user/model'; + +export interface ChatConversation { + id?: number; + userId?: number; + friendId?: number; + userInfo?: User; + friendInfo?: User; + content: string; + messages: ChatMessage[]; + unRead: number; + createTime?: string; + updateTime: string | number | Date; +} + +export interface ChatMessage { + id?: number; + formUserId?: number; + formUserInfo?: User; + toUserInfo?: User; + toUserId?: number; + type: string; + content: string; + status?: number; + createTime?: number; + updateTime?: number; +} + +/** + * 搜索条件 + */ +export interface ChatConversationParam extends PageParam { + userId?: number; + status: number; + onlyFake: boolean; + keywords: string; +} + +/** + * 搜索条件 + */ +export interface ChatMessageParam extends PageParam { + formUserId?: number; + toUserId?: number; + type?: string; + status?: number; + keywords: string; +} diff --git a/src/api/system/chatConversation/index.ts b/src/api/system/chatConversation/index.ts new file mode 100644 index 0000000..2b75eec --- /dev/null +++ b/src/api/system/chatConversation/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ChatConversation, ChatConversationParam } from './model'; + + +/** + * 分页查询聊天消息表 + */ +export async function pageChatConversation(params: ChatConversationParam) { + const res = await request.get>>( + '/shop/chat-conversation/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询聊天消息表列表 + */ +export async function listChatConversation(params?: ChatConversationParam) { + const res = await request.get>( + '/shop/chat-conversation', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addChatConversation(data: ChatConversation) { + const res = await request.post>( + '/shop/chat-conversation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改聊天消息表 + */ +export async function updateChatConversation(data: ChatConversation) { + const res = await request.put>( + '/shop/chat-conversation', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除聊天消息表 + */ +export async function removeChatConversation(id?: number) { + const res = await request.del>( + '/shop/chat-conversation/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除聊天消息表 + */ +export async function removeBatchChatConversation(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/chat-conversation/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询聊天消息表 + */ +export async function getChatConversation(id: number) { + const res = await request.get>( + '/shop/chat-conversation/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/chatConversation/model/index.ts b/src/api/system/chatConversation/model/index.ts new file mode 100644 index 0000000..110806d --- /dev/null +++ b/src/api/system/chatConversation/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 聊天消息表 + */ +export interface ChatConversation { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 好友ID + friendId?: number; + // 消息类型 + type?: number; + // 消息内容 + content?: string; + // 未读消息 + unRead?: number; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 聊天消息表搜索条件 + */ +export interface ChatConversationParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/chatMessage/index.ts b/src/api/system/chatMessage/index.ts new file mode 100644 index 0000000..5526ebf --- /dev/null +++ b/src/api/system/chatMessage/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ChatMessage, ChatMessageParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询聊天消息表 + */ +export async function pageChatMessage(params: ChatMessageParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-message/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询聊天消息表列表 + */ +export async function listChatMessage(params?: ChatMessageParam) { + const res = await request.get>( + SERVER_API_URL + '/system/chat-message', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addChatMessage(data: ChatMessage) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-message', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addBatchChatMessage(data: ChatMessage[]) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-message/batch', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改聊天消息表 + */ +export async function updateChatMessage(data: ChatMessage) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-message', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除聊天消息表 + */ +export async function removeChatMessage(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/chat-message/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除聊天消息表 + */ +export async function removeBatchChatMessage(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/chat-message/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询聊天消息表 + */ +export async function getChatMessage(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/chat-message/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/chatMessage/model/index.ts b/src/api/system/chatMessage/model/index.ts new file mode 100644 index 0000000..4352a3f --- /dev/null +++ b/src/api/system/chatMessage/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 聊天消息表 + */ +export interface ChatMessage { + // 自增ID + id?: number; + // 发送人ID + formUserId?: number; + // 接收人ID + toUserId?: number; + // 消息类型 + type?: string; + // 消息内容 + content?: string; + // 屏蔽接收方 + sideTo?: number; + // 屏蔽发送方 + sideFrom?: number; + // 是否撤回 + withdraw?: number; + // 文件信息 + fileInfo?: string; + toUserName?: any; + formUserName?: string; + // 批量发送 + toUserIds?: any[]; + // 存在联系方式 + hasContact?: number; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 聊天消息表搜索条件 + */ +export interface ChatMessageParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/company/index.ts b/src/api/system/company/index.ts new file mode 100644 index 0000000..56738c2 --- /dev/null +++ b/src/api/system/company/index.ts @@ -0,0 +1,161 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { Company, CompanyParam } from './model'; +import { PageResult } from '@/api/index'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 查询企业资料 + */ +export async function getCompany(params?: CompanyParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company/profile', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询企业资料不限租户 + */ +export async function getCompanyAll(companyId: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company/profileAll/' + companyId + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询Company列表 + */ +export async function pageCompany(params: CompanyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询Company列表不限租户 + */ +export async function pageCompanyAll(params: CompanyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company/pageAll', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加Company + */ +export async function addCompany(data: Company) { + const res = await request.post>( + SERVER_API_URL + '/system/company', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改Company + */ +export async function updateCompany(data: Company) { + const res = await request.put>( + SERVER_API_URL + '/system/company', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改CompanyAll + */ +export async function updateCompanyAll(data: Company) { + const res = await request.put>( + SERVER_API_URL + '/system/company/updateCompanyAll', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除Company + */ +export async function removeCompany(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/company/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 销毁租户 +export async function destructionTenant(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/company/destruction/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除Company + */ +export async function removeBatchCompany(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/company/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/company/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/company/model/index.ts b/src/api/system/company/model/index.ts new file mode 100644 index 0000000..c804858 --- /dev/null +++ b/src/api/system/company/model/index.ts @@ -0,0 +1,120 @@ +import type { PageParam } from '@/api'; +import type {CompanyParameter} from "~/api/system/companyParameter/model"; +import type {CompanyUrl} from "~/api/system/companyUrl/model"; +import type {CompanyGit} from "~/api/system/companyGit/model"; + +/** + * 企业信息 + */ +export interface Company { + companyId?: number; + type?: number; + menuId?: number; + shortName?: string; + companyName?: string; + companyType?: number; + companyTypeMultiple?: string; + appType?: string; + companyLogo?: string; + image?: string; + content?: string; + files?: any; + companyCode?: string; + domain?: string; + phone?: string; + tel?: string; + email?: string; + InvoiceHeader?: string; + startTime?: string; + expirationTime?: string; + version?: number; + versionName?: string; + versionCode?: string; + members?: number; + storage?: string; + storageMax?: string; + buys?: number; + clicks?: number; + users?: number; + departments?: number; + industryParent?: string; + industryChild?: string; + country?: string; + province?: string; + city?: string; + region?: string; + address?: string; + latitude?: string; + longitude?: string; + businessEntity?: string; + comments?: any; + authentication?: number; + industryId?: number; + industryName?: string; + status?: number; + userId?: number; + official?: boolean; + price?: number; + chargingMethod?: number; + planId?: number; + sortNumber?: number; + authoritative?: boolean; + merchantId?: number; + tenantId?: number; + tenantName?: string; + tenantCode?: string; + modules?: string; + requestUrl?: string; + socketUrl?: string; + serverUrl?: string; + modulesUrl?: string; + merchantUrl?: string; + websiteUrl?: string; + mpWeixinCode?: string; + mpAlipayCode?: string; + h5Code?: string; + androidUrl?: string; + iosUrl?: string; + avatar?: string; + nickname?: string; + code?: number; + createTime?: string; + updateTime?: string; + password?: string; + password2?: string; + collection?: boolean; + recommend?: boolean; + title?: string; + parentName?: string; + categoryName?: string; + rate?: number; + isBuy?: boolean; + installed?: boolean; + parameters?: CompanyParameter[]; + links?: CompanyUrl[]; + accounts?: CompanyUrl[]; + gits?: CompanyGit[]; +} + +/** + * 企业信息搜索条件 + */ +export interface CompanyParam extends PageParam { + companyId?: number; + type?: number; + official?: boolean; + shortName?: string; + companyName?: string; + domain?: string; + authoritative?: number; + authentication?: number; + industryParent?: string; + industryChild?: string; + province?: string; + city?: string; + region?: string; + version?: number; + status?: number; + recommend?: boolean; + collection?: boolean; +} diff --git a/src/api/system/companyComment/index.ts b/src/api/system/companyComment/index.ts new file mode 100644 index 0000000..5b2cf41 --- /dev/null +++ b/src/api/system/companyComment/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api'; +import type {CompanyComment, CompanyCommentParam} from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询应用评论 + */ +export async function pageCompanyComment(params: CompanyCommentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-comment/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用评论列表 + */ +export async function listCompanyComment(params?: CompanyCommentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-comment', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加应用评论 + */ +export async function addCompanyComment(data: CompanyComment) { + const res = await request.post>( + SERVER_API_URL + '/system/company-comment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用评论 + */ +export async function updateCompanyComment(data: CompanyComment) { + const res = await request.put>( + SERVER_API_URL + '/system/company-comment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除应用评论 + */ +export async function removeCompanyComment(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/company-comment/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除应用评论 + */ +export async function removeBatchCompanyComment(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/company-comment/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用评论 + */ +export async function getCompanyComment(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-comment/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/companyComment/model/index.ts b/src/api/system/companyComment/model/index.ts new file mode 100644 index 0000000..45d4b6c --- /dev/null +++ b/src/api/system/companyComment/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 应用评论 + */ +export interface CompanyComment { + // ID + id?: number; + // 父级ID + parentId?: number; + // 用户ID + userId?: number; + // 企业ID + companyId?: number; + // 评分 + rate?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 评论内容 + comments?: string; + // 状态 + status?: number; + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 企业 + logo?: string; + // 创建时间 + createTime?: string; + // 子列表 + children?: CompanyComment[]; +} + +/** + * 应用评论搜索条件 + */ +export interface CompanyCommentParam extends PageParam { + id?: number; + userId?: number; + tenantId?: number; + keywords?: string; +} diff --git a/src/api/system/companyContent/index.ts b/src/api/system/companyContent/index.ts new file mode 100644 index 0000000..adaf3cb --- /dev/null +++ b/src/api/system/companyContent/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyContent, CompanyContentParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询应用详情 + */ +export async function pageCompanyContent(params: CompanyContentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-content/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用详情列表 + */ +export async function listCompanyContent(params?: CompanyContentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-content', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加应用详情 + */ +export async function addCompanyContent(data: CompanyContent) { + const res = await request.post>( + SERVER_API_URL + '/system/company-content', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用详情 + */ +export async function updateCompanyContent(data: CompanyContent) { + const res = await request.put>( + SERVER_API_URL + '/system/company-content', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除应用详情 + */ +export async function removeCompanyContent(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/company-content/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除应用详情 + */ +export async function removeBatchCompanyContent(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/company-content/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用详情 + */ +export async function getCompanyContent(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-content/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/companyContent/model/index.ts b/src/api/system/companyContent/model/index.ts new file mode 100644 index 0000000..226f513 --- /dev/null +++ b/src/api/system/companyContent/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 应用详情 + */ +export interface CompanyContent { + // + id?: number; + // 企业ID + companyId?: number; + // 详细内容 + content?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用详情搜索条件 + */ +export interface CompanyContentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/companyGit/index.ts b/src/api/system/companyGit/index.ts new file mode 100644 index 0000000..ab05987 --- /dev/null +++ b/src/api/system/companyGit/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyGit, CompanyGitParam } from './model'; +import { SERVER_API_URL } from '@/config/index'; + +/** + * 分页查询代码仓库 + */ +export async function pageCompanyGit(params: CompanyGitParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-git/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询代码仓库列表 + */ +export async function listCompanyGit(params?: CompanyGitParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-git', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加代码仓库 + */ +export async function addCompanyGit(data: CompanyGit) { + const res = await request.post>( + SERVER_API_URL + '/system/company-git', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改代码仓库 + */ +export async function updateCompanyGit(data: CompanyGit) { + const res = await request.put>( + SERVER_API_URL + '/system/company-git', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除代码仓库 + */ +export async function removeCompanyGit(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/company-git/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除代码仓库 + */ +export async function removeBatchCompanyGit(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/company-git/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询代码仓库 + */ +export async function getCompanyGit(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-git/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/companyGit/model/index.ts b/src/api/system/companyGit/model/index.ts new file mode 100644 index 0000000..901a7cd --- /dev/null +++ b/src/api/system/companyGit/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +/** + * 代码仓库 + */ +export interface CompanyGit { + // 自增ID + id?: number; + // 仓库名称 + title?: string; + // 厂商 0私有仓库 1github 2gitee 3其他 + brand?: string; + // 语言 + language?: string; + // 企业ID + companyId?: number; + // 仓库地址 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 仓库描述 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 代码仓库搜索条件 + */ +export interface CompanyGitParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/companyParameter/index.ts b/src/api/system/companyParameter/index.ts new file mode 100644 index 0000000..a981a35 --- /dev/null +++ b/src/api/system/companyParameter/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyParameter, CompanyParameterParam } from './model'; +import {SERVER_API_URL} from '@/utils/server'; + +/** + * 分页查询应用参数 + */ +export async function pageCompanyParameter(params: CompanyParameterParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-parameter/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listCompanyParameter(params?: CompanyParameterParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-parameter', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加应用参数 + */ +export async function addCompanyParameter(data: CompanyParameter) { + const res = await request.post>( + SERVER_API_URL + '/system/company-parameter', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用参数 + */ +export async function updateCompanyParameter(data: CompanyParameter) { + const res = await request.put>( + SERVER_API_URL + '/system/company-parameter', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除应用参数 + */ +export async function removeCompanyParameter(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/company-parameter/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchCompanyParameter(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/company-parameter/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getCompanyParameter(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-parameter/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/companyParameter/model/index.ts b/src/api/system/companyParameter/model/index.ts new file mode 100644 index 0000000..bf608d8 --- /dev/null +++ b/src/api/system/companyParameter/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 应用参数 + */ +export interface CompanyParameter { + // 自增ID + id?: number; + // 参数名称 + name?: string; + // 参数内容 + value?: string; + // 企业ID + companyId?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用参数搜索条件 + */ +export interface CompanyParameterParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/companyUrl/index.ts b/src/api/system/companyUrl/index.ts new file mode 100644 index 0000000..3b74b53 --- /dev/null +++ b/src/api/system/companyUrl/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyUrl, CompanyUrlParam } from './model'; +import {SERVER_API_URL} from '@/utils/server'; + +/** + * 分页查询应用域名 + */ +export async function pageCompanyUrl(params: CompanyUrlParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-url/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用域名列表 + */ +export async function listCompanyUrl(params?: CompanyUrlParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-url', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加应用域名 + */ +export async function addCompanyUrl(data: CompanyUrl) { + const res = await request.post>( + SERVER_API_URL + '/system/company-url', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用域名 + */ +export async function updateCompanyUrl(data: CompanyUrl) { + const res = await request.put>( + SERVER_API_URL + '/system/company-url', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除应用域名 + */ +export async function removeCompanyUrl(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/company-url/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除应用域名 + */ +export async function removeBatchCompanyUrl(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/company-url/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用域名 + */ +export async function getCompanyUrl(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-url/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/companyUrl/model/index.ts b/src/api/system/companyUrl/model/index.ts new file mode 100644 index 0000000..ddccc6b --- /dev/null +++ b/src/api/system/companyUrl/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api/index'; + +/** + * 应用域名 + */ +export interface CompanyUrl { + // 自增ID + id?: number; + // 域名类型 + type?: string; + // 企业ID + companyId?: number; + // 域名 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 二维码 + qrcode?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用域名搜索条件 + */ +export interface CompanyUrlParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/dict-data/index.ts b/src/api/system/dict-data/index.ts new file mode 100644 index 0000000..b8c9e26 --- /dev/null +++ b/src/api/system/dict-data/index.ts @@ -0,0 +1,87 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DictData, DictDataParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询字典数据 + */ +export async function pageDictData(params: DictDataParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/dict-data/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询字典数据列表 + */ +export async function listDictData(params: DictDataParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict-data', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加字典数据 + */ +export async function addDictData(data: DictData) { + const res = await request.post>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改字典数据 + */ +export async function updateDictData(data: DictData) { + const res = await request.put>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除字典数据 + */ +export async function removeDictData(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/dict-data/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除字典数据 + */ +export async function removeDictDataBatch(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/dict-data/batch', + { data } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/dict-data/model/index.ts b/src/api/system/dict-data/model/index.ts new file mode 100644 index 0000000..b39b71c --- /dev/null +++ b/src/api/system/dict-data/model/index.ts @@ -0,0 +1,46 @@ +import { PageParam } from '@/api/index'; + +/** + * 字典数据 + */ +export interface DictData { + // 字典数据id + dictDataId?: number; + // 字典id + dictId?: number; + // 字典名称 + dictName?: string; + // 字典数据标识 + dictDataCode?: string; + // 字典数据名称 + dictDataName?: string; + // 字典标识 + dictCode?: string; + // 排序号 + sortNumber?: any; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + tenantId?: number; + label?: string; + value?: string; + text?: string; +} + +/** + * 字典数据搜索条件 + */ +export interface DictDataParam extends PageParam { + // 关键字 + keywords?: string; + // 字典标识 + dictCode?: string; + // 字典id + dictId?: number; + // + value?: number; + // + label?: string; + dictDataId?: number; +} diff --git a/src/api/system/dict/index.ts b/src/api/system/dict/index.ts new file mode 100644 index 0000000..0076c39 --- /dev/null +++ b/src/api/system/dict/index.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { Dict, DictParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 查询字典列表 + */ +export async function listDictionaries(params?: DictParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加字典 + */ +export async function addDict(data: Dict) { + const res = await request.post>( + SERVER_API_URL + '/system/dict', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改字典 + */ +export async function updateDict(data: Dict) { + const res = await request.put>( + SERVER_API_URL + '/system/dict', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除字典 + */ +export async function removeDict(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/dict/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/dict/model/index.ts b/src/api/system/dict/model/index.ts new file mode 100644 index 0000000..575cb35 --- /dev/null +++ b/src/api/system/dict/model/index.ts @@ -0,0 +1,29 @@ +/** + * 字典 + */ +export interface Dict { + // 字典id + dictId?: number; + // 字典标识 + dictCode?: string; + // 字典名称 + dictName?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + type?: number; + tenantId?: number; +} + +/** + * 字典搜索条件 + */ +export interface DictParam { + dictCode?: string; + dictName?: string; + type?: number; + tenantId?: number; +} diff --git a/src/api/system/dictionary-data/index.ts b/src/api/system/dictionary-data/index.ts new file mode 100644 index 0000000..a72b89f --- /dev/null +++ b/src/api/system/dictionary-data/index.ts @@ -0,0 +1,87 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DictionaryData, DictionaryDataParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询字典数据 + */ +export async function pageDictionaryData(params: DictionaryDataParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/dict-data/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询字典数据列表 + */ +export async function listDictionaryData(params: DictionaryDataParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict-data', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加字典数据 + */ +export async function addDictionaryData(data: DictionaryData) { + const res = await request.post>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改字典数据 + */ +export async function updateDictionaryData(data: DictionaryData) { + const res = await request.put>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除字典数据 + */ +export async function removeDictionaryData(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/dict-data/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除字典数据 + */ +export async function removeDictionaryDataBatch(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/dict-data/batch', + { data } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/dictionary-data/model/index.ts b/src/api/system/dictionary-data/model/index.ts new file mode 100644 index 0000000..e1301bd --- /dev/null +++ b/src/api/system/dictionary-data/model/index.ts @@ -0,0 +1,33 @@ +import { PageParam } from '@/api'; + +/** + * 字典数据 + */ +export interface DictionaryData { + // 字典数据id + dictDataId?: number; + // 字典id + dictId?: number; + // 字典数据标识 + dictDataCode?: string; + // 字典数据名称 + dictDataName?: string; + // 排序号 + sortNumber?: string; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; +} + +/** + * 字典数据搜索条件 + */ +export interface DictionaryDataParam extends PageParam { + // 关键字 + keywords?: string; + // 字典标识 + dictCode?: string; + // 字典id + dictId?: number; +} diff --git a/src/api/system/dictionary/index.ts b/src/api/system/dictionary/index.ts new file mode 100644 index 0000000..6fb9aa4 --- /dev/null +++ b/src/api/system/dictionary/index.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { Dictionary, DictionaryParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 查询字典列表 + */ +export async function listDictionaries(params?: DictionaryParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dictionary', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加字典 + */ +export async function addDictionary(data: Dictionary) { + const res = await request.post>( + SERVER_API_URL + '/system/dictionary', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改字典 + */ +export async function updateDictionary(data: Dictionary) { + const res = await request.put>( + SERVER_API_URL + '/system/dictionary', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除字典 + */ +export async function removeDictionary(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/dictionary/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/dictionary/model/index.ts b/src/api/system/dictionary/model/index.ts new file mode 100644 index 0000000..d72e7c2 --- /dev/null +++ b/src/api/system/dictionary/model/index.ts @@ -0,0 +1,29 @@ +/** + * 字典 + */ +export interface Dictionary { + // 字典id + dictId?: number; + // 字典标识 + dictCode?: string; + // 字典名称 + dictName?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + type?: number; + tenantId?: number; +} + +/** + * 字典搜索条件 + */ +export interface DictionaryParam { + dictCode?: string; + dictName?: string; + type?: number; + tenantId?: number; +} diff --git a/src/api/system/environment/index.ts b/src/api/system/environment/index.ts new file mode 100644 index 0000000..e7a2919 --- /dev/null +++ b/src/api/system/environment/index.ts @@ -0,0 +1,125 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Environment, EnvironmentParam } from './model/index'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询应用 + */ +export async function pageEnvironment(params?: EnvironmentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/environment/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用列表 + */ +export async function listEnvironment(params?: EnvironmentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/environment', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用 + */ +export async function getEnvironment(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用 + */ +export async function updateEnvironment(data: Environment) { + const res = await request.put>( + SERVER_API_URL + '/system/environment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 排行榜 +export async function ranking(params?: EnvironmentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/ranking', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 搜索历史 +export async function searchHistory(params?: string) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/search-history', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 制作插件 + */ +export async function createEnvironment(data: Environment) { + const res = await request.post>( + SERVER_API_URL + '/system/environment/environment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/environment/model/index.ts b/src/api/system/environment/model/index.ts new file mode 100644 index 0000000..daa916b --- /dev/null +++ b/src/api/system/environment/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Environment { + id?: number; + environmentName?: string; + environmentCode?: string; + brand?: string; + serverIp?: string; + modulesUrl?: string; + modulesApi?: string; + sortNumber?: number; + comments?: string; + status?: number; +} + +/** + * 插件搜索条件 + */ +export interface EnvironmentParam extends PageParam { + id: number; + environmentName: string; +} diff --git a/src/api/system/file/index.ts b/src/api/system/file/index.ts new file mode 100644 index 0000000..b392097 --- /dev/null +++ b/src/api/system/file/index.ts @@ -0,0 +1,99 @@ +import request from '@/utils/request'; +import Taro from '@tarojs/taro' +import dayjs from 'dayjs'; +import crypto from 'crypto-js'; +import {Base64} from 'js-base64'; +import {FileRecord} from "@/api/system/file/model"; +import {TenantId} from "@/config/app"; + +export async function uploadOssByPath(filePath: string) { + return new Promise(async (resolve) => { + const date = new Date(); + date.setMinutes(date.getMinutes() + 1); + const policyText = { + expiration: date.toISOString(), // 设置policy过期时间。 + conditions: [ + // 限制上传大小。 + ["content-length-range", 0, 1024 * 1024 * 1024], + ], + }; + let sts = Taro.getStorageSync('sts'); + const stsExpired = Taro.getStorageSync('stsExpiredAt'); + if (!sts || (stsExpired && dayjs().isBefore(dayjs(stsExpired)))) { + // @ts-ignore + const {data: {data: {credentials}}} = await request.get(`https://shop-api.websoft.top/api/oss/getSTSToken`) + Taro.setStorageSync('sts', credentials) + Taro.setStorageSync('stsExpiredAt', credentials.expiration) + sts = credentials + } + + const [filename, ext] = filePath.split('.') + const key = `headers/${filename + (Math.random() * 100000)}.${ext}` + const policy = Base64.encode(JSON.stringify(policyText)) + const signature = computeSignature(sts.accessKeySecret, policy) + Taro.uploadFile({ + url: 'https://oss.wsdns.cn', + name: 'file', + filePath, + formData: { + key, + policy, + OSSAccessKeyId: sts.accessKeyId, + signature, + 'x-oss-security-token': sts.securityToken + }, + success: () => { + resolve(`https://oss.wsdns.cn/${key}`) + } + }) + }) +} + +const computeSignature = (accessKeySecret: string, canonicalString: string): string => { + return crypto.enc.Base64.stringify(crypto.HmacSHA1(canonicalString, accessKeySecret)); +} + +/** + * 上传阿里云OSS + */ +export async function uploadFile() { + return new Promise(async (resolve: (result: FileRecord) => void, reject) => { + Taro.chooseImage({ + count: 1, + sizeType: ['compressed'], + sourceType: ['album', 'camera'], + success: async (res) => { + const tempFilePath = res.tempFilePaths[0]; + // 上传图片到OSS + Taro.uploadFile({ + url: 'https://shop-api.websoft.top/api/oss/upload', + filePath: tempFilePath, + name: 'file', + header: { + 'content-type': 'application/json', + TenantId + }, + success: (res) => { + try { + const data = JSON.parse(res.data); + if (data.code === 0) { + resolve(data.data) + } else { + reject(new Error(data.message || '上传失败')) + } + } catch (error) { + reject(new Error('解析响应数据失败')) + } + }, + fail: (err) => { + reject(new Error('上传请求失败')) + } + }) + }, + fail: (err) => { + reject(new Error('选择图片失败')) + } + }); + }) + +} diff --git a/src/api/system/file/model/index.ts b/src/api/system/file/model/index.ts new file mode 100644 index 0000000..95d276d --- /dev/null +++ b/src/api/system/file/model/index.ts @@ -0,0 +1,54 @@ +import { PageParam } from '@/api/index'; + +/** + * 文件上传记录 + */ +export interface FileRecord { + // id + id: number; + // 文件名称 + name?: string; + // 文件存储路径 + path?: string; + // 文件大小 + length?: number; + // 文件类型 + contentType?: string; + // 上传人id + createUserId?: number; + // 分组ID + groupId?: number; + groupName?: string; + // 上传时间 + createTime?: string; + // 描述 + comments?: string; + // 文件访问地址 + url?: string; + // 文件缩略图访问地址 + thumbnail?: string; + // 文件下载地址 + downloadUrl?: string; + // 上传人账号 + createUsername?: string; + // 上传人名称 + createNickname?: string; + // 是否编辑状态 + isUpdate?: boolean; + // 商品SKU索引 + index?: any; +} + +/** + * 文件上传记录查询参数 + */ +export interface FileRecordParam extends PageParam { + name?: string; + path?: string; + contentType?: string; + createNickname?: string; + groupId?: number; + groupName?: string; + count?: number; + page?: number; +} diff --git a/src/api/system/login-record/index.ts b/src/api/system/login-record/index.ts new file mode 100644 index 0000000..613363d --- /dev/null +++ b/src/api/system/login-record/index.ts @@ -0,0 +1,32 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { LoginRecord, LoginRecordParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询登录日志 + */ +export async function pageLoginRecords(params: LoginRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/login-record/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询登录日志列表 + */ +export async function listLoginRecords(params?: LoginRecordParam) { + const res = await request.get>( + SERVER_API_URL + '/system/login-record', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/login-record/model/index.ts b/src/api/system/login-record/model/index.ts new file mode 100644 index 0000000..0836eb5 --- /dev/null +++ b/src/api/system/login-record/model/index.ts @@ -0,0 +1,38 @@ +import { PageParam } from '@/api'; + +/** + * 登录日志 + */ +export interface LoginRecord { + // 登录日志id + id: number; + // 用户账号 + username: string; + // 操作系统 + os: string; + // 设备名称 + device: string; + // 浏览器类型 + browser: string; + // ip地址 + ip: string; + // 操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token + loginType: number; + // 备注 + comments: string; + // 操作时间 + createTime: string; + // 用户昵称 + nickname: string; +} + +/** + * 登录日志搜索条件 + */ +export interface LoginRecordParam extends PageParam { + username?: string; + nickname?: string; + createTimeStart?: string; + createTimeEnd?: string; + loginType?: number; +} diff --git a/src/api/system/menu/index.ts b/src/api/system/menu/index.ts new file mode 100644 index 0000000..2e1e8bc --- /dev/null +++ b/src/api/system/menu/index.ts @@ -0,0 +1,98 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { Menu, MenuParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 查询菜单列表 + */ +export async function listMenus(params: MenuParam) { + const res = await request.get>( + SERVER_API_URL + '/system/menu', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加菜单 + */ +export async function addMenu(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改菜单 + */ +export async function updateMenu(data: Menu) { + const res = await request.put>( + SERVER_API_URL + '/system/menu', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除菜单 + */ +export async function removeMenu(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/menu/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 菜单克隆 +export async function clone(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/clone', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 制作插件 + */ +export async function createPlug(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/plug', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 安装插件 +export async function installPlug(id?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/menu/install/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/menu/model/index.ts b/src/api/system/menu/model/index.ts new file mode 100644 index 0000000..4b52e95 --- /dev/null +++ b/src/api/system/menu/model/index.ts @@ -0,0 +1,67 @@ +/** + * 菜单 + */ +export interface Menu { + // 菜单id + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title: string; + // 菜单路由地址 + path: string; + // 菜单组件地址 + component: string; + // 模块API + modulesUrl?: string; + // 模块ID + modules?: string; + // 菜单类型, 0菜单, 1按钮 + menuType?: number; + // 排序号 + sortNumber?: number; + // 权限标识 + authority?: string; + // 菜单图标 + icon?: string; + // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) + hide?: number; + // 路由元信息 + meta?: string; + // 创建时间 + createTime?: string; + // 子菜单 + children?: Menu[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; + disabled?: boolean; + // + appId?: number; + // + tenantId?: number; + tenantName?: string; + companyId?: number; + // 插件Api + plugUrl?: string; + label?: string; +} + +/** + * 菜单搜索参数 + */ +export interface MenuParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; + menuType?: number; + hide?: number; +} diff --git a/src/api/system/modules/index.ts b/src/api/system/modules/index.ts new file mode 100644 index 0000000..f121b92 --- /dev/null +++ b/src/api/system/modules/index.ts @@ -0,0 +1,118 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Modules, ModulesParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询角色module + */ +export async function pageModules(params) { + const res = await request.get>>( + SERVER_API_URL + '/system/modules/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询角色列表 + */ +export async function listModules(params?: ModulesParam) { + const res = await request.get>( + SERVER_API_URL + '/system/modules', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加角色 + */ +export async function addModules(data: Modules) { + const res = await request.post>( + SERVER_API_URL + '/system/modules', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改角色 + */ +export async function updateModules(data: Modules) { + const res = await request.put>( + SERVER_API_URL + '/system/modules', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除角色 + */ +export async function removeModules(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/modules/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除角色 + */ +export async function removeModulesBath(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/modules/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listModulesMenus(modulesId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/modules-menu/' + modulesId + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateModulesMenus(modulesId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/modules-menu/' + modulesId, + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/modules/model/index.ts b/src/api/system/modules/model/index.ts new file mode 100644 index 0000000..a1cda9b --- /dev/null +++ b/src/api/system/modules/model/index.ts @@ -0,0 +1,22 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Modules { + id?: number; + modules?: string; + modulesUrl?: string; + sortNumber?: number; + comments?: string; + status?: number; +} + +/** + * 插件搜索条件 + */ +export interface ModulesParam extends PageParam { + id: number; + modules: string; + modulesUrl?: string; +} diff --git a/src/api/system/operation-record/index.ts b/src/api/system/operation-record/index.ts new file mode 100644 index 0000000..3a7ce76 --- /dev/null +++ b/src/api/system/operation-record/index.ts @@ -0,0 +1,32 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OperationRecord, OperationRecordParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询操作日志 + */ +export async function pageOperationRecords(params: OperationRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/operation-record/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询操作日志列表 + */ +export async function listOperationRecords(params?: OperationRecordParam) { + const res = await request.get>( + SERVER_API_URL + '/system/operation-record', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/operation-record/model/index.ts b/src/api/system/operation-record/model/index.ts new file mode 100644 index 0000000..fc1425e --- /dev/null +++ b/src/api/system/operation-record/model/index.ts @@ -0,0 +1,56 @@ +import { PageParam } from '@/api'; + +/** + * 操作日志 + */ +export interface OperationRecord { + // 操作日志id + id?: number; + // 用户id + userId?: number; + // 操作模块 + module: string; + // 操作功能 + description: string; + // 请求地址 + url: string; + // 请求方式 + requestMethod: string; + // 调用方法 + method: string; + // 请求参数 + params: string; + // 返回结果 + result: string; + // 异常信息 + error: string; + // 消耗时间, 单位毫秒 + spendTime: number; + // 操作系统 + os: string; + // 设备名称 + device: string; + // 浏览器类型 + browser: string; + // ip地址 + ip: string; + // 状态, 0成功, 1异常 + status: number; + // 操作时间 + createTime: string; + // 用户昵称 + nickname: string; + // 用户账号 + username: string; +} + +/** + * 操作日志搜索条件 + */ +export interface OperationRecordParam extends PageParam { + username?: string; + module?: string; + createTimeStart?: string; + createTimeEnd?: string; + status?: number; +} diff --git a/src/api/system/order/index.ts b/src/api/system/order/index.ts new file mode 100644 index 0000000..c0237d6 --- /dev/null +++ b/src/api/system/order/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Order, OrderParam } from './model'; + +/** + * 分页查询订单 + */ +export async function pageOrder(params: OrderParam) { + const res = await request.get>>( + '/system/order/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询订单列表 + */ +export async function listOrder(params?: OrderParam) { + const res = await request.get>( + '/system/order', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加订单 + */ +export async function addOrder(data: Order) { + const res = await request.post>( + '/system/order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改订单 + */ +export async function updateOrder(data: Order) { + const res = await request.put>( + '/system/order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除订单 + */ +export async function removeOrder(id?: number) { + const res = await request.del>( + '/system/order/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchOrder(data: (number | undefined)[]) { + const res = await request.del>( + '/system/order/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询订单 + */ +export async function getOrder(id: number) { + const res = await request.get>( + '/system/order/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/order/model/index.ts b/src/api/system/order/model/index.ts new file mode 100644 index 0000000..d403932 --- /dev/null +++ b/src/api/system/order/model/index.ts @@ -0,0 +1,93 @@ +import type { PageParam } from '@/api/index'; + +/** + * 订单 + */ +export interface Order { + // 订单号 + orderId?: number; + // 订单编号 + orderNo?: string; + // 订单类型,0产品 1插件 + type?: number; + // 下单渠道,0网站 1小程序 2其他 + channel?: number; + // 微信支付订单号 + transactionId?: string; + // 微信退款订单号 + refundOrder?: string; + // 使用的优惠券id + couponId?: number; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 订单总额 + totalPrice?: string; + // 减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格 + reducePrice?: string; + // 实际付款 + payPrice?: string; + // 用于统计 + price?: string; + // 价钱,用于积分赠送 + money?: string; + // 退款金额 + refundMoney?: string; + // 购买数量 + totalNum?: number; + // 0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机 + payType?: number; + // 0未付款,1已付款 + payStatus?: string; + // 0未完成,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡 + couponType?: number; + // 优惠说明 + couponDesc?: string; + // 二维码地址,保存订单号,支付成功后才生成 + qrcode?: string; + // 预约详情开始时间数组 + startTime?: string; + // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 + isInvoice?: string; + // 发票流水号 + invoiceNo?: string; + // 支付时间 + payTime?: string; + // 退款时间 + refundTime?: string; + // 申请退款时间 + refundApplyTime?: string; + // 过期时间 + expirationTime?: string; + // 对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单 + checkBill?: number; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 系统版本号 0当前版本 value=其他版本 + version?: number; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 修改时间 + updateTime?: string; + // 创建时间 + createTime?: string; +} + +/** + * 订单搜索条件 + */ +export interface OrderParam extends PageParam { + orderId?: number; + keywords?: string; +} diff --git a/src/api/system/orderGoods/index.ts b/src/api/system/orderGoods/index.ts new file mode 100644 index 0000000..e486800 --- /dev/null +++ b/src/api/system/orderGoods/index.ts @@ -0,0 +1,115 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OrderGoods, OrderGoodsParam } from './model'; + +/** + * 分页查询订单商品 + */ +export async function pageOrderGoods(params: OrderGoodsParam) { + const res = await request.get>>( + '/shop/shop-goods/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询订单商品列表 + */ +export async function listOrderGoods(params?: OrderGoodsParam) { + const res = await request.get>( + '/shop/shop-goods', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加订单商品 + */ +export async function addOrderGoods(data: OrderGoods) { + const res = await request.post>( + '/shop/shop-goods', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改订单商品 + */ +export async function updateOrderGoods(data: OrderGoods) { + const res = await request.put>( + '/shop/shop-goods', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除订单商品 + */ +export async function removeOrderGoods(id?: number) { + const res = await request.del>( + '/shop/shop-goods/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除订单商品 + */ +export async function removeBatchOrderGoods(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-goods/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询订单商品 + */ +export async function getOrderGoods(id: number) { + const res = await request.get>( + '/shop/shop-goods/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量添加订单商品 + */ +export async function addBatchOrderGoods(data: OrderGoods[]) { + const res = await request.post>( + '/shop/shop-goods/batch', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/orderGoods/model/index.ts b/src/api/system/orderGoods/model/index.ts new file mode 100644 index 0000000..948d932 --- /dev/null +++ b/src/api/system/orderGoods/model/index.ts @@ -0,0 +1,58 @@ +import type { PageParam } from '@/api/index'; + +/** + * 订单商品 + */ +export interface OrderGoods { + // 订单号 + id?: number; + // 订单类型,0商城 1应用插件 + type?: number; + // 订单ID + orderId?: number; + // 项目ID + itemId?: number; + // 商品ID + goodsId?: number; + // 实际付款 + payPrice?: string; + // 购买数量 + totalNum?: number; + // 0未付款,1已付款 + payStatus?: string; + // 0未完成,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 预约详情开始时间数组 + startTime?: string; + // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 + isInvoice?: string; + // 发票流水号 + invoiceNo?: string; + // 支付时间 + payTime?: string; + // 过期时间 + expirationTime?: string; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 修改时间 + updateTime?: string; + // 创建时间 + createTime?: string; +} + +/** + * 订单商品搜索条件 + */ +export interface OrderGoodsParam extends PageParam { + id?: number; + orderId?: number; // 添加 orderId 属性 + keywords?: string; +} diff --git a/src/api/system/organization/index.ts b/src/api/system/organization/index.ts new file mode 100644 index 0000000..4a1f4af --- /dev/null +++ b/src/api/system/organization/index.ts @@ -0,0 +1,86 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Organization, OrganizationParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询机构 + */ +export async function pageOrganizations(params: OrganizationParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/organization/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询机构列表 + */ +export async function listOrganizations(params?: OrganizationParam) { + const res = await request.get>( + SERVER_API_URL + '/system/organization', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加机构 + */ +export async function addOrganization(data: Organization) { + const res = await request.post>( + SERVER_API_URL + '/system/organization', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改机构 + */ +export async function updateOrganization(data: Organization) { + const res = await request.put>( + SERVER_API_URL + '/system/organization', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除机构 + */ +export async function removeOrganization(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/organization/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询机构 + */ +export async function getOrganization(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/organization/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/organization/model/index.ts b/src/api/system/organization/model/index.ts new file mode 100644 index 0000000..1f9deaa --- /dev/null +++ b/src/api/system/organization/model/index.ts @@ -0,0 +1,42 @@ +import { PageParam } from '@/api'; + +/** + * 机构 + */ +export interface Organization { + // 机构id + organizationId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 机构名称 + organizationName?: string; + // 机构全称 + organizationFullName?: string; + // 机构代码 + organizationCode?: string; + // 机构类型(字典) + organizationType?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 机构类型名称 + organizationTypeName?: string; + // + key?: number; + // + value?: number; + // + title?: string; + children?: Organization[]; +} + +/** + * 机构搜索条件 + */ +export interface OrganizationParam extends PageParam { + organizationName?: string; + parentId?: number; +} diff --git a/src/api/system/parameter/index.ts b/src/api/system/parameter/index.ts new file mode 100644 index 0000000..52e206e --- /dev/null +++ b/src/api/system/parameter/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Parameter, ParameterParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询应用参数 + */ +export async function pageParameter(params: ParameterParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/parameter/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listParameter(params?: ParameterParam) { + const res = await request.get>( + SERVER_API_URL + '/system/parameter', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加应用参数 + */ +export async function addParameter(data: Parameter) { + const res = await request.post>( + SERVER_API_URL + '/system/parameter', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用参数 + */ +export async function updateParameter(data: Parameter) { + const res = await request.put>( + SERVER_API_URL + '/system/parameter', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除应用参数 + */ +export async function removeParameter(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/parameter/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchParameter(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/parameter/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getParameter(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/parameter/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/parameter/model/index.ts b/src/api/system/parameter/model/index.ts new file mode 100644 index 0000000..ae3d159 --- /dev/null +++ b/src/api/system/parameter/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 应用参数 + */ +export interface Parameter { + // 自增ID + id?: number; + // 参数名称 + name?: string; + // 参数内容 + value?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用参数搜索条件 + */ +export interface ParameterParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/payment/index.ts b/src/api/system/payment/index.ts new file mode 100644 index 0000000..98fd2d4 --- /dev/null +++ b/src/api/system/payment/index.ts @@ -0,0 +1,144 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api/index'; +import type {Payment, PaymentParam} from './model'; +import type {ShopOrder} from '@/api/shop/shopOrder/model'; + +/** + * 分页查询支付方式 + */ +export async function pagePayment(params: PaymentParam) { + const res = await request.get>>( + '/system/payment/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询支付方式列表 + */ +export async function listPayment(params?: PaymentParam) { + const res = await request.get>( + '/system/payment', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加支付方式 + */ +export async function addPayment(data: Payment) { + const res = await request.post>( + '/system/payment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改支付方式 + */ +export async function updatePayment(data: Payment) { + const res = await request.put>( + '/system/payment', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除支付方式 + */ +export async function removePayment(id?: number) { + const res = await request.del>( + '/system/payment/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除支付方式 + */ +export async function removeBatchPayment(data: (number | undefined)[]) { + const res = await request.del>( + '/system/payment/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询支付方式 + */ +export async function getPayment(id: number) { + const res = await request.get>( + '/system/payment/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 生成支付二维码(微信native) + */ +export async function getNativeCode(data: ShopOrder) { + const res = await request.post>( + '/system/wx-native-pay/codeUrl', + data + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 使用余额支付 + */ +export async function payByBalance(data: ShopOrder) { + const res = await request.post>( + '/system/payment/balancePay', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 选择支付方式 + */ +export async function selectPayment(params?: PaymentParam) { + const res = await request.get>( + '/system/payment/select', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/payment/model/index.ts b/src/api/system/payment/model/index.ts new file mode 100644 index 0000000..6a4ecfe --- /dev/null +++ b/src/api/system/payment/model/index.ts @@ -0,0 +1,55 @@ +import type { PageParam } from '@/api/index'; + +/** + * 支付方式 + */ +export interface Payment { + // ID + id?: number; + // 支付方式 + name?: string; + // 支付类型 + type?: number; + // 标识 + code?: string; + // 支付图标 + image?: string; + // 微信商户号类型 1普通商户2子商户 + wechatType?: number; + // 应用ID + appId?: string; + // 商户号 + mchId?: string; + // 设置APIv3密钥 + apiKey?: string; + // 证书文件 (CERT) + apiclientCert?: string; + // 证书文件 (KEY) + apiclientKey?: string; + // 商户证书序列号 + merchantSerialNumber?: string; + // 支付结果通过 + notifyUrl?: string; + // 备注 + comments?: string; + // 文章排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0启用, 1禁用 + status?: boolean; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 支付方式搜索条件 + */ +export interface PaymentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/plug/index.ts b/src/api/system/plug/index.ts new file mode 100644 index 0000000..997736d --- /dev/null +++ b/src/api/system/plug/index.ts @@ -0,0 +1,125 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Plug, PlugParam } from './model/index'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询应用 + */ +export async function pagePlug(params: PlugParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/plug/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用列表 + */ +export async function listPlug(params?: PlugParam) { + const res = await request.get>( + SERVER_API_URL + '/system/plug', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用 + */ +export async function getPlug(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用 + */ +export async function updatePlug(data: Plug) { + const res = await request.put>( + SERVER_API_URL + '/system/plug', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 排行榜 +export async function ranking(params?: PlugParam) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/ranking', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +// 搜索历史 +export async function searchHistory(params?: string) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/search-history', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 制作插件 + */ +export async function createPlug(data: Plug) { + const res = await request.post>( + SERVER_API_URL + '/system/plug/plug', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/plug/model/index.ts b/src/api/system/plug/model/index.ts new file mode 100644 index 0000000..e67242f --- /dev/null +++ b/src/api/system/plug/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Plug { + plugId?: number; + plugName?: string; + plugCode?: string; + // 菜单id + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址 + component?: string; + // 菜单类型, 0菜单, 1按钮 + menuType?: number; + // 排序号 + sortNumber?: number; + // 权限标识 + authority?: string; + // 菜单图标 + icon?: string; + // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) + hide?: number; + // 路由元信息 + meta?: string; + score?: number; + price?: number; + // 创建时间 + createTime?: string; + // 子菜单 + children?: Plug[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + shortName?: string; + comments?: string; + content?: string; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; + // + userId?: number; + // + appId?: number; + status?: number; + tenantId?: number; +} + +/** + * 插件搜索条件 + */ +export interface PlugParam extends PageParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; +} diff --git a/src/api/system/role/index.ts b/src/api/system/role/index.ts new file mode 100644 index 0000000..9cadf52 --- /dev/null +++ b/src/api/system/role/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Role, RoleParam } from './model'; +import type { Menu } from '../menu/model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询角色 + */ +export async function pageRoles(params: RoleParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/role/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询角色列表 + */ +export async function listRoles(params?: RoleParam) { + const res = await request.get>( + SERVER_API_URL + '/system/role', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加角色 + */ +export async function addRole(data: Role) { + const res = await request.post>( + SERVER_API_URL + '/system/role', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改角色 + */ +export async function updateRole(data: Role) { + const res = await request.put>( + SERVER_API_URL + '/system/role', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除角色 + */ +export async function removeRole(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/role/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除角色 + */ +export async function removeRoles(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/role/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listRoleMenus(roleId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/role-menu/' + roleId + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateRoleMenus(roleId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/role-menu/' + roleId, + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/role/model/index.ts b/src/api/system/role/model/index.ts new file mode 100644 index 0000000..d4c9a50 --- /dev/null +++ b/src/api/system/role/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 角色 + */ +export interface Role { + // 角色id + roleId?: number; + // 角色标识 + roleCode?: string; + // 角色名称 + roleName?: string; + sortNumber?: any; + // 备注 + comments?: any; + // 创建时间 + createTime?: string; +} + +/** + * 角色搜索条件 + */ +export interface RoleParam extends PageParam { + roleName?: string; + roleCode?: string; + comments?: string; +} diff --git a/src/api/system/setting/index.ts b/src/api/system/setting/index.ts new file mode 100644 index 0000000..3719833 --- /dev/null +++ b/src/api/system/setting/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Setting, SettingParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询设置 + */ +export async function pageSetting(params: SettingParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/setting/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询设置列表 + */ +export async function listSetting(params?: SettingParam) { + const res = await request.get>( + SERVER_API_URL + '/system/setting', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询 + */ +export async function getSetting(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/setting/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加设置 + */ +export async function addSetting(data: Setting) { + const res = await request.post>( + SERVER_API_URL + '/system/setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改设置 + */ +export async function updateSetting(data: Setting) { + const res = await request.put>( + SERVER_API_URL + '/system/setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除设置 + */ +export async function removeSetting(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/setting/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除设置 + */ +export async function removeBatchSetting(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/setting/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/setting/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/setting/model/index.ts b/src/api/system/setting/model/index.ts new file mode 100644 index 0000000..879a9e9 --- /dev/null +++ b/src/api/system/setting/model/index.ts @@ -0,0 +1,127 @@ +import type { PageParam } from '@/api/index'; + +/** + * 系统设置 + */ +export interface Setting { + // 公共字段 + settingId?: number; + settingKey?: string; + content?: string; + comments?: string; + tenantName?: string; + tenantId?: string | null; + + // 设置信息 + siteName?: string; + fullName?: string; + tenantCode?: string; + domain?: string; + remarks?: string; + icp?: string; + copyright?: string; + keyword?: string; + phone?: string; + company?: string; + address?: string; + email?: string; + support?: string; + logo?: string; + + // 注册设置 + roleId?: number; + openWxAuth?: number; + openWxBindPhone?: number; + openWxofficialAuth?: number; + openWxofficialBindPhone?: number; + tokenExpireTime?: number; + + // 短信设置 + type?: number; + accessKeyId?: string; + accessKeySecret?: string; + sign?: string; + isNoticeUser?: string; + userTemplateId?: string; + merchantTemplateId?: string; + isNoticeMerchant?: string; + merchantMobiles?: string; + + // 支付设置 + payMethod?: string; + signMode?: string; + alipayAppId?: string; + signType?: string; + appCertPublicKey?: string; + alipayCertPublicKey?: string; + alipayRootCert?: string; + alipayPublicKey?: string; + privateKey?: string; + decryptKey?: string; + balanceIsEnable?: boolean; + wechatIsEnable?: boolean; + alipayIsEnable?: boolean; + wechatType?: string; + mchId?: number; + wechatAppId?: string; + wechatApiKey?: string; + apiclientCert?: string; + apiclientKey?: string; + spAppId?: string; + spMchId?: string; + spApiKey?: string; + spSubAppId?: string; + spSubMchId?: string; + spApiclientCert?: string; + spApiclientKey?: string; + merchantSerialNumber?: string; + + // 微信公众号/小程序设置 + appId?: string; + appSecret?: string; + wxOfficialAccount?: string; + originalId?: string; + + // 企业微信参数 + suiteId?: string; + secret?: string; + corpId?: string; + token?: string; + encodingAESKey?: string; + + // 打印设置 + isOpenPrinter?: string; + printerType?: string; + printerStatus?: string; + printerUser?: string; + printerUserKey?: string; + printerCode?: string; + printerKey?: string; + printerTimes?: string; + + // chatGPT + chatKey?: string; + + // 清除缓存 + clearCache?: string; + + // 主题 + theme?: string; + + // 云存储 + uploadMethod?: any; + fileUrl?: string; + bucketName?: string; + bucketEndpoint?: string; + bucketDomain?: string; + // accessKeyId?: string; 引用上面的 + // accessKeySecret?: string; 引用上面的 +} + +/** + * 系统设置搜索条件 + */ +export interface SettingParam extends PageParam { + settingId?: number; + settingKey?: string; +} diff --git a/src/api/system/tenant/index.ts b/src/api/system/tenant/index.ts new file mode 100644 index 0000000..1d54bf4 --- /dev/null +++ b/src/api/system/tenant/index.ts @@ -0,0 +1,178 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Tenant, TenantParam } from './model'; +import { Menu } from '@/api/system/menu/model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询租户 + */ +export async function pageTenant(params: TenantParam) { + // 租户列表查询需要传一个key + // params.tenantCode = 'ZAcxbdmDQFwUKC3e'; + const res = await request.get>>( + SERVER_API_URL + '/system/tenant/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询租户资料 + */ +export async function profile(params?: TenantParam) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/profile', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询租户列表 + */ +export async function listTenant(params?: TenantParam) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询 + */ +export async function getTenant(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加租户 + */ +export async function addTenant(data: Tenant) { + const res = await request.post>( + SERVER_API_URL + '/system/tenant', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改租户 + */ +export async function updateTenant(data: Tenant) { + const res = await request.put>( + SERVER_API_URL + '/system/tenant', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除租户 + */ +export async function removeTenant(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/tenant/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除租户 + */ +export async function removeBatchTenant(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/tenant/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 重置用户密码 + */ +export async function updateTenantPassword( + tenantId?: number, + password?: string +) { + const res = await request.put>( + SERVER_API_URL + '/system/tenant/password', + { + tenantId, + password + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 租户初始化 + */ +export async function initialization(roleId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/role-menu/' + roleId + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/tenant/model/index.ts b/src/api/system/tenant/model/index.ts new file mode 100644 index 0000000..de007b2 --- /dev/null +++ b/src/api/system/tenant/model/index.ts @@ -0,0 +1,46 @@ +import type { PageParam } from '@/api'; +import { Company } from '@/api/system/company/model'; + +/** + * 租户 + */ +export interface Tenant { + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 应用ID + appId?: string; + // 应用秘钥 + appSecret?: string; + // logo + logo?: string; + // 企业名称 + companyName?: string; + // 关联客户ID + companyId?: string; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: number; + // + password?: string; + // 企业信息 + company?: Company | null; +} + +/** + * 租户搜索条件 + */ +export interface TenantParam extends PageParam { + tenantName?: string; + appId?: string; + companyId?: number; + companyName?: string; + version?: string; + province?: string; + city?: string; + tenantCode?: string; +} diff --git a/src/api/system/url/index.ts b/src/api/system/url/index.ts new file mode 100644 index 0000000..c1724ec --- /dev/null +++ b/src/api/system/url/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Url, UrlParam } from './model'; +import {SERVER_API_URL} from '@/utils/server'; + +/** + * 分页查询应用域名 + */ +export async function pageUrl(params: UrlParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/url/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询应用域名列表 + */ +export async function listUrl(params?: UrlParam) { + const res = await request.get>( + SERVER_API_URL + '/system/url', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加应用域名 + */ +export async function addUrl(data: Url) { + const res = await request.post>( + SERVER_API_URL + '/system/url', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改应用域名 + */ +export async function updateUrl(data: Url) { + const res = await request.put>( + SERVER_API_URL + '/system/url', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除应用域名 + */ +export async function removeUrl(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/url/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除应用域名 + */ +export async function removeBatchUrl(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/url/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询应用域名 + */ +export async function getUrl(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/url/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/url/model/index.ts b/src/api/system/url/model/index.ts new file mode 100644 index 0000000..1564067 --- /dev/null +++ b/src/api/system/url/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api/index'; + +/** + * 应用域名 + */ +export interface Url { + // 自增ID + id?: number; + // 域名类型 + type?: string; + // 域名 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 二维码 + qrcode?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用域名搜索条件 + */ +export interface UrlParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/user-collection/index.ts b/src/api/system/user-collection/index.ts new file mode 100644 index 0000000..1459927 --- /dev/null +++ b/src/api/system/user-collection/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserCollection, UserCollectionParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询我的收藏 + */ +export async function pageUserCollection(params: UserCollectionParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-collection/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询我的收藏列表 + */ +export async function listUserCollection(params?: UserCollectionParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-collection', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加我的收藏 + */ +export async function addUserCollection(data: UserCollection) { + const res = await request.post>( + SERVER_API_URL + '/system/user-collection', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改我的收藏 + */ +export async function updateUserCollection(data: UserCollection) { + const res = await request.put>( + SERVER_API_URL + '/system/user-collection', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除我的收藏 + */ +export async function removeUserCollection(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/user-collection/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除我的收藏 + */ +export async function removeBatchUserCollection(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/user-collection/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询我的收藏 + */ +export async function getUserCollection(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user-collection/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/user-collection/model/index.ts b/src/api/system/user-collection/model/index.ts new file mode 100644 index 0000000..ebd88c9 --- /dev/null +++ b/src/api/system/user-collection/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 我的收藏 + */ +export interface UserCollection { + // 主键ID + id?: number; + // 租户ID + tid?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; +} + +/** + * 我的收藏搜索条件 + */ +export interface UserCollectionParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/user-file/index.ts b/src/api/system/user-file/index.ts new file mode 100644 index 0000000..cff199a --- /dev/null +++ b/src/api/system/user-file/index.ts @@ -0,0 +1,89 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserFile, UserFileParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询用户文件 + */ +export async function pageUserFiles(params: UserFileParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-file/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询用户文件列表 + */ +export async function listUserFiles(params: UserFileParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-file', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加用户文件 + */ +export async function addUserFile(data: UserFile) { + const res = await request.post>( + SERVER_API_URL + '/system/user-file', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户文件 + */ +export async function updateUserFile(data: UserFile) { + const res = await request.put>( + SERVER_API_URL + '/system/user-file', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除用户文件 + */ +export async function removeUserFile(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/user-file/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除用户文件 + */ +export async function removeUserFiles(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/user-file/batch', + { data } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/user-file/model/index.ts b/src/api/system/user-file/model/index.ts new file mode 100644 index 0000000..ca51256 --- /dev/null +++ b/src/api/system/user-file/model/index.ts @@ -0,0 +1,39 @@ +import { PageParam } from '@/api'; + +/** + * 用户文件 + */ +export interface UserFile { + // id + id?: number; + // 用户id + userId?: number; + // 文件名称 + name?: string; + // 是否是文件夹, 0否, 1是 + isDirectory?: number; + // 上级id + parentId?: number; + // 文件存储路径 + path?: string; + // 文件大小 + length?: number; + // 文件类型 + contentType?: string; + // 上传时间 + createTime?: string; + // 文件访问地址 + url?: string; + // 文件缩略图访问地址 + thumbnail?: string; + // 文件下载地址 + downloadUrl?: string; +} + +/** + * 用户文件查询参数 + */ +export interface UserFileParam extends PageParam { + name?: string; + parentId?: number; +} diff --git a/src/api/system/user-group/index.ts b/src/api/system/user-group/index.ts new file mode 100644 index 0000000..004db57 --- /dev/null +++ b/src/api/system/user-group/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Group, GroupParam } from '@/api/system/user-group/model'; +import {SERVER_API_URL} from "@/utils/server"; +/** + * 分页查询仓库 + */ +export async function pageGroup(params: GroupParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-group/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询仓库列表 + */ +export async function listGroup(params?: GroupParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-group', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加仓库 + */ +export async function addGroup(data: Group) { + const res = await request.post>( + SERVER_API_URL + '/system/user-group', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改仓库 + */ +export async function updateGroup(data: Group) { + const res = await request.put>( + SERVER_API_URL + '/system/user-group', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 绑定仓库 + */ +export async function bindGroup(data: Group) { + const res = await request.put>( + SERVER_API_URL + '/system/user-group/bind', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量添加设备 + */ +export async function addBatchGroup(data: Group[]) { + const res = await request.post>( + SERVER_API_URL + '/system/user-group/batch', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除仓库 + */ +export async function removeGroup(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/user-group/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchGroup(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/user-group/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/user-group/model/index.ts b/src/api/system/user-group/model/index.ts new file mode 100644 index 0000000..dc858cb --- /dev/null +++ b/src/api/system/user-group/model/index.ts @@ -0,0 +1,23 @@ +import type { PageParam } from '@/api'; + +export interface Group { + groupId?: number; + name?: string; + status?: number; + comments?: any; + sortNumber?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 搜索条件 + */ +export interface GroupParam extends PageParam { + groupId?: number; + name?: string; + status?: number; + keywords?: string; +} diff --git a/src/api/system/user/balance-log/index.ts b/src/api/system/user/balance-log/index.ts new file mode 100644 index 0000000..e8c7a57 --- /dev/null +++ b/src/api/system/user/balance-log/index.ts @@ -0,0 +1,31 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { UserBalanceLog, UserBalanceLogParam } from './model' + +/** + * 分页查询用户余额日志 + */ +export async function pageUserBalanceLog(params?: UserBalanceLogParam): Promise> { + const res = await request.get>>( + '/shop/shop-user-balance-log/page', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 查询全部用户余额日志 + */ +export async function listUserBalanceLog(params?: UserBalanceLogParam): Promise { + const res = await request.get>( + '/shop/shop-user-balance-log', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/system/user/balance-log/model/index.ts b/src/api/system/user/balance-log/model/index.ts new file mode 100644 index 0000000..29ea8db --- /dev/null +++ b/src/api/system/user/balance-log/model/index.ts @@ -0,0 +1,23 @@ +/** + * 用户余额日志类型定义 + */ + +export interface UserBalanceLog { + logId: number + userId: number + scene: number + money: string + balance: string + orderNo: string + describe?: string + comments?: string + remark?: string + createTime: string +} + +export interface UserBalanceLogParam { + page?: number + limit?: number + userId?: number + scene?: number +} diff --git a/src/api/system/user/balance.ts b/src/api/system/user/balance.ts new file mode 100644 index 0000000..0d47240 --- /dev/null +++ b/src/api/system/user/balance.ts @@ -0,0 +1,23 @@ +import request from '@/utils/request' +import type { ApiResult } from '@/api' +import type { UserBalance } from './model' + +/** + * 获取当前用户余额信息(跨库读取 gxwebsoft_core.sys_user) + * 通过 paopao-api 本地 /auth/user-balance 接口,无需跨域请求 core 系统 + */ +export async function getUserBalance(): Promise { + const res = await request.get>( + '/auth/user-balance' + ) + if (res.code === 0 && res.data) { + const data = res.data + return { + balance: data.balance != null ? String(data.balance) : '0', + frozenBalance: '0', + totalIncome: '0', + totalExpense: '0', + } + } + return Promise.reject(new Error(res.message || '获取余额失败')) +} diff --git a/src/api/system/user/index.ts b/src/api/system/user/index.ts new file mode 100644 index 0000000..05a8e02 --- /dev/null +++ b/src/api/system/user/index.ts @@ -0,0 +1,261 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api'; +import type {User, UserParam} from './model'; +import type { UserBalance } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +// 导出用户余额相关 +export * from './balance'; +export * from './balance-log'; +export * from './points'; +export * from './withdraw'; + +// 用户余额类型 +export type { UserBalance }; + +/** + * 分页查询用户 + */ +export async function pageUsers(params: UserParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询用户列表 + */ +export async function listUsers(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询用户列表 + */ +export async function getStaffs(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询用户列表 + */ +export async function getCompanyList(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询用户 + */ +export async function getUser(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user/' + id, + {} + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加用户 + */ +export async function addUser(data: User) { + const res = await request.post>( + SERVER_API_URL + '/system/user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户 + */ +export async function updateUser(data: User) { + const res = await request.put>( + SERVER_API_URL + '/system/user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除用户 + */ +export async function removeUser(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/user/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除用户 + */ +export async function removeUsers(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/user/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户状态 + */ +export async function updateUserStatus(userId?: number, status?: number) { + const res = await request.put>( + SERVER_API_URL + '/system/user/status', + { + userId, + status + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改推荐状态 + */ +export async function updateUserRecommend(form:any) { + const res = await request.put>( + SERVER_API_URL + '/system/user/recommend', + form + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 重置用户密码 + */ +export async function updateUserPassword(userId?: number, password = '123456') { + const res = await request.put>( + SERVER_API_URL + '/system/user/password', + { + userId, + password + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 导入用户 + */ +export async function importUsers(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/system/user/import', + formData + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查用户是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/user/existence', + { + params: {field, value, id} + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 统计用户余额(使用 paopao-api) + */ +export async function countUserBalance(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user/countUserBalance', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + + +/** + * 选择管理员账号登录 + * @param params + */ +export async function listAdminsByPhoneAll(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user/listAdminsByPhoneAll', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/user/model/count.ts b/src/api/system/user/model/count.ts new file mode 100644 index 0000000..3b0ef49 --- /dev/null +++ b/src/api/system/user/model/count.ts @@ -0,0 +1,15 @@ +import type { PageParam } from '@/api/index'; + +/** + * 用户 + */ +export interface Count { + balance?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserParam extends PageParam { + organizationId?: number; +} diff --git a/src/api/system/user/model/index.ts b/src/api/system/user/model/index.ts new file mode 100644 index 0000000..378472b --- /dev/null +++ b/src/api/system/user/model/index.ts @@ -0,0 +1,35 @@ +/** + * 用户余额类型定义 + */ + +export interface UserBalance { + balance: string + frozenBalance: string + totalIncome: string + totalExpense: string +} + +/** + * 用户信息(来自 core 系统 sys_user 表) + */ +export interface User { + userId?: number + id?: number + username?: string + realName?: string + nickname?: string + avatar?: string + phone?: string + mobile?: string + email?: string + gender?: number + balance?: string | number + points?: number + memberLevelId?: number + memberLevelName?: string + status?: number + createTime?: string + updateTime?: string + /** 扩展字段,兼容后端返回的额外属性 */ + [key: string]: unknown +} diff --git a/src/api/system/user/points/index.ts b/src/api/system/user/points/index.ts new file mode 100644 index 0000000..468a671 --- /dev/null +++ b/src/api/system/user/points/index.ts @@ -0,0 +1,44 @@ +import request from '@/utils/request' +import type { ApiResult, PageResult } from '@/api' +import type { UserPointsLog } from './model' + +/** + * 用户积分统计数据 + */ +export interface UserPointsInfo { + points: number // 当前积分 + totalEarned: number // 累计获得 + totalUsed: number // 累计使用 + expiringSoon: number // 即将过期 +} + +/** + * 获取用户积分信息(包含汇总统计) + */ +export async function getUserPointsInfo(): Promise { + const res = await request.get>( + '/user/points' + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} + +/** + * 分页查询用户积分日志 + */ +export async function pageUserPointsLog(params?: { + page?: number + limit?: number + type?: number +}): Promise> { + const res = await request.get>>( + '/shop/shop-user-points-log/page', + params + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/system/user/points/model/index.ts b/src/api/system/user/points/model/index.ts new file mode 100644 index 0000000..8c2a809 --- /dev/null +++ b/src/api/system/user/points/model/index.ts @@ -0,0 +1,13 @@ +/** + * 用户积分类型定义 + */ + +export interface UserPointsLog { + logId: number + userId: number + points: number + type: number // 1-获得, 2-消费, 3-过期, 4-调整 + reason?: string + orderId?: number + createTime: string +} diff --git a/src/api/system/user/withdraw/index.ts b/src/api/system/user/withdraw/index.ts new file mode 100644 index 0000000..08d471c --- /dev/null +++ b/src/api/system/user/withdraw/index.ts @@ -0,0 +1,18 @@ +import request from '@/utils/request' +import type { ApiResult } from '@/api' +import type { UserWithdraw, WithdrawRequest } from './model' + +/** + * 创建用户提现申请 + * 注意:后端可能需要实现此接口 + */ +export async function createUserWithdraw(data: WithdrawRequest): Promise { + const res = await request.post>( + '/shop/shop-user-withdraw/create', + data + ) + if (res.code === 0 && res.data) { + return res.data + } + return Promise.reject(new Error(res.message)) +} diff --git a/src/api/system/user/withdraw/model/index.ts b/src/api/system/user/withdraw/model/index.ts new file mode 100644 index 0000000..29aa100 --- /dev/null +++ b/src/api/system/user/withdraw/model/index.ts @@ -0,0 +1,19 @@ +/** + * 用户提现类型定义 + */ + +export interface UserWithdraw { + id?: number + userId?: number + amount?: string + withdrawType?: number // 0-微信零钱, 1-银行卡, 2-支付宝 + accountInfo?: string + status?: number + createTime?: string +} + +export interface WithdrawRequest { + amount: string + withdrawType: number + accountInfo?: string +} diff --git a/src/api/system/userRole/index.ts b/src/api/system/userRole/index.ts new file mode 100644 index 0000000..ecaefcc --- /dev/null +++ b/src/api/system/userRole/index.ts @@ -0,0 +1,47 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api/index'; +import type { UserRole, UserRoleParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 查询用户角色 + */ +export async function listUserRole(params?: UserRoleParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-role', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户角色 + */ +export async function updateUserRole(data: UserRole) { + const res = await request.put>( + SERVER_API_URL + '/system/user-role', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 新增用户角色 + * 说明:部分后端实现为 POST 新增、PUT 修改;这里补齐 API 以便新用户无角色时可以创建默认角色。 + */ +export async function addUserRole(data: UserRole) { + const res = await request.post>( + SERVER_API_URL + '/system/user-role', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/userRole/model/index.ts b/src/api/system/userRole/model/index.ts new file mode 100644 index 0000000..835bbae --- /dev/null +++ b/src/api/system/userRole/model/index.ts @@ -0,0 +1,30 @@ +import type { PageParam } from '@/api/index'; + +/** + * 用户 + */ +export interface UserRole { + id?: number; + // 用户id + userId?: number; + // 角色ID + roleId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 角色名称 + roleName?: string; + // 角色标识 + roleCode?: string; + // 租户ID + tenantId?: number; +} + +/** + * 用户搜索条件 + */ +export interface UserRoleParam extends PageParam { + keywords?: any; + userId?: number; +} diff --git a/src/api/system/userVerify/index.ts b/src/api/system/userVerify/index.ts new file mode 100644 index 0000000..21416e7 --- /dev/null +++ b/src/api/system/userVerify/index.ts @@ -0,0 +1,130 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api/index'; +import type {UserVerify, UserVerifyParam} from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +export async function myUserVerify(params: UserVerifyParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-verify/myUserVerify', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 分页查询实名认证 + */ +export async function pageUserVerify(params: UserVerifyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-verify/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询实名认证列表 + */ +export async function listUserVerify(params?: UserVerifyParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-verify', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加实名认证 + */ +export async function addUserVerify(data: UserVerify) { + const res = await request.post>( + SERVER_API_URL + '/system/user-verify', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改实名认证 + */ +export async function updateUserVerify(data: UserVerify) { + const res = await request.put>( + SERVER_API_URL + '/system/user-verify', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除实名认证 + */ +export async function removeUserVerify(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/user-verify/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除实名认证 + */ +export async function removeBatchUserVerify(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/user-verify/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询实名认证 + */ +export async function getUserVerify(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user-verify/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 提交实名认证申请 + * @param data + */ +export async function submit(data: UserVerify) { + const res = await request.put>( + SERVER_API_URL + '/system/user-verify/submit', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/userVerify/model/index.ts b/src/api/system/userVerify/model/index.ts new file mode 100644 index 0000000..2d52441 --- /dev/null +++ b/src/api/system/userVerify/model/index.ts @@ -0,0 +1,58 @@ +import type { PageParam } from '@/api/index'; + +/** + * 实名认证 + */ +export interface UserVerify { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 认证类型, 0个人, 1企业 + type?: any; + // 主体名称 + name?: string; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 头像 + avatar?: string; + // 证件号码 + idCard?: string; + // 出生日期 + birthday?: string; + // 正面 + sfz1?: string; + // 反面 + sfz2?: string; + // 企业名称 + company?: string; + // 营业执照号码 + zzCode?: string; + // 营业执照 + zzImg?: string; + // 备注 + comments?: string; + // 状态, 0在线, 1离线 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 状态名称 + statusText?: string; +} + +/** + * 实名认证搜索条件 + */ +export interface UserVerifyParam extends PageParam { + id?: number; + status?: number; + keywords?: string; +} diff --git a/src/api/system/version/index.ts b/src/api/system/version/index.ts new file mode 100644 index 0000000..fdca9dc --- /dev/null +++ b/src/api/system/version/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Version, VersionParam } from './model'; +import type { Menu } from '../menu/model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询角色 + */ +export async function pageVersion(params: VersionParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/version/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询角色列表 + */ +export async function listVersion(params?: VersionParam) { + const res = await request.get>( + SERVER_API_URL + '/system/version', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加角色 + */ +export async function addVersion(data: Version) { + const res = await request.post>( + SERVER_API_URL + '/system/version', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改角色 + */ +export async function updateVersion(data: Version) { + const res = await request.put>( + SERVER_API_URL + '/system/version', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除角色 + */ +export async function removeVersion(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/version/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除角色 + */ +export async function removeVersions(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/version/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listVersionMenus(versionId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/version-menu/' + versionId + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateVersionMenus(versionId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/version-menu/' + versionId, + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/version/model/index.ts b/src/api/system/version/model/index.ts new file mode 100644 index 0000000..8899e2f --- /dev/null +++ b/src/api/system/version/model/index.ts @@ -0,0 +1,26 @@ +import type { PageParam } from '@/api'; + +export interface Version { + id?: number; + versionName?: string; + versionCode?: string; + vueDownloadUrl?: string; + androidDownloadUrl?: string; + iosDownloadUrl?: string; + updateInfo?: any; + isHard?: boolean; + isHot?: boolean; + status?: number; + comments?: string; + tenantId?: number; + createTime?: string; +} + +/** + * 角色搜索条件 + */ +export interface VersionParam extends PageParam { + versionName?: string; + versionCode?: string; + comments?: string; +} diff --git a/src/api/system/white-domain/index.ts b/src/api/system/white-domain/index.ts new file mode 100644 index 0000000..fc68e9f --- /dev/null +++ b/src/api/system/white-domain/index.ts @@ -0,0 +1,146 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { WhiteDomain, WhiteDomainParam } from './model'; +import {SERVER_API_URL} from "@/utils/server"; + +/** + * 分页查询服务器白名单 + */ +export async function pageWhiteDomain(params: WhiteDomainParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/white-domain/page', + { + params + } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询服务器白名单列表 + */ +export async function listWhiteDomain(params?: WhiteDomainParam) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain', + { + params + } + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加服务器白名单 + */ +export async function addWhiteDomain(data: WhiteDomain) { + const res = await request.post>( + SERVER_API_URL + '/system/white-domain', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改服务器白名单 + */ +export async function updateWhiteDomain(data: WhiteDomain) { + const res = await request.put>( + SERVER_API_URL + '/system/white-domain', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除服务器白名单 + */ +export async function removeWhiteDomain(id?: number) { + const res = await request.del>( + SERVER_API_URL + '/system/white-domain/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除服务器白名单 + */ +export async function removeBatchWhiteDomain(data: (number | undefined)[]) { + const res = await request.del>( + SERVER_API_URL + '/system/white-domain/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户状态 + */ +export async function updateWhiteDomainStatus( + docsId?: number, + status?: number +) { + const res = await request.put>( + SERVER_API_URL + '/system/white-domain/status', + { + docsId, + status + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询服务器白名单 + */ +export async function getWhiteDomain(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain/existence', + { + params: { field, value, id } + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/system/white-domain/model/index.ts b/src/api/system/white-domain/model/index.ts new file mode 100644 index 0000000..8a231df --- /dev/null +++ b/src/api/system/white-domain/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 服务器白名单 + */ +export interface WhiteDomain { + // 自增ID + id?: number; + // 域名 + domain?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; +} + +/** + * 服务器白名单搜索条件 + */ +export interface WhiteDomainParam extends PageParam { + id?: number; + domain?: string; +} diff --git a/src/app.config.ts b/src/app.config.ts new file mode 100644 index 0000000..1ab701b --- /dev/null +++ b/src/app.config.ts @@ -0,0 +1,168 @@ +export default { + pages: [ + // TabBar 页面 + 'pages/index/index', + 'pages/shop/index', + 'pages/points/index', + 'pages/user/user', + // 认证页面 + 'passport/login', + 'passport/register', + 'passport/sms-login', + 'passport/forget', + 'passport/agreement', + 'passport/setting', + 'passport/qr-login/index', + 'passport/qr-confirm/index', + 'passport/unified-qr/index', + // 首页子页面 + 'pages/index/search', + 'pages/index/notification', + 'pages/index/article-detail', + 'pages/index/article-list', + 'pages/index/coupon-center/index', + // 商城子页面 + 'pages/shop/category', + 'pages/shop/product-detail', + 'pages/shop/cart', + 'pages/shop/checkout', + 'pages/shop/group-buy-list/index', + 'pages/shop/group-buy-detail/index', + 'pages/shop/seckill-list/index', + 'pages/shop/seckill-detail/index', + // 积分子页面 + 'pages/points/signin', + 'pages/points/product-detail', + 'pages/points/product-list/index', + 'pages/points/exchange/index', + 'pages/points/points-rules/index', + 'pages/order-list', + // 用户子页面 + 'pages/user/profile', + 'pages/user/wallet', + 'pages/user/recharge', + 'pages/user/recharge-record/index', + 'pages/user/withdraw/index', + 'pages/user/balance-log/index', + 'pages/user/coupon-list', + 'pages/user/points-record', + 'pages/user/address-list', + 'pages/user/address-edit', + 'pages/user/setting', + 'pages/user/shop-setting/index', + 'pages/user/member/index', + 'pages/user/member-upgrade/index', + 'pages/user/invite-subordinate/index', + 'pages/user/register-pay/index', + 'pages/user/promotion/index', + 'pages/user/commission/index', + 'pages/user/withdraw-list/index', + 'pages/user/team/index', + 'pages/user/invite-record/index', + 'pages/user/favorite-list/index', + 'pages/user/history-list/index', + 'pages/user/help-center/index', + 'pages/user/help-detail/index', + 'pages/user/customer-service/index', + 'pages/user/redeem/index', + // 会员权益包页面 + 'pages/user/benefit-packages/index', + 'pages/user/benefit-exchange-confirm/index', + 'pages/user/benefit-exchange-list/index', + // 订单页面 + 'pages/order/list', + 'pages/order/detail', + 'pages/order/refund', + 'pages/order/refund-detail', + 'pages/order/after-sale-apply', + 'pages/order/after-sale-list', + 'pages/order/after-sale-detail', + 'pages/order/logistics', + 'pages/order/evaluate/index', + 'pages/order/evaluate-list/index', + 'pages/order/evaluate-detail/index', + // 门店页面 + 'pages/store/list/index', + 'pages/store/booking/index', + // 售后页面 + 'pages/after-sale/apply/index', + 'pages/after-sale/progress/index', + 'pages/after-sale/list/index', + // 活动页面 + 'pages/activity/list/index', + 'pages/activity/detail/index', + // 赛事报名页面 + 'pages/event/list/index', + 'pages/event/detail/index', + 'pages/event/register/index', + 'pages/event/my/index', + // 预约订单页面 + 'pages/booking/list/index', + 'pages/booking/detail/index', + 'pages/booking/reschedule/index', + // 消息页面 + 'pages/message/list/index', + 'pages/message/detail/index', + // 礼品卡页面 + 'pages/gift-card/purchase/index', + 'pages/gift-card/exchange/index', + 'pages/gift-card/balance/index', + // 发票页面 + 'pages/invoice/title/index', + 'pages/invoice/apply/index', + 'pages/invoice/records/index', + // 分享返利页面 + 'pages/share/index', + 'pages/rebate/records/index', + 'pages/rebate/withdraw/index', + // 数据统计页面 + 'pages/statistics/dashboard/index', + 'pages/statistics/sales/index', + 'pages/statistics/users/index', + ], + window: { + backgroundTextStyle: 'light', + navigationBarBackgroundColor: '#fff', + navigationBarTitleText: 'Paopao Taro', + navigationBarTextStyle: 'black', + backgroundColor: '#f8f8f8', + }, + permission: { + 'scope.userLocation': { + desc: '用于获取您的位置,按距离展示附近门店和选择收货地址定位', + }, + }, + requiredPrivateInfos: ['getLocation', 'chooseLocation'], + tabBar: { + custom: false, + color: '#8a8a8a', + selectedColor: '#0e932e', + backgroundColor: '#ffffff', + list: [ + { + pagePath: 'pages/index/index', + iconPath: 'assets/tabbar/home.png', + selectedIconPath: 'assets/tabbar/home-active.png', + text: '首页', + }, + { + pagePath: 'pages/shop/index', + iconPath: 'assets/tabbar/shop.png', + selectedIconPath: 'assets/tabbar/shop-active.png', + text: '分类', + }, + { + pagePath: 'pages/order/list', + iconPath: 'assets/tabbar/order.png', + selectedIconPath: 'assets/tabbar/order-active.png', + text: '订单', + }, + { + pagePath: 'pages/user/user', + iconPath: 'assets/tabbar/user.png', + selectedIconPath: 'assets/tabbar/user-active.png', + text: '我的', + }, + ], + }, +} diff --git a/src/app.scss b/src/app.scss new file mode 100644 index 0000000..5122105 --- /dev/null +++ b/src/app.scss @@ -0,0 +1,80 @@ +// 全局样式 + +// 导入 NutUI 样式(必须在其他规则之前) +@use '@nutui/nutui-react-taro/dist/styles/theme-default.scss'; + +// TailwindCSS 指令 +@tailwind base; // noinspection TailwindCssInclude +@tailwind components; // noinspection TailwindCssInclude +@tailwind utilities; // noinspection TailwindCssInclude + +// 自定义样式变量 +:root { + --primary-color: #1890ff; + --secondary-color: #52c41a; + --text-color: #333333; + --bg-color: #ffffff; + --border-color: #e8e8e8; +} + +// 暗黑模式 +.dark { + --primary-color: #177ddc; + --text-color: #ffffff; + --bg-color: #141414; + --border-color: #303030; + + background-color: var(--bg-color); + color: var(--text-color); +} + +// 全局重置样式 +page { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 28px; + color: var(--text-color); + background-color: var(--bg-color); +} + +// 安全区域适配(小程序不支持 env(),使用固定值) +.safe-area-bottom { + padding-bottom: 20px; +} + +// 通用工具类 +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +.flex-between { + display: flex; + align-items: center; + justify-content: space-between; +} + +.text-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-ellipsis-2 { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +// 加载旋转动画(Loading组件使用) +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + diff --git a/src/app.tsx b/src/app.tsx new file mode 100644 index 0000000..2cdb97e --- /dev/null +++ b/src/app.tsx @@ -0,0 +1,56 @@ +import React, { useState } from 'react' +import Taro, { useLaunch, useDidShow, useDidHide, getSystemInfoSync } from '@tarojs/taro' +import { View } from '@tarojs/components' +import { ConfigProvider } from '@nutui/nutui-react-taro' +import zhCN from '@nutui/nutui-react-taro/dist/locales/zh-CN' +import AppContext from './contexts/AppContext' +import { UserProvider } from './contexts/UserContext' +import { CartProvider } from './contexts/CartContext' +import ErrorBoundary from './components/ErrorBoundary' +import './app.scss' + +type AppProps = { + children?: React.ReactNode +} + +function App(props: AppProps) { + const [theme, setTheme] = useState<'light' | 'dark'>('light') + + useLaunch(() => { + const systemInfo = getSystemInfoSync() + const savedTheme = Taro.getStorageSync('app_theme') + if (savedTheme === 'light' || savedTheme === 'dark') { + setTheme(savedTheme) + } + }) + + useDidShow(() => {}) + + useDidHide(() => {}) + + const toggleTheme = () => { + setTheme(prev => { + const next = prev === 'light' ? 'dark' : 'light' + try { Taro.setStorageSync('app_theme', next) } catch { /* ignore */ } + return next + }) + } + + return ( + + + + + + + {props.children} + + + + + + + ) +} + +export default App diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2069978fff76afbdb903b47d92dcef6e28404fcb GIT binary patch literal 158093 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