diff --git a/CHANGELOG.md b/CHANGELOG.md index abebf31..5e0441f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,20 @@ This document records all notable changes to ShadCN Admin. --- +## [1.3.7-dev.1](https://github.com/perfect-panel/frontend/compare/v1.3.6...v1.3.7-dev.1) (2026-01-27) + +### 🐛 Bug Fixes / 问题修复 + +* **admin:** refresh user list after balance update ([7e1d574](https://github.com/perfect-panel/frontend/commit/7e1d5746d46dd9bf33b1971f71f809afcdba4bbe)) +* **build:** ensure version.lock directory exists + fix merge typo ([052a0a4](https://github.com/perfect-panel/frontend/commit/052a0a420921cffc09c81843d37081d05b4c4717)) +* **ci:** avoid void|Promise union for refetch ([6dd743b](https://github.com/perfect-panel/frontend/commit/6dd743bbf4f383249e97549ed0ed0417b6f5609d)) +* **i18n:** remove duplicate locale keys ([ed3f6cb](https://github.com/perfect-panel/frontend/commit/ed3f6cb737e0e5b3b57e4149fce3be6e46b0c5eb)) + +### 🔧 Chores / 其他变更 + +* **openapi:** regenerate services & patch axios requestType typing ([0ec4f84](https://github.com/perfect-panel/frontend/commit/0ec4f84fa9d4d94048b8219896c3d8fb1d8d2175)) +* **release:** Release 1.2.4-dev.2 / 发布版本 1.2.4-dev.2 [skip ci] ([98676fa](https://github.com/perfect-panel/frontend/commit/98676fa27c74eefc9c0fe2d92a549d9e5d7d7fd6)) + ## [1.3.6](https://github.com/perfect-panel/frontend/compare/v1.3.5...v1.3.6) (2025-12-30) ### 🐛 Bug Fixes / 问题修复 @@ -92,13 +106,20 @@ This document records all notable changes to ShadCN Admin. * Remove the system log dialog component from the system version card ([71cb827](https://github.com/perfect-panel/frontend/commit/71cb827918ee3250f0c9d06d46d876ce6799b8ac)) * Update invite link format in auth forms and sidebar to include hash fragment for routing. ([7a8c010](https://github.com/perfect-panel/frontend/commit/7a8c0102958a859c9e7476810d5c9b822f882692)) +## [1.2.4-dev.2](https://github.com/perfect-panel/frontend/compare/v1.2.4-dev.1...v1.2.4-dev.2) (2026-01-27) + +### 🐛 Bug Fixes / 问题修复 + +* **admin:** refresh user list after balance update ([7e1d574](https://github.com/perfect-panel/frontend/commit/7e1d5746d46dd9bf33b1971f71f809afcdba4bbe)) +* **ci:** avoid void|Promise union for refetch ([6dd743b](https://github.com/perfect-panel/frontend/commit/6dd743bbf4f383249e97549ed0ed0417b6f5609d)) + ### 📚 Documentation / 文档更新 * Add one-click installation script for PPanel with Docker support ([912c5c4](https://github.com/perfect-panel/frontend/commit/912c5c4cb63eeb0ecbc33bef6b31bd50d83d6491)) ### 🔧 Chores / 其他变更 -* **release:** Release 1.2.4-dev.1 / 发布版本 1.2.4-dev.1 [skip ci] ([62d45bb](https://github.com/perfect-panel/frontend/commit/62d45bbac17fab9656c1cce029a379ce8bb757d6)) +* **openapi:** regenerate services & patch axios requestType typing ([0ec4f84](https://github.com/perfect-panel/frontend/commit/0ec4f84fa9d4d94048b8219896c3d8fb1d8d2175)) ## [1.2.4-dev.1](https://github.com/perfect-panel/frontend/compare/v1.2.3...v1.2.4-dev.1) (2025-12-22) diff --git a/apps/admin/public/assets/locales/en-US/user.json b/apps/admin/public/assets/locales/en-US/user.json index 028fe70..71a2bbe 100644 --- a/apps/admin/public/assets/locales/en-US/user.json +++ b/apps/admin/public/assets/locales/en-US/user.json @@ -73,6 +73,14 @@ "referrerUserId": "Referrer User ID", "remove": "Remove", "resetLogs": "Reset Logs", + "resetTraffic": "Reset Traffic", + "toggleStatus": "Toggle Status", + "resetSubscriptionToken": "Reset Token", + "resetSubscriptionTokenDescription": "This will reset the subscription token. Old links will become invalid.", + "resetSubscriptionTraffic": "Reset Traffic", + "resetSubscriptionTrafficDescription": "This will reset the subscription traffic counters.", + "toggleSubscriptionStatus": "Toggle Status", + "toggleSubscriptionStatusDescription": "This will toggle the subscription status.", "resetTime": "Reset Time", "resetToken": "Reset Subscription Address", "resetTokenDescription": "This will reset the subscription address and regenerate a new token.", diff --git a/apps/admin/public/assets/locales/zh-CN/user.json b/apps/admin/public/assets/locales/zh-CN/user.json index 0de2b9c..7d4fb06 100644 --- a/apps/admin/public/assets/locales/zh-CN/user.json +++ b/apps/admin/public/assets/locales/zh-CN/user.json @@ -73,6 +73,14 @@ "referrerUserId": "推荐人用户 ID", "remove": "移除", "resetLogs": "重置日志", + "resetTraffic": "重置流量", + "toggleStatus": "切换状态", + "resetSubscriptionToken": "重置令牌", + "resetSubscriptionTokenDescription": "将重置订阅令牌,旧订阅链接会失效。", + "resetSubscriptionTraffic": "重置流量", + "resetSubscriptionTrafficDescription": "将重置该订阅的流量统计。", + "toggleSubscriptionStatus": "切换状态", + "toggleSubscriptionStatusDescription": "将切换该订阅的启用/停用状态。", "resetTime": "重置时间", "resetToken": "重置订阅地址", "resetTokenDescription": "这将重置订阅地址并重新生成新的令牌。", diff --git a/apps/admin/src/sections/product/subscribe-form.tsx b/apps/admin/src/sections/product/subscribe-form.tsx index 4c06eb4..fefa2e8 100644 --- a/apps/admin/src/sections/product/subscribe-form.tsx +++ b/apps/admin/src/sections/product/subscribe-form.tsx @@ -77,6 +77,7 @@ const defaultValues = { purchase_with_discount: false, reset_cycle: 0, renewal_reset: false, + show_original_price: false, deduction_mode: "auto", }; @@ -837,6 +838,41 @@ export default function SubscribeForm>({ )} /> + + ( + +
+
+ + {t( + "form.showOriginalPrice", + "Show Original Price" + )} + + + {t( + "form.showOriginalPriceDescription", + "Display original price in the storefront" + )} + +
+ + + form.setValue(field.name, value) + } + /> + +
+ +
+ )} + /> + [ - , + ref.current?.refresh()} + userId={row.id} + />, , void; +}) { const { t } = useTranslation("user"); const [open, setOpen] = useState(false); const { data: user, refetch } = useQuery({ @@ -314,6 +324,12 @@ function ProfileSheet({ userId }: { userId: number }) { return data.data as API.User; }, }); + + const refetchAll = async () => { + await refetch(); + onUpdated?.(); + return Promise.resolve(); + }; return ( @@ -343,13 +359,13 @@ function ProfileSheet({ userId }: { userId: number }) { - + - + - + diff --git a/apps/admin/src/sections/user/user-profile/auth-methods-form.tsx b/apps/admin/src/sections/user/user-profile/auth-methods-form.tsx index 145c379..9cdcfe0 100644 --- a/apps/admin/src/sections/user/user-profile/auth-methods-form.tsx +++ b/apps/admin/src/sections/user/user-profile/auth-methods-form.tsx @@ -21,7 +21,7 @@ export function AuthMethodsForm({ refetch, }: { user: API.User; - refetch: () => void; + refetch: () => Promise; }) { const { t } = useTranslation("user"); diff --git a/apps/admin/src/sections/user/user-profile/basic-info-form.tsx b/apps/admin/src/sections/user/user-profile/basic-info-form.tsx index 9e5581f..68a55b7 100644 --- a/apps/admin/src/sections/user/user-profile/basic-info-form.tsx +++ b/apps/admin/src/sections/user/user-profile/basic-info-form.tsx @@ -47,7 +47,7 @@ export function BasicInfoForm({ refetch, }: { user: API.User; - refetch: () => void; + refetch: () => Promise; }) { const { t } = useTranslation("user"); diff --git a/apps/admin/src/sections/user/user-profile/notify-settings-form.tsx b/apps/admin/src/sections/user/user-profile/notify-settings-form.tsx index eae7f5b..e72d271 100644 --- a/apps/admin/src/sections/user/user-profile/notify-settings-form.tsx +++ b/apps/admin/src/sections/user/user-profile/notify-settings-form.tsx @@ -34,7 +34,7 @@ export function NotifySettingsForm({ refetch, }: { user: API.User; - refetch: () => void; + refetch: () => Promise; }) { const { t } = useTranslation("user"); diff --git a/apps/admin/vite.config.ts b/apps/admin/vite.config.ts index a03c3f5..c755b54 100644 --- a/apps/admin/vite.config.ts +++ b/apps/admin/vite.config.ts @@ -1,4 +1,4 @@ -import { readFileSync, writeFileSync } from "node:fs"; +import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { fileURLToPath, URL } from "node:url"; import tailwindcss from "@tailwindcss/vite"; import { devtools } from "@tanstack/devtools-vite"; @@ -18,6 +18,8 @@ function versionLockPlugin(): Plugin { ); const rootPkg = JSON.parse(readFileSync(rootPkgPath, "utf-8")); const version = rootPkg.version || "0.0.0"; + + mkdirSync(distDir, { recursive: true }); writeFileSync(`${distDir}/version.lock`, version); }, }; diff --git a/package.json b/package.json index 88a99c0..1840397 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "frontend", - "version": "1.3.6", + "version": "1.3.7-dev.1", "private": true, "homepage": "https://github.com/perfect-panel/frontend", "bugs": { diff --git a/packages/ui/src/services/admin/ads.ts b/packages/ui/src/services/admin/ads.ts index 6649e85..020245c 100644 --- a/packages/ui/src/services/admin/ads.ts +++ b/packages/ui/src/services/admin/ads.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/announcement.ts b/packages/ui/src/services/admin/announcement.ts index 80b6cd8..465733a 100644 --- a/packages/ui/src/services/admin/announcement.ts +++ b/packages/ui/src/services/admin/announcement.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/application.ts b/packages/ui/src/services/admin/application.ts index 64c98b7..bcba8e2 100644 --- a/packages/ui/src/services/admin/application.ts +++ b/packages/ui/src/services/admin/application.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/authMethod.ts b/packages/ui/src/services/admin/authMethod.ts index 76bd767..d8ba053 100644 --- a/packages/ui/src/services/admin/authMethod.ts +++ b/packages/ui/src/services/admin/authMethod.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/console.ts b/packages/ui/src/services/admin/console.ts index cadf2bf..31477d9 100644 --- a/packages/ui/src/services/admin/console.ts +++ b/packages/ui/src/services/admin/console.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/coupon.ts b/packages/ui/src/services/admin/coupon.ts index c757a81..18593a5 100644 --- a/packages/ui/src/services/admin/coupon.ts +++ b/packages/ui/src/services/admin/coupon.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/document.ts b/packages/ui/src/services/admin/document.ts index d879024..1834e89 100644 --- a/packages/ui/src/services/admin/document.ts +++ b/packages/ui/src/services/admin/document.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/index.ts b/packages/ui/src/services/admin/index.ts index f6ee7b6..bf43e11 100644 --- a/packages/ui/src/services/admin/index.ts +++ b/packages/ui/src/services/admin/index.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ // API 更新时间: // API 唯一标识: diff --git a/packages/ui/src/services/admin/log.ts b/packages/ui/src/services/admin/log.ts index 937e4e0..7c2ac04 100644 --- a/packages/ui/src/services/admin/log.ts +++ b/packages/ui/src/services/admin/log.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/marketing.ts b/packages/ui/src/services/admin/marketing.ts index c674693..e26a375 100644 --- a/packages/ui/src/services/admin/marketing.ts +++ b/packages/ui/src/services/admin/marketing.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/order.ts b/packages/ui/src/services/admin/order.ts index 7e7a6f6..9d2e0fd 100644 --- a/packages/ui/src/services/admin/order.ts +++ b/packages/ui/src/services/admin/order.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/payment.ts b/packages/ui/src/services/admin/payment.ts index eda6b18..a770206 100644 --- a/packages/ui/src/services/admin/payment.ts +++ b/packages/ui/src/services/admin/payment.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/server.ts b/packages/ui/src/services/admin/server.ts index d839d39..aeddd39 100644 --- a/packages/ui/src/services/admin/server.ts +++ b/packages/ui/src/services/admin/server.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/subscribe.ts b/packages/ui/src/services/admin/subscribe.ts index f3f627a..b4ea634 100644 --- a/packages/ui/src/services/admin/subscribe.ts +++ b/packages/ui/src/services/admin/subscribe.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/system.ts b/packages/ui/src/services/admin/system.ts index 1309990..ba228b2 100644 --- a/packages/ui/src/services/admin/system.ts +++ b/packages/ui/src/services/admin/system.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/ticket.ts b/packages/ui/src/services/admin/ticket.ts index 2b78149..6f97134 100644 --- a/packages/ui/src/services/admin/ticket.ts +++ b/packages/ui/src/services/admin/ticket.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/tool.ts b/packages/ui/src/services/admin/tool.ts index 7102f45..c407056 100644 --- a/packages/ui/src/services/admin/tool.ts +++ b/packages/ui/src/services/admin/tool.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/user.ts b/packages/ui/src/services/admin/user.ts index 39c6429..264debc 100644 --- a/packages/ui/src/services/admin/user.ts +++ b/packages/ui/src/services/admin/user.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/common/auth.ts b/packages/ui/src/services/common/auth.ts index 42ffaab..f7b6828 100644 --- a/packages/ui/src/services/common/auth.ts +++ b/packages/ui/src/services/common/auth.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/common/common.ts b/packages/ui/src/services/common/common.ts index 66a6c05..897c3b2 100644 --- a/packages/ui/src/services/common/common.ts +++ b/packages/ui/src/services/common/common.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/common/index.ts b/packages/ui/src/services/common/index.ts index 201142d..53a7bc4 100644 --- a/packages/ui/src/services/common/index.ts +++ b/packages/ui/src/services/common/index.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ // API 更新时间: // API 唯一标识: diff --git a/packages/ui/src/services/common/oauth.ts b/packages/ui/src/services/common/oauth.ts index 3a4c36c..9a695ad 100644 --- a/packages/ui/src/services/common/oauth.ts +++ b/packages/ui/src/services/common/oauth.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; @@ -38,6 +39,7 @@ export async function appleLoginCallback( { method: "POST", data: formData, + requestType: "form", ...(options || {}), } ); diff --git a/packages/ui/src/services/gateway/basicCheckServiceVersion.ts b/packages/ui/src/services/gateway/basicCheckServiceVersion.ts index c41e41c..5ef8f50 100644 --- a/packages/ui/src/services/gateway/basicCheckServiceVersion.ts +++ b/packages/ui/src/services/gateway/basicCheckServiceVersion.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/gateway/basicHeartbeat.ts b/packages/ui/src/services/gateway/basicHeartbeat.ts index 53981c7..ec3345c 100644 --- a/packages/ui/src/services/gateway/basicHeartbeat.ts +++ b/packages/ui/src/services/gateway/basicHeartbeat.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/gateway/basicRegisterService.ts b/packages/ui/src/services/gateway/basicRegisterService.ts index c553fe0..0512e58 100644 --- a/packages/ui/src/services/gateway/basicRegisterService.ts +++ b/packages/ui/src/services/gateway/basicRegisterService.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/gateway/basicUpdateService.ts b/packages/ui/src/services/gateway/basicUpdateService.ts index a792bdf..8261438 100644 --- a/packages/ui/src/services/gateway/basicUpdateService.ts +++ b/packages/ui/src/services/gateway/basicUpdateService.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/gateway/index.ts b/packages/ui/src/services/gateway/index.ts index ad43f03..52e694e 100644 --- a/packages/ui/src/services/gateway/index.ts +++ b/packages/ui/src/services/gateway/index.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ // API 更新时间: // API 唯一标识: diff --git a/packages/ui/src/services/user/announcement.ts b/packages/ui/src/services/user/announcement.ts index cea2391..6f614a3 100644 --- a/packages/ui/src/services/user/announcement.ts +++ b/packages/ui/src/services/user/announcement.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/document.ts b/packages/ui/src/services/user/document.ts index 33122f8..49477b0 100644 --- a/packages/ui/src/services/user/document.ts +++ b/packages/ui/src/services/user/document.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/index.ts b/packages/ui/src/services/user/index.ts index 1b4de84..e67bdfa 100644 --- a/packages/ui/src/services/user/index.ts +++ b/packages/ui/src/services/user/index.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ // API 更新时间: // API 唯一标识: diff --git a/packages/ui/src/services/user/order.ts b/packages/ui/src/services/user/order.ts index 311d6ca..aa9fd75 100644 --- a/packages/ui/src/services/user/order.ts +++ b/packages/ui/src/services/user/order.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/payment.ts b/packages/ui/src/services/user/payment.ts index a9282a1..a25b456 100644 --- a/packages/ui/src/services/user/payment.ts +++ b/packages/ui/src/services/user/payment.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/portal.ts b/packages/ui/src/services/user/portal.ts index 148ac0f..0a01629 100644 --- a/packages/ui/src/services/user/portal.ts +++ b/packages/ui/src/services/user/portal.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/subscribe.ts b/packages/ui/src/services/user/subscribe.ts index fdde370..eab11e4 100644 --- a/packages/ui/src/services/user/subscribe.ts +++ b/packages/ui/src/services/user/subscribe.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/ticket.ts b/packages/ui/src/services/user/ticket.ts index 74dd7b2..8dfb5b6 100644 --- a/packages/ui/src/services/user/ticket.ts +++ b/packages/ui/src/services/user/ticket.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/user.ts b/packages/ui/src/services/user/user.ts index d7a25ca..778eb88 100644 --- a/packages/ui/src/services/user/user.ts +++ b/packages/ui/src/services/user/user.ts @@ -1,3 +1,4 @@ +// @ts-nocheck /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/typings.d.ts b/packages/ui/src/typings.d.ts index b5ed465..59808ea 100644 --- a/packages/ui/src/typings.d.ts +++ b/packages/ui/src/typings.d.ts @@ -8,3 +8,11 @@ declare global { i18n: typeof i18n; } } + +// openapi2ts 生成的 request 参数里可能会包含 requestType(umi-request 风格)。 +// 我们的 request 基于 axios:这里做一个类型补丁,避免 TS 报错。 +declare module "axios" { + export interface AxiosRequestConfig { + requestType?: string; + } +}