From cd8698b157f5b0879c6d11190553b758b5122d23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 19 Apr 2025 11:03:03 +0800 Subject: [PATCH] fix --- package.json | 11 +- src/common/config-base.ts | 37 +- src/common/file.ts | 40 +- src/common/worker.ts | 2 +- src/core/apis/file.ts | 18 +- src/core/helper/config.ts | 25 +- src/core/types/webapi.ts | 2 +- src/onebot/action/OneBotAction.ts | 35 +- .../extends/ClickInlineKeyboardButton.ts | 19 +- src/onebot/action/extends/CreateCollection.ts | 10 +- src/onebot/action/extends/FetchCustomFace.ts | 8 +- src/onebot/action/extends/FetchEmojiLike.ts | 16 +- src/onebot/action/extends/GetAiCharacters.ts | 10 +- .../action/extends/GetCollectionList.ts | 10 +- src/onebot/action/extends/GetGroupInfoEx.ts | 10 +- src/onebot/action/extends/GetMiniAppArk.ts | 56 +- src/onebot/action/extends/GetProfileLike.ts | 12 +- .../extends/GetUnidirectionalFriendList.ts | 2 +- src/onebot/action/extends/GetUserStatus.ts | 10 +- src/onebot/action/extends/MoveGroupFile.ts | 14 +- src/onebot/action/extends/OCRImage.ts | 8 +- src/onebot/action/extends/RenameGroupFile.ts | 14 +- src/onebot/action/extends/SendPacket.ts | 15 +- .../action/extends/SetDiyOnlineStatus.ts | 12 +- src/onebot/action/extends/SetGroupRemark.ts | 10 +- src/onebot/action/extends/SetGroupSign.ts | 8 +- src/onebot/action/extends/SetInputStatus.ts | 10 +- src/onebot/action/extends/SetLongNick.ts | 8 +- src/onebot/action/extends/SetOnlineStatus.ts | 12 +- src/onebot/action/extends/SetQQAvatar.ts | 8 +- src/onebot/action/extends/SetSpecialTitle.ts | 12 +- src/onebot/action/extends/ShareContact.ts | 18 +- src/onebot/action/extends/TransGroupFile.ts | 10 +- .../action/extends/TranslateEnWordToZn.ts | 8 +- src/onebot/action/file/GetFile.ts | 10 +- src/onebot/action/file/GetGroupFileUrl.ts | 10 +- src/onebot/action/file/GetPrivateFileUrl.ts | 8 +- .../action/go-cqhttp/CreateGroupFileFolder.ts | 10 +- .../action/go-cqhttp/DeleteGroupFile.ts | 10 +- .../action/go-cqhttp/DeleteGroupFileFolder.ts | 12 +- src/onebot/action/go-cqhttp/DownloadFile.ts | 14 +- src/onebot/action/go-cqhttp/GetForwardMsg.ts | 11 +- .../action/go-cqhttp/GetFriendMsgHistory.ts | 15 +- .../action/go-cqhttp/GetGroupAtAllRemain.ts | 8 +- .../go-cqhttp/GetGroupFileSystemInfo.ts | 8 +- .../action/go-cqhttp/GetGroupFilesByFolder.ts | 14 +- .../action/go-cqhttp/GetGroupHonorInfo.ts | 14 +- .../action/go-cqhttp/GetGroupMsgHistory.ts | 14 +- .../action/go-cqhttp/GetGroupRootFiles.ts | 10 +- .../action/go-cqhttp/GetStrangerInfo.ts | 10 +- .../go-cqhttp/GoCQHTTPCheckUrlSafely.ts | 8 +- .../action/go-cqhttp/GoCQHTTPDeleteFriend.ts | 14 +- .../action/go-cqhttp/GoCQHTTPGetModelShow.ts | 8 +- .../action/go-cqhttp/SendGroupNotice.ts | 22 +- .../action/go-cqhttp/SetGroupPortrait.ts | 10 +- src/onebot/action/go-cqhttp/SetQQProfile.ts | 12 +- .../action/go-cqhttp/UploadGroupFile.ts | 16 +- .../action/go-cqhttp/UploadPrivateFile.ts | 12 +- src/onebot/action/group/DelEssenceMsg.ts | 8 +- src/onebot/action/group/DelGroupNotice.ts | 10 +- src/onebot/action/group/GetAiRecord.ts | 12 +- src/onebot/action/group/GetGroupEssence.ts | 8 +- src/onebot/action/group/GetGroupInfo.ts | 8 +- src/onebot/action/group/GetGroupList.ts | 8 +- src/onebot/action/group/GetGroupMemberInfo.ts | 12 +- src/onebot/action/group/GetGroupMemberList.ts | 10 +- src/onebot/action/group/GetGroupNotice.ts | 8 +- src/onebot/action/group/GetGroupShutList.ts | 8 +- src/onebot/action/group/GroupPoke.ts | 10 +- src/onebot/action/group/SendGroupAiRecord.ts | 12 +- src/onebot/action/group/SetEssenceMsg.ts | 8 +- src/onebot/action/group/SetGroupAddRequest.ts | 12 +- src/onebot/action/group/SetGroupAdmin.ts | 12 +- src/onebot/action/group/SetGroupBan.ts | 12 +- src/onebot/action/group/SetGroupCard.ts | 12 +- src/onebot/action/group/SetGroupKick.ts | 12 +- src/onebot/action/group/SetGroupLeave.ts | 10 +- src/onebot/action/group/SetGroupName.ts | 10 +- src/onebot/action/group/SetGroupWholeBan.ts | 10 +- src/onebot/action/msg/DeleteMsg.ts | 8 +- src/onebot/action/msg/ForwardSingleMsg.ts | 12 +- src/onebot/action/msg/GetMsg.ts | 8 +- src/onebot/action/msg/MarkMsgAsRead.ts | 12 +- src/onebot/action/msg/SetMsgEmojiLike.ts | 12 +- src/onebot/action/packet/GetRkeyEx.ts | 2 +- src/onebot/action/packet/GetRkeyServer.ts | 2 +- src/onebot/action/packet/SendPoke.ts | 10 +- src/onebot/action/system/GetCredentials.ts | 8 +- src/onebot/action/user/FriendPoke.ts | 8 +- src/onebot/action/user/GetCookies.ts | 8 +- src/onebot/action/user/GetFriendList.ts | 8 +- src/onebot/action/user/GetRecentContact.ts | 8 +- src/onebot/action/user/SendLike.ts | 10 +- src/onebot/action/user/SetFriendAddRequest.ts | 12 +- src/onebot/api/msg.ts | 36 +- src/onebot/config/config.ts | 167 +++--- src/onebot/config/index.ts | 5 +- src/shell/base.ts | 2 +- src/webui/src/helper/config.ts | 24 +- src/webui/src/types/theme.ts | 514 +++++++++--------- 100 files changed, 931 insertions(+), 937 deletions(-) diff --git a/package.json b/package.json index a9511dca..f80b2434 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@napneko/nap-proto-core": "^0.0.4", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-typescript": "^12.1.2", + "@sinclair/typebox": "^0.34.9", "@types/cors": "^2.8.17", "@types/express": "^5.0.0", "@types/multer": "^1.4.12", @@ -37,9 +38,9 @@ "@types/ws": "^8.5.12", "@typescript-eslint/eslint-plugin": "^8.3.0", "@typescript-eslint/parser": "^8.3.0", + "ajv": "^8.13.0", "async-mutex": "^0.5.0", "commander": "^13.0.0", - "compressing": "^1.10.1", "cors": "^2.8.5", "esbuild": "0.25.0", "eslint": "^9.14.0", @@ -52,18 +53,18 @@ "image-size": "^1.1.1", "json5": "^2.2.3", "multer": "^1.4.5-lts.1", - "napcat.protobuf": "^1.1.4", "typescript": "^5.3.3", "typescript-eslint": "^8.13.0", "vite": "^6.0.1", "vite-plugin-cp": "^6.0.0", "vite-tsconfig-paths": "^5.1.0", - "winston": "^3.17.0" + "napcat.protobuf": "^1.1.4", + "winston": "^3.17.0", + "compressing": "^1.10.1" }, "dependencies": { "express": "^5.0.0", "silk-wasm": "^3.6.1", - "ws": "^8.18.0", - "zod": "^3.24.2" + "ws": "^8.18.0" } } diff --git a/src/common/config-base.ts b/src/common/config-base.ts index ed5e5540..8f39a4b0 100644 --- a/src/common/config-base.ts +++ b/src/common/config-base.ts @@ -2,20 +2,22 @@ import path from 'node:path'; import fs from 'node:fs'; import type { NapCatCore } from '@/core'; import json5 from 'json5'; -import { z } from 'zod'; +import Ajv, { AnySchema, ValidateFunction } from 'ajv'; export abstract class ConfigBase { name: string; core: NapCatCore; configPath: string; configData: T = {} as T; - schema: z.ZodType; + ajv: Ajv; + validate: ValidateFunction; - protected constructor(name: string, core: NapCatCore, configPath: string, schema: z.ZodType) { + protected constructor(name: string, core: NapCatCore, configPath: string, ConfigSchema: AnySchema) { this.name = name; this.core = core; this.configPath = configPath; - this.schema = schema; + this.ajv = new Ajv({ useDefaults: true, coerceTypes: true }); + this.validate = this.ajv.compile(ConfigSchema); fs.mkdirSync(this.configPath, { recursive: true }); this.read(); } @@ -40,16 +42,11 @@ export abstract class ConfigBase { private loadConfig(configPath: string): T { try { - let configData = json5.parse(fs.readFileSync(configPath, 'utf-8')); - const result = this.schema.safeParse(configData); - - if (result.success) { - this.configData = result.data; - this.core.context.logger.logDebug(`[Core] [Config] 配置文件${configPath}加载`, this.configData); - return this.configData; - } else { - throw new Error(`配置文件验证失败: ${result.error.message}`); - } + let newConfigData = json5.parse(fs.readFileSync(configPath, 'utf-8')); + this.validate(newConfigData); + this.configData = newConfigData; + this.core.context.logger.logDebug(`[Core] [Config] 配置文件${configPath}加载`, this.configData); + return this.configData; } catch (e: unknown) { this.handleError(e, '读取配置文件时发生错误'); return {} as T; @@ -58,14 +55,10 @@ export abstract class ConfigBase { save(newConfigData: T = this.configData): void { const configPath = this.getConfigPath(this.core.selfInfo.uin); + this.validate(newConfigData); + this.configData = newConfigData; try { - const result = this.schema.safeParse(newConfigData); - if (result.success) { - this.configData = result.data; - fs.writeFileSync(configPath, JSON.stringify(this.configData, null, 2)); - } else { - throw new Error(`配置文件验证失败: ${result.error.message}`); - } + fs.writeFileSync(configPath, JSON.stringify(this.configData, null, 2)); } catch (e: unknown) { this.handleError(e, `保存配置文件 ${configPath} 时发生错误:`); } @@ -74,8 +67,6 @@ export abstract class ConfigBase { private handleError(e: unknown, message: string): void { if (e instanceof SyntaxError) { this.core.context.logger.logError('[Core] [Config] 操作配置文件格式错误,请检查配置文件:', e.message); - } else if (e instanceof z.ZodError) { - this.core.context.logger.logError('[Core] [Config] 配置文件验证错误:', e.message); } else { this.core.context.logger.logError(`[Core] [Config] ${message}:`, (e as Error).message); } diff --git a/src/common/file.ts b/src/common/file.ts index d323dac9..c75bcce4 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -182,28 +182,28 @@ export async function uriToLocalFile(dir: string, uri: string, filename: string const filePath = path.join(dir, filename); switch (UriType) { - case FileUriType.Local: { - const fileExt = path.extname(HandledUri); - const localFileName = path.basename(HandledUri, fileExt) + fileExt; - const tempFilePath = path.join(dir, filename + fileExt); - fs.copyFileSync(HandledUri, tempFilePath); - return { success: true, errMsg: '', fileName: localFileName, path: tempFilePath }; - } + case FileUriType.Local: { + const fileExt = path.extname(HandledUri); + const localFileName = path.basename(HandledUri, fileExt) + fileExt; + const tempFilePath = path.join(dir, filename + fileExt); + fs.copyFileSync(HandledUri, tempFilePath); + return { success: true, errMsg: '', fileName: localFileName, path: tempFilePath }; + } - case FileUriType.Remote: { - const buffer = await httpDownload({ url: HandledUri, headers: headers ?? {} }); - fs.writeFileSync(filePath, buffer); - return { success: true, errMsg: '', fileName: filename, path: filePath }; - } + case FileUriType.Remote: { + const buffer = await httpDownload({ url: HandledUri, headers: headers ?? {} }); + fs.writeFileSync(filePath, buffer); + return { success: true, errMsg: '', fileName: filename, path: filePath }; + } - case FileUriType.Base64: { - const base64 = HandledUri.replace(/^base64:\/\//, ''); - const base64Buffer = Buffer.from(base64, 'base64'); - fs.writeFileSync(filePath, base64Buffer); - return { success: true, errMsg: '', fileName: filename, path: filePath }; - } + case FileUriType.Base64: { + const base64 = HandledUri.replace(/^base64:\/\//, ''); + const base64Buffer = Buffer.from(base64, 'base64'); + fs.writeFileSync(filePath, base64Buffer); + return { success: true, errMsg: '', fileName: filename, path: filePath }; + } - default: - return { success: false, errMsg: `识别URL失败, uri= ${uri}`, fileName: '', path: '' }; + default: + return { success: false, errMsg: `识别URL失败, uri= ${uri}`, fileName: '', path: '' }; } } diff --git a/src/common/worker.ts b/src/common/worker.ts index 1e2bc0b7..da5c1321 100644 --- a/src/common/worker.ts +++ b/src/common/worker.ts @@ -9,7 +9,7 @@ export async function runTask(workerScript: string, taskData: T): Promise< console.error('Worker Log--->:', (result as { log: string }).log); } if ((result as any)?.error) { - reject(new Error('Worker error: ' + (result as { error: string }).error)); + reject(new Error("Worker error: " + (result as { error: string }).error)); } resolve(result); }); diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 2f66490a..616ccb71 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -44,7 +44,7 @@ export class NTQQFileApi { 'https://secret-service.bietiaop.com/rkeys', 'http://ss.xingzhige.com/music_card/rkey', ], - this.context.logger + this.context.logger ); } @@ -308,18 +308,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults?.[elementIndex] ?? ''; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults?.[elementIndex] ?? ''; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults?.[elementIndex] ?? ''; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults?.[elementIndex] ?? ''; - break; + break; } elementIndex++; } diff --git a/src/core/helper/config.ts b/src/core/helper/config.ts index 6c230056..0c2540c1 100644 --- a/src/core/helper/config.ts +++ b/src/core/helper/config.ts @@ -1,21 +1,22 @@ import { ConfigBase } from '@/common/config-base'; import { NapCatCore } from '@/core'; -import { z } from 'zod'; +import { Type, Static } from '@sinclair/typebox'; +import { AnySchema } from 'ajv'; -export const NapcatConfigSchema = z.object({ - fileLog: z.boolean().default(false), - consoleLog: z.boolean().default(true), - fileLogLevel: z.string().default('debug'), - consoleLogLevel: z.string().default('info'), - packetBackend: z.string().default('auto'), - packetServer: z.string().default(''), - o3HookMode: z.number().default(0), +export const NapcatConfigSchema = Type.Object({ + fileLog: Type.Boolean({ default: false }), + consoleLog: Type.Boolean({ default: true }), + fileLogLevel: Type.String({ default: 'debug' }), + consoleLogLevel: Type.String({ default: 'info' }), + packetBackend: Type.String({ default: 'auto' }), + packetServer: Type.String({ default: '' }), + o3HookMode: Type.Number({ default: 0 }), }); -export type NapcatConfig = z.infer; +export type NapcatConfig = Static; export class NapCatConfigLoader extends ConfigBase { - constructor(core: NapCatCore, configPath: string, schema: z.ZodType) { + constructor(core: NapCatCore, configPath: string, schema: AnySchema) { super('napcat', core, configPath, schema); } -} \ No newline at end of file +} diff --git a/src/core/types/webapi.ts b/src/core/types/webapi.ts index c9771cba..c689d860 100644 --- a/src/core/types/webapi.ts +++ b/src/core/types/webapi.ts @@ -115,7 +115,7 @@ export interface GroupEssenceMsg { add_digest_uin: string; add_digest_nick: string; add_digest_time: number; - msg_content: { msg_type: number, text?: string, image_url?: string }[]; + msg_content: unknown[]; can_be_removed: true; } diff --git a/src/onebot/action/OneBotAction.ts b/src/onebot/action/OneBotAction.ts index 240ea5e8..818169e2 100644 --- a/src/onebot/action/OneBotAction.ts +++ b/src/onebot/action/OneBotAction.ts @@ -1,8 +1,9 @@ import { ActionName, BaseCheckResult } from './router'; +import Ajv, { ErrorObject, ValidateFunction } from 'ajv'; import { NapCatCore } from '@/core'; import { NapCatOneBot11Adapter, OB11Return } from '@/onebot'; import { NetworkAdapterConfig } from '../config/config'; -import { z } from 'zod'; +import { TSchema } from '@sinclair/typebox'; export class OB11Response { private static createResponse(data: T, status: string, retcode: number, message: string = '', echo: unknown = null): OB11Return { @@ -32,7 +33,8 @@ export class OB11Response { export abstract class OneBotAction { actionName: typeof ActionName[keyof typeof ActionName] = ActionName.Unknown; core: NapCatCore; - payloadSchema?: z.ZodType = undefined; + private validate?: ValidateFunction = undefined; + payloadSchema?: TSchema = undefined; obContext: NapCatOneBot11Adapter; constructor(obContext: NapCatOneBot11Adapter, core: NapCatCore) { @@ -40,30 +42,19 @@ export abstract class OneBotAction { this.core = core; } - protected async check(payload: unknown): Promise { - if (!this.payloadSchema) { - return { valid: true }; + protected async check(payload: PayloadType): Promise { + if (this.payloadSchema) { + this.validate = new Ajv({ allowUnionTypes: true, useDefaults: true, coerceTypes: true }).compile(this.payloadSchema); } - - try { - // 使用 zod 验证并转换数据 - this.payloadSchema.parse(payload); - return { valid: true }; - } catch (error) { - if (error instanceof z.ZodError) { - const errorMessages = error.errors.map(e => - `Key: ${e.path.join('.')}, Message: ${e.message}` - ); - return { - valid: false, - message: errorMessages.join('\n') || '未知错误', - }; - } + if (this.validate && !this.validate(payload)) { + const errors = this.validate.errors as ErrorObject[]; + const errorMessages = errors.map(e => `Key: ${e.instancePath.split('/').slice(1).join('.')}, Message: ${e.message}`); return { valid: false, - message: '验证过程中发生未知错误' + message: errorMessages.join('\n') ?? '未知错误', }; } + return { valid: true }; } public async handle(payload: PayloadType, adaptername: string, config: NetworkAdapterConfig): Promise> { @@ -95,4 +86,4 @@ export abstract class OneBotAction { } abstract _handle(payload: PayloadType, adaptername: string, config: NetworkAdapterConfig): Promise; -} \ No newline at end of file +} diff --git a/src/onebot/action/extends/ClickInlineKeyboardButton.ts b/src/onebot/action/extends/ClickInlineKeyboardButton.ts index 4e7983f3..f27acfb2 100644 --- a/src/onebot/action/extends/ClickInlineKeyboardButton.ts +++ b/src/onebot/action/extends/ClickInlineKeyboardButton.ts @@ -1,15 +1,16 @@ import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '../OneBotAction'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.string(), - bot_appid: z.string(), - button_id: z.string().default(''), - callback_data: z.string().default(''), - msg_seq: z.string().default('10086'), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + bot_appid: Type.String(), + button_id: Type.String({ default: '' }), + callback_data: Type.String({ default: '' }), + msg_seq: Type.String({ default: '10086' }), }); -type Payload = z.infer; + +type Payload = Static; export class ClickInlineKeyboardButton extends OneBotAction { override actionName = ActionName.ClickInlineKeyboardButton; @@ -24,6 +25,6 @@ export class ClickInlineKeyboardButton extends OneBotAction { callback_data: payload.callback_data, dmFlag: 0, chatType: 2 - }); + }) } } diff --git a/src/onebot/action/extends/CreateCollection.ts b/src/onebot/action/extends/CreateCollection.ts index ee682241..3f9c841f 100644 --- a/src/onebot/action/extends/CreateCollection.ts +++ b/src/onebot/action/extends/CreateCollection.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Type, Static } from '@sinclair/typebox'; -const SchemaData = z.object({ - rawData: z.string(), - brief: z.string(), +const SchemaData = Type.Object({ + rawData: Type.String(), + brief: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export class CreateCollection extends OneBotAction { override actionName = ActionName.CreateCollection; diff --git a/src/onebot/action/extends/FetchCustomFace.ts b/src/onebot/action/extends/FetchCustomFace.ts index 78b1800d..f2850097 100644 --- a/src/onebot/action/extends/FetchCustomFace.ts +++ b/src/onebot/action/extends/FetchCustomFace.ts @@ -1,12 +1,12 @@ -import { z } from 'zod'; +import { Type, Static } from '@sinclair/typebox'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -const SchemaData = z.object({ - count: z.number().default(48), +const SchemaData = Type.Object({ + count: Type.Union([Type.Number(), Type.String()], { default: 48 }), }); -type Payload = z.infer; +type Payload = Static; export class FetchCustomFace extends OneBotAction { override actionName = ActionName.FetchCustomFace; diff --git a/src/onebot/action/extends/FetchEmojiLike.ts b/src/onebot/action/extends/FetchEmojiLike.ts index 83749d0e..39bab1a7 100644 --- a/src/onebot/action/extends/FetchEmojiLike.ts +++ b/src/onebot/action/extends/FetchEmojiLike.ts @@ -1,17 +1,17 @@ -import { z } from 'zod'; +import { Type, Static } from '@sinclair/typebox'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; import { type NTQQMsgApi } from '@/core/apis'; -const SchemaData = z.object({ - message_id: z.string(), - emojiId: z.string(), - emojiType: z.string(), - count: z.number().default(20), +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), + emojiId: Type.Union([Type.Number(), Type.String()]), + emojiType: Type.Union([Type.Number(), Type.String()]), + count: Type.Union([Type.Number(), Type.String()], { default: 20 }), }); -type Payload = z.infer; +type Payload = Static; export class FetchEmojiLike extends OneBotAction>> { override actionName = ActionName.FetchEmojiLike; @@ -23,7 +23,7 @@ export class FetchEmojiLike extends OneBotAction; +type Payload = Static; interface GetAiCharactersResponse { type: string; diff --git a/src/onebot/action/extends/GetCollectionList.ts b/src/onebot/action/extends/GetCollectionList.ts index 47fb9c4e..2de4305f 100644 --- a/src/onebot/action/extends/GetCollectionList.ts +++ b/src/onebot/action/extends/GetCollectionList.ts @@ -1,14 +1,14 @@ import { type NTQQCollectionApi } from '@/core/apis/collection'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Type, Static } from '@sinclair/typebox'; -const SchemaData = z.object({ - category: z.number(), - count: z.number().default(1), +const SchemaData = Type.Object({ + category: Type.Union([Type.Number(), Type.String()]), + count: Type.Union([Type.Union([Type.Number(), Type.String()])], { default: 1 }), }); -type Payload = z.infer; +type Payload = Static; export class GetCollectionList extends OneBotAction>> { override actionName = ActionName.GetCollectionList; diff --git a/src/onebot/action/extends/GetGroupInfoEx.ts b/src/onebot/action/extends/GetGroupInfoEx.ts index b38f92f8..c566a105 100644 --- a/src/onebot/action/extends/GetGroupInfoEx.ts +++ b/src/onebot/action/extends/GetGroupInfoEx.ts @@ -1,17 +1,17 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; -const SchemaData = z.object({ - group_id: z.string(), +import { Type, Static } from '@sinclair/typebox'; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; export class GetGroupInfoEx extends OneBotAction { override actionName = ActionName.GetGroupInfoEx; override payloadSchema = SchemaData; async _handle(payload: Payload) { - return (await this.core.apis.GroupApi.getGroupExtFE0Info([payload.group_id])).result.groupExtInfos.get(payload.group_id); + return (await this.core.apis.GroupApi.getGroupExtFE0Info([payload.group_id.toString()])).result.groupExtInfos.get(payload.group_id.toString()); } } diff --git a/src/onebot/action/extends/GetMiniAppArk.ts b/src/onebot/action/extends/GetMiniAppArk.ts index e4d3c1c5..6ab90445 100644 --- a/src/onebot/action/extends/GetMiniAppArk.ts +++ b/src/onebot/action/extends/GetMiniAppArk.ts @@ -2,38 +2,38 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; import { MiniAppInfo, MiniAppInfoHelper } from '@/core/packet/utils/helper/miniAppHelper'; import { MiniAppData, MiniAppRawData, MiniAppReqCustomParams, MiniAppReqParams } from '@/core/packet/entities/miniApp'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.union([ - z.object({ - type: z.union([z.literal('bili'), z.literal('weibo')]), - title: z.string(), - desc: z.string(), - picUrl: z.string(), - jumpUrl: z.string(), - webUrl: z.string().optional(), - rawArkData: z.string().optional() +const SchemaData = Type.Union([ + Type.Object({ + type: Type.Union([Type.Literal('bili'), Type.Literal('weibo')]), + title: Type.String(), + desc: Type.String(), + picUrl: Type.String(), + jumpUrl: Type.String(), + webUrl: Type.Optional(Type.String()), + rawArkData: Type.Optional(Type.Union([Type.String()])) }), - z.object({ - title: z.string(), - desc: z.string(), - picUrl: z.string(), - jumpUrl: z.string(), - iconUrl: z.string(), - webUrl: z.string().optional(), - appId: z.string(), - scene: z.union([z.number(), z.string()]), - templateType: z.union([z.number(), z.string()]), - businessType: z.union([z.number(), z.string()]), - verType: z.union([z.number(), z.string()]), - shareType: z.union([z.number(), z.string()]), - versionId: z.string(), - sdkId: z.string(), - withShareTicket: z.union([z.number(), z.string()]), - rawArkData: z.string().optional() + Type.Object({ + title: Type.String(), + desc: Type.String(), + picUrl: Type.String(), + jumpUrl: Type.String(), + iconUrl: Type.String(), + webUrl: Type.Optional(Type.String()), + appId: Type.String(), + scene: Type.Union([Type.Number(), Type.String()]), + templateType: Type.Union([Type.Number(), Type.String()]), + businessType: Type.Union([Type.Number(), Type.String()]), + verType: Type.Union([Type.Number(), Type.String()]), + shareType: Type.Union([Type.Number(), Type.String()]), + versionId: Type.String(), + sdkId: Type.String(), + withShareTicket: Type.Union([Type.Number(), Type.String()]), + rawArkData: Type.Optional(Type.Union([Type.String()])) }) ]); -type Payload = z.infer; +type Payload = Static; export class GetMiniAppArk extends GetPacketStatusDepends; +type Payload = Static; export class GetProfileLike extends OneBotAction { uint64_uin: self_id, uint64_top: 0, uint32_req_num: 99, - bytes_cookies: '' + bytes_cookies: "" }; const packed_data = await this.pack_data(JSON.stringify(req_json)); const data = Buffer.from(packed_data).toString('hex'); diff --git a/src/onebot/action/extends/GetUserStatus.ts b/src/onebot/action/extends/GetUserStatus.ts index c090cc3a..3987c81a 100644 --- a/src/onebot/action/extends/GetUserStatus.ts +++ b/src/onebot/action/extends/GetUserStatus.ts @@ -1,18 +1,18 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - user_id: z.number(), +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; export class GetUserStatus extends GetPacketStatusDepends { override actionName = ActionName.GetUserStatus; override payloadSchema = SchemaData; async _handle(payload: Payload) { - return await this.core.apis.PacketApi.pkt.operation.GetStrangerStatus(payload.user_id); + return await this.core.apis.PacketApi.pkt.operation.GetStrangerStatus(+payload.user_id); } } diff --git a/src/onebot/action/extends/MoveGroupFile.ts b/src/onebot/action/extends/MoveGroupFile.ts index 31856e09..110551bc 100644 --- a/src/onebot/action/extends/MoveGroupFile.ts +++ b/src/onebot/action/extends/MoveGroupFile.ts @@ -1,16 +1,16 @@ import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/file-uuid'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - file_id: z.string(), - current_parent_directory: z.string(), - target_parent_directory: z.string(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), + current_parent_directory: Type.String(), + target_parent_directory: Type.String(), }); -type Payload = z.infer; +type Payload = Static; interface MoveGroupFileResponse { ok: boolean; diff --git a/src/onebot/action/extends/OCRImage.ts b/src/onebot/action/extends/OCRImage.ts index 73776de8..3b45c64e 100644 --- a/src/onebot/action/extends/OCRImage.ts +++ b/src/onebot/action/extends/OCRImage.ts @@ -2,14 +2,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { checkFileExist, uriToLocalFile } from '@/common/file'; import fs from 'fs'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import { GeneralCallResultStatus } from '@/core'; -const SchemaData = z.object({ - image: z.string(), +const SchemaData = Type.Object({ + image: Type.String(), }); -type Payload = z.infer; +type Payload = Static; class OCRImageBase extends OneBotAction { override payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/RenameGroupFile.ts b/src/onebot/action/extends/RenameGroupFile.ts index 69b4e9f6..a567ea55 100644 --- a/src/onebot/action/extends/RenameGroupFile.ts +++ b/src/onebot/action/extends/RenameGroupFile.ts @@ -1,16 +1,16 @@ import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/file-uuid'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - file_id: z.string(), - current_parent_directory: z.string(), - new_name: z.string(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), + current_parent_directory: Type.String(), + new_name: Type.String(), }); -type Payload = z.infer; +type Payload = Static; interface RenameGroupFileResponse { ok: boolean; diff --git a/src/onebot/action/extends/SendPacket.ts b/src/onebot/action/extends/SendPacket.ts index a43b894e..479b10f7 100644 --- a/src/onebot/action/extends/SendPacket.ts +++ b/src/onebot/action/extends/SendPacket.ts @@ -1,21 +1,22 @@ import { PacketHexStr } from '@/core/packet/transformer/base'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - cmd: z.string(), - data: z.string(), - rsp: z.boolean().default(true), +const SchemaData = Type.Object({ + cmd: Type.String(), + data: Type.String(), + rsp: Type.Union([Type.String(), Type.Boolean()], { default: true }), }); -type Payload = z.infer; +type Payload = Static; export class SendPacket extends GetPacketStatusDepends { override payloadSchema = SchemaData; override actionName = ActionName.SendPacket; async _handle(payload: Payload) { - const data = await this.core.apis.PacketApi.pkt.operation.sendPacket({ cmd: payload.cmd, data: payload.data as PacketHexStr }, payload.rsp); + const rsp = typeof payload.rsp === 'boolean' ? payload.rsp : payload.rsp === 'true'; + const data = await this.core.apis.PacketApi.pkt.operation.sendPacket({ cmd: payload.cmd, data: payload.data as PacketHexStr }, rsp); return typeof data === 'object' ? data.toString('hex') : undefined; } } diff --git a/src/onebot/action/extends/SetDiyOnlineStatus.ts b/src/onebot/action/extends/SetDiyOnlineStatus.ts index 2c1110ac..82e903ca 100644 --- a/src/onebot/action/extends/SetDiyOnlineStatus.ts +++ b/src/onebot/action/extends/SetDiyOnlineStatus.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - face_id: z.union([z.number(), z.string()]),// 参考 face_config.json 的 QSid - face_type: z.union([z.number(), z.string()]).default('1'), - wording: z.string().default(' '), +const SchemaData = Type.Object({ + face_id: Type.Union([Type.Number(), Type.String()]),// 参考 face_config.json 的 QSid + face_type: Type.Union([Type.Number(), Type.String()], { default: '1' }), + wording: Type.String({ default: ' ' }), }); -type Payload = z.infer; +type Payload = Static; export class SetDiyOnlineStatus extends OneBotAction { override actionName = ActionName.SetDiyOnlineStatus; diff --git a/src/onebot/action/extends/SetGroupRemark.ts b/src/onebot/action/extends/SetGroupRemark.ts index cd26beb3..a8dbf5a9 100644 --- a/src/onebot/action/extends/SetGroupRemark.ts +++ b/src/onebot/action/extends/SetGroupRemark.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.string(), - remark: z.string(), +const SchemaData = Type.Object({ + group_id: Type.String(), + remark: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupRemark extends OneBotAction { override actionName = ActionName.SetGroupRemark; diff --git a/src/onebot/action/extends/SetGroupSign.ts b/src/onebot/action/extends/SetGroupSign.ts index 9bc0775a..716aca22 100644 --- a/src/onebot/action/extends/SetGroupSign.ts +++ b/src/onebot/action/extends/SetGroupSign.ts @@ -1,12 +1,12 @@ import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; class SetGroupSignBase extends GetPacketStatusDepends { override payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/SetInputStatus.ts b/src/onebot/action/extends/SetInputStatus.ts index df8cfef5..448c00ff 100644 --- a/src/onebot/action/extends/SetInputStatus.ts +++ b/src/onebot/action/extends/SetInputStatus.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { ChatType } from '@/core'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - user_id: z.union([z.number(), z.string()]), - event_type: z.number(), +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), + event_type: Type.Number(), }); -type Payload = z.infer; +type Payload = Static; export class SetInputStatus extends OneBotAction { override actionName = ActionName.SetInputStatus; diff --git a/src/onebot/action/extends/SetLongNick.ts b/src/onebot/action/extends/SetLongNick.ts index 4403d607..5169bada 100644 --- a/src/onebot/action/extends/SetLongNick.ts +++ b/src/onebot/action/extends/SetLongNick.ts @@ -1,12 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - longNick: z.string(), +const SchemaData = Type.Object({ + longNick: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export class SetLongNick extends OneBotAction { override actionName = ActionName.SetLongNick; diff --git a/src/onebot/action/extends/SetOnlineStatus.ts b/src/onebot/action/extends/SetOnlineStatus.ts index 999ee261..6e1782e9 100644 --- a/src/onebot/action/extends/SetOnlineStatus.ts +++ b/src/onebot/action/extends/SetOnlineStatus.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - status: z.union([z.number(), z.string()]), - ext_status: z.union([z.number(), z.string()]), - battery_status: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + status: Type.Union([Type.Number(), Type.String()]), + ext_status: Type.Union([Type.Number(), Type.String()]), + battery_status: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; export class SetOnlineStatus extends OneBotAction { override actionName = ActionName.SetOnlineStatus; diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index 5fb8b50f..c4e019aa 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -2,13 +2,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import fs from 'node:fs/promises'; import { checkFileExist, uriToLocalFile } from '@/common/file'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - file: z.string(), +const SchemaData = Type.Object({ + file: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export default class SetAvatar extends OneBotAction { override actionName = ActionName.SetQQAvatar; diff --git a/src/onebot/action/extends/SetSpecialTitle.ts b/src/onebot/action/extends/SetSpecialTitle.ts index 2efe2727..7d68ff36 100644 --- a/src/onebot/action/extends/SetSpecialTitle.ts +++ b/src/onebot/action/extends/SetSpecialTitle.ts @@ -1,14 +1,14 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - user_id: z.union([z.number(), z.string()]), - special_title: z.string({ default: '' }), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + special_title: Type.String({ default: '' }), }); -type Payload = z.infer; +type Payload = Static; export class SetSpecialTitle extends GetPacketStatusDepends { override actionName = ActionName.SetSpecialTitle; diff --git a/src/onebot/action/extends/ShareContact.ts b/src/onebot/action/extends/ShareContact.ts index edf18ecb..22c8654b 100644 --- a/src/onebot/action/extends/ShareContact.ts +++ b/src/onebot/action/extends/ShareContact.ts @@ -1,15 +1,15 @@ import { GeneralCallResult } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - user_id: z.union([z.number(), z.string()]).optional(), - group_id: z.union([z.number(), z.string()]).optional(), - phoneNumber: z.string().default(''), +const SchemaData = Type.Object({ + user_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + group_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + phoneNumber: Type.String({ default: '' }), }); -type Payload = z.infer; +type Payload = Static; export class SharePeer extends OneBotAction; +type PayloadGroupEx = Static; export class ShareGroupEx extends OneBotAction { override actionName = ActionName.ShareGroupEx; diff --git a/src/onebot/action/extends/TransGroupFile.ts b/src/onebot/action/extends/TransGroupFile.ts index 746c190d..35b3275a 100644 --- a/src/onebot/action/extends/TransGroupFile.ts +++ b/src/onebot/action/extends/TransGroupFile.ts @@ -1,14 +1,14 @@ import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/file-uuid'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - file_id: z.string(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), }); -type Payload = z.infer; +type Payload = Static; interface TransGroupFileResponse { ok: boolean; diff --git a/src/onebot/action/extends/TranslateEnWordToZn.ts b/src/onebot/action/extends/TranslateEnWordToZn.ts index 46a59408..2edb8b83 100644 --- a/src/onebot/action/extends/TranslateEnWordToZn.ts +++ b/src/onebot/action/extends/TranslateEnWordToZn.ts @@ -1,12 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - words: Type.Array(z.string()), +const SchemaData = Type.Object({ + words: Type.Array(Type.String()), }); -type Payload = z.infer; +type Payload = Static; export class TranslateEnWordToZn extends OneBotAction | null> { override actionName = ActionName.TranslateEnWordToZn; diff --git a/src/onebot/action/file/GetFile.ts b/src/onebot/action/file/GetFile.ts index d2d87fa1..853261cd 100644 --- a/src/onebot/action/file/GetFile.ts +++ b/src/onebot/action/file/GetFile.ts @@ -3,7 +3,7 @@ import fs from 'fs/promises'; import { FileNapCatOneBotUUID } from '@/common/file-uuid'; import { ActionName } from '@/onebot/action/router'; import { OB11MessageImage, OB11MessageVideo } from '@/onebot/types'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; export interface GetFileResponse { file?: string; // path @@ -13,13 +13,13 @@ export interface GetFileResponse { base64?: string; } -const GetFileBase_PayloadSchema = z.object({ - file: z.string().optional(), - file_id: z.string().optional(), +const GetFileBase_PayloadSchema = Type.Object({ + file: Type.Optional(Type.String()), + file_id: Type.Optional(Type.String()) }); -export type GetFilePayload = z.infer; +export type GetFilePayload = Static; export class GetFileBase extends OneBotAction { override payloadSchema = GetFileBase_PayloadSchema; diff --git a/src/onebot/action/file/GetGroupFileUrl.ts b/src/onebot/action/file/GetGroupFileUrl.ts index ebf28021..0ae7d314 100644 --- a/src/onebot/action/file/GetGroupFileUrl.ts +++ b/src/onebot/action/file/GetGroupFileUrl.ts @@ -1,14 +1,14 @@ import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/file-uuid'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - file_id: z.string(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), }); -type Payload = z.infer; +type Payload = Static; interface GetGroupFileUrlResponse { url?: string; diff --git a/src/onebot/action/file/GetPrivateFileUrl.ts b/src/onebot/action/file/GetPrivateFileUrl.ts index 4504cc20..f592cc08 100644 --- a/src/onebot/action/file/GetPrivateFileUrl.ts +++ b/src/onebot/action/file/GetPrivateFileUrl.ts @@ -1,13 +1,13 @@ import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/file-uuid'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - file_id: z.string(), +const SchemaData = Type.Object({ + file_id: Type.String(), }); -type Payload = z.infer; +type Payload = Static; interface GetPrivateFileUrlResponse { url?: string; diff --git a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts index 4a0dea63..760929ea 100644 --- a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - folder_name: z.string(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + folder_name: Type.String(), }); -type Payload = z.infer; +type Payload = Static; interface ResponseType{ result:unknown; groupItem:unknown; diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts index 84343f54..7db532a3 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts @@ -2,15 +2,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/file-uuid'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import { NTQQGroupApi } from '@/core/apis'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - file_id: z.string(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export class DeleteGroupFile extends OneBotAction>> { override actionName = ActionName.GOCQHTTP_DeleteGroupFile; diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts index 6e12986b..818c10a0 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts @@ -1,15 +1,15 @@ import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import { NTQQGroupApi } from '@/core/apis'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - folder_id: z.string().optional(), - folder: z.string().optional(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + folder_id: Type.Optional(Type.String()), + folder: Type.Optional(Type.String()), }); -type Payload = z.infer; +type Payload = Static; export class DeleteGroupFileFolder extends OneBotAction>['groupFileCommonResult']> { override actionName = ActionName.GoCQHTTP_DeleteGroupFileFolder; diff --git a/src/onebot/action/go-cqhttp/DownloadFile.ts b/src/onebot/action/go-cqhttp/DownloadFile.ts index 30e9685f..32fabfb5 100644 --- a/src/onebot/action/go-cqhttp/DownloadFile.ts +++ b/src/onebot/action/go-cqhttp/DownloadFile.ts @@ -4,20 +4,20 @@ import fs from 'fs'; import { join as joinPath } from 'node:path'; import { calculateFileMD5, uriToLocalFile } from '@/common/file'; import { randomUUID } from 'crypto'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; interface FileResponse { file: string; } -const SchemaData = z.object({ - url: z.string().optional(), - base64: z.string().optional(), - name: z.string().optional(), - headers: z.union([z.string(), z.array(z.string())]).optional(), +const SchemaData = Type.Object({ + url: Type.Optional(Type.String()), + base64: Type.Optional(Type.String()), + name: Type.Optional(Type.String()), + headers: Type.Optional(Type.Union([Type.String(), Type.Array(Type.String())])), }); -type Payload = z.infer; +type Payload = Static; export default class GoCQHTTPDownloadFile extends OneBotAction { override actionName = ActionName.GoCQHTTP_DownloadFile; diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index 89e9cb60..5552229b 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -2,14 +2,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageForward, OB11MessageNodePlain as OB11MessageNode } from '@/onebot'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; +import { Static, Type } from '@sinclair/typebox'; import { ChatType, ElementType, MsgSourceType, NTMsgType, RawMessage } from '@/core'; -import { z } from 'zod'; -const SchemaData = z.object({ - message_id: z.union([z.number(), z.string()]).optional(), - id: z.union([z.number(), z.string()]).optional(), +const SchemaData = Type.Object({ + message_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + id: Type.Optional(Type.Union([Type.Number(), Type.String()])), }); -type Payload = z.infer; + +type Payload = Static; export class GoCQHTTPGetForwardMsgAction extends OneBotAction; +type Payload = Static; export default class GetFriendMsgHistory extends OneBotAction { override actionName = ActionName.GetFriendMsgHistory; diff --git a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts index 28d63901..5d4939d2 100644 --- a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts +++ b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts @@ -1,12 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]) +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]) }); -type Payload = z.infer; +type Payload = Static; interface ResponseType { can_at_all: boolean; remain_at_all_count_for_group: number; diff --git a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts index 8d966d35..9f740732 100644 --- a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts @@ -1,12 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]) +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]) }); -type Payload = z.infer; +type Payload = Static; export class GetGroupFileSystemInfo extends OneBotAction; +type Payload = Static; export class GetGroupFilesByFolder extends OneBotAction[], diff --git a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts index 1194b67f..9ead4af2 100644 --- a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts @@ -1,16 +1,16 @@ -import { WebHonorType } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { WebHonorType } from '@/core/types'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - type: z.nativeEnum(WebHonorType).optional() +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + type: Type.Optional(Type.Enum(WebHonorType)) }); -type Payload = z.infer; +type Payload = Static; -export class GetGroupHonorInfo extends OneBotAction { +export class GetGroupHonorInfo extends OneBotAction> { override actionName = ActionName.GetGroupHonorInfo; override payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts index 5eed6ff5..4c356df2 100644 --- a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -3,22 +3,22 @@ import { OB11Message } from '@/onebot'; import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer } from '@/core/types'; import { MessageUnique } from '@/common/message-unique'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import { NetworkAdapterConfig } from '@/onebot/config/config'; interface Response { messages: OB11Message[]; } -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - message_seq: z.union([z.number(), z.string()]).optional(), - count: z.union([z.number(), z.string()]).default(20), - reverseOrder: z.union([z.boolean(), z.string()]).optional() +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + message_seq: Type.Optional(Type.Union([Type.Number(), Type.String()])), + count: Type.Union([Type.Number(), Type.String()], { default: 20 }), + reverseOrder: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) }); -type Payload = z.infer; +type Payload = Static; export default class GoCQHTTPGetGroupMsgHistory extends OneBotAction { diff --git a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts index b990aec8..a4c1c916 100644 --- a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts +++ b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts @@ -3,14 +3,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { OB11GroupFile, OB11GroupFileFolder } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - file_count: z.union([z.number(), z.string()]).default(50), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_count: Type.Union([Type.Number(), Type.String()], { default: 50 }), }); -type Payload = z.infer; +type Payload = Static; export class GetGroupRootFiles extends OneBotAction; +type Payload = Static; export default class GoCQHTTPGetStrangerInfo extends OneBotAction { override actionName = ActionName.GoCQHTTP_GetStrangerInfo; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts index dfded410..29a9b502 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts @@ -1,12 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - url: z.string(), +const SchemaData = Type.Object({ + url: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export class GoCQHTTPCheckUrlSafely extends OneBotAction { override actionName = ActionName.GoCQHTTP_CheckUrlSafely; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts index e7ce50c4..adc02cf9 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts @@ -1,15 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - friend_id: z.union([z.string(), z.number()]).optional(), - user_id: z.union([z.string(), z.number()]).optional(), - temp_block: z.boolean().optional(), - temp_both_del: z.boolean().optional(), +const SchemaData = Type.Object({ + friend_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + user_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + temp_block: Type.Optional(Type.Boolean()), + temp_both_del: Type.Optional(Type.Boolean()), }); -type Payload = z.infer; +type Payload = Static; export class GoCQHTTPDeleteFriend extends OneBotAction { override actionName = ActionName.GoCQHTTP_DeleteFriend; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts index 1e839fe3..453db746 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts @@ -1,12 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - model: z.string(), +const SchemaData = Type.Object({ + model: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export class GoCQHTTPGetModelShow extends OneBotAction; +type Payload = Static; export class SendGroupNotice extends OneBotAction { override actionName = ActionName.GoCQHTTP_SendGroupNotice; diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index 765c9897..bfe0997f 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -1,15 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { checkFileExistV2, uriToLocalFile } from '@/common/file'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import fs from 'node:fs/promises'; import { GeneralCallResult } from '@/core'; -const SchemaData = z.object({ - file: z.string(), - group_id: z.union([z.number(), z.string()]) +const SchemaData = Type.Object({ + file: Type.String(), + group_id: Type.Union([Type.Number(), Type.String()]) }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupPortrait extends OneBotAction { override actionName = ActionName.SetGroupPortrait; diff --git a/src/onebot/action/go-cqhttp/SetQQProfile.ts b/src/onebot/action/go-cqhttp/SetQQProfile.ts index c85e4aa4..976d87b5 100644 --- a/src/onebot/action/go-cqhttp/SetQQProfile.ts +++ b/src/onebot/action/go-cqhttp/SetQQProfile.ts @@ -1,15 +1,15 @@ import { NTQQUserApi } from '@/core/apis'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - nickname: z.string(), - personal_note: z.string().optional(), - sex: z.union([z.number(), z.string()]).optional(), // 传Sex值?建议传0 +const SchemaData = Type.Object({ + nickname: Type.String(), + personal_note: Type.Optional(Type.String()), + sex: Type.Optional(Type.Union([Type.Number(), Type.String()])), // 传Sex值?建议传0 }); -type Payload = z.infer; +type Payload = Static; export class SetQQProfile extends OneBotAction> | null> { override actionName = ActionName.SetQQProfile; override payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/UploadGroupFile.ts b/src/onebot/action/go-cqhttp/UploadGroupFile.ts index 39327cde..906d7e91 100644 --- a/src/onebot/action/go-cqhttp/UploadGroupFile.ts +++ b/src/onebot/action/go-cqhttp/UploadGroupFile.ts @@ -4,17 +4,17 @@ import { ChatType, Peer } from '@/core/types'; import fs from 'fs'; import { uriToLocalFile } from '@/common/file'; import { SendMessageContext } from '@/onebot/api'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - file: z.string(), - name: z.string(), - folder: z.string().optional(), - folder_id: z.string().optional(),//临时扩展 +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file: Type.String(), + name: Type.String(), + folder: Type.Optional(Type.String()), + folder_id: Type.Optional(Type.String()),//临时扩展 }); -type Payload = z.infer; +type Payload = Static; export default class GoCQHTTPUploadGroupFile extends OneBotAction { override actionName = ActionName.GoCQHTTP_UploadGroupFile; diff --git a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts index 8cee2010..f17e3edf 100644 --- a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts +++ b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts @@ -5,15 +5,15 @@ import fs from 'fs'; import { uriToLocalFile } from '@/common/file'; import { SendMessageContext } from '@/onebot/api'; import { ContextMode, createContext } from '@/onebot/action/msg/SendMsg'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - user_id: z.union([z.number(), z.string()]), - file: z.string(), - name: z.string(), +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), + file: Type.String(), + name: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export default class GoCQHTTPUploadPrivateFile extends OneBotAction { override actionName = ActionName.GOCQHTTP_UploadPrivateFile; diff --git a/src/onebot/action/group/DelEssenceMsg.ts b/src/onebot/action/group/DelEssenceMsg.ts index b799b651..ccb20a58 100644 --- a/src/onebot/action/group/DelEssenceMsg.ts +++ b/src/onebot/action/group/DelEssenceMsg.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - message_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; export default class DelEssenceMsg extends OneBotAction { override actionName = ActionName.DelEssenceMsg; override payloadSchema = SchemaData; diff --git a/src/onebot/action/group/DelGroupNotice.ts b/src/onebot/action/group/DelGroupNotice.ts index bd2dae0a..04f9cbea 100644 --- a/src/onebot/action/group/DelGroupNotice.ts +++ b/src/onebot/action/group/DelGroupNotice.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - notice_id: z.string() +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + notice_id: Type.String() }); -type Payload = z.infer; +type Payload = Static; export class DelGroupNotice extends OneBotAction { override actionName = ActionName.DelGroupNotice; diff --git a/src/onebot/action/group/GetAiRecord.ts b/src/onebot/action/group/GetAiRecord.ts index ba30f9d9..0eeac7ab 100644 --- a/src/onebot/action/group/GetAiRecord.ts +++ b/src/onebot/action/group/GetAiRecord.ts @@ -1,15 +1,15 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; import { AIVoiceChatType } from '@/core/packet/entities/aiChat'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - character: z.string(), - group_id: z.union([z.number(), z.string()]), - text: z.string(), +const SchemaData = Type.Object({ + character: Type.String(), + group_id: Type.Union([Type.Number(), Type.String()]), + text: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export class GetAiRecord extends GetPacketStatusDepends { override actionName = ActionName.GetAiRecord; diff --git a/src/onebot/action/group/GetGroupEssence.ts b/src/onebot/action/group/GetGroupEssence.ts index 9ce8c310..91deb65c 100644 --- a/src/onebot/action/group/GetGroupEssence.ts +++ b/src/onebot/action/group/GetGroupEssence.ts @@ -3,14 +3,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; import crypto from 'crypto'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import { NetworkAdapterConfig } from '@/onebot/config/config'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; export class GetGroupEssence extends OneBotAction { override actionName = ActionName.GoCQHTTP_GetEssenceMsg; diff --git a/src/onebot/action/group/GetGroupInfo.ts b/src/onebot/action/group/GetGroupInfo.ts index 2bb5ff72..dd0a40bc 100644 --- a/src/onebot/action/group/GetGroupInfo.ts +++ b/src/onebot/action/group/GetGroupInfo.ts @@ -2,13 +2,13 @@ import { OB11Group } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; class GetGroupInfo extends OneBotAction { override actionName = ActionName.GetGroupInfo; diff --git a/src/onebot/action/group/GetGroupList.ts b/src/onebot/action/group/GetGroupList.ts index 5ed487b9..251b79aa 100644 --- a/src/onebot/action/group/GetGroupList.ts +++ b/src/onebot/action/group/GetGroupList.ts @@ -2,13 +2,13 @@ import { OB11Group } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - no_cache: z.boolean().default(false), +const SchemaData = Type.Object({ + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; class GetGroupList extends OneBotAction { override actionName = ActionName.GetGroupList; diff --git a/src/onebot/action/group/GetGroupMemberInfo.ts b/src/onebot/action/group/GetGroupMemberInfo.ts index 75834049..03938f27 100644 --- a/src/onebot/action/group/GetGroupMemberInfo.ts +++ b/src/onebot/action/group/GetGroupMemberInfo.ts @@ -2,15 +2,15 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - user_id: z.union([z.number(), z.string()]), - no_cache: z.boolean().default(false), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; class GetGroupMemberInfo extends OneBotAction { override actionName = ActionName.GetGroupMemberInfo; diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index efd5073c..41e028bf 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -2,15 +2,15 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import { GroupMember } from '@/core'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - no_cache: z.boolean().default(false) +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) }); -type Payload = z.infer; +type Payload = Static; export class GetGroupMemberList extends OneBotAction { override actionName = ActionName.GetGroupMemberList; diff --git a/src/onebot/action/group/GetGroupNotice.ts b/src/onebot/action/group/GetGroupNotice.ts index 317d712c..fe952557 100644 --- a/src/onebot/action/group/GetGroupNotice.ts +++ b/src/onebot/action/group/GetGroupNotice.ts @@ -1,7 +1,7 @@ import { WebApiGroupNoticeFeed } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; interface GroupNotice { sender_id: number; publish_time: number; @@ -16,11 +16,11 @@ interface GroupNotice { }; } -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; type ApiGroupNotice = GroupNotice & WebApiGroupNoticeFeed; diff --git a/src/onebot/action/group/GetGroupShutList.ts b/src/onebot/action/group/GetGroupShutList.ts index 3e82f5e3..05ab27de 100644 --- a/src/onebot/action/group/GetGroupShutList.ts +++ b/src/onebot/action/group/GetGroupShutList.ts @@ -1,13 +1,13 @@ import { ShutUpGroupMember } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; export class GetGroupShutList extends OneBotAction { override actionName = ActionName.GetGroupShutList; diff --git a/src/onebot/action/group/GroupPoke.ts b/src/onebot/action/group/GroupPoke.ts index c318211c..8dcc8815 100644 --- a/src/onebot/action/group/GroupPoke.ts +++ b/src/onebot/action/group/GroupPoke.ts @@ -1,13 +1,13 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - user_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; export class GroupPoke extends GetPacketStatusDepends { override actionName = ActionName.GroupPoke; diff --git a/src/onebot/action/group/SendGroupAiRecord.ts b/src/onebot/action/group/SendGroupAiRecord.ts index 1e0c3a03..7cfd5f85 100644 --- a/src/onebot/action/group/SendGroupAiRecord.ts +++ b/src/onebot/action/group/SendGroupAiRecord.ts @@ -1,15 +1,15 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; import { AIVoiceChatType } from '@/core/packet/entities/aiChat'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - character: z.string(), - group_id: z.union([z.number(), z.string()]), - text: z.string(), +const SchemaData = Type.Object({ + character: Type.String(), + group_id: Type.Union([Type.Number(), Type.String()]), + text: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export class SendGroupAiRecord extends GetPacketStatusDepends; +type Payload = Static; export default class SetEssenceMsg extends OneBotAction { override actionName = ActionName.SetEssenceMsg; diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index 8a5834e0..8cd69bcd 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -1,15 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { NTGroupRequestOperateTypes } from '@/core/types'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - flag: z.union([z.string(), z.number()]), - approve: z.boolean().default(true), - reason: z.union([z.string(), z.null()]).default(' '), +const SchemaData = Type.Object({ + flag: Type.Union([Type.String(), Type.Number()]), + approve: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), + reason: Type.Optional(Type.Union([Type.String({ default: ' ' }), Type.Null()])), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupAddRequest extends OneBotAction { override actionName = ActionName.SetGroupAddRequest; diff --git a/src/onebot/action/group/SetGroupAdmin.ts b/src/onebot/action/group/SetGroupAdmin.ts index 6ad18f06..ee70edfb 100644 --- a/src/onebot/action/group/SetGroupAdmin.ts +++ b/src/onebot/action/group/SetGroupAdmin.ts @@ -1,15 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { NTGroupMemberRole } from '@/core/types'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - user_id: z.union([z.number(), z.string()]), - enable: z.boolean().default(false), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + enable: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupAdmin extends OneBotAction { override actionName = ActionName.SetGroupAdmin; diff --git a/src/onebot/action/group/SetGroupBan.ts b/src/onebot/action/group/SetGroupBan.ts index 4312e628..3f30aa1f 100644 --- a/src/onebot/action/group/SetGroupBan.ts +++ b/src/onebot/action/group/SetGroupBan.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - user_id: z.union([z.number(), z.string()]), - duration: z.union([z.number(), z.string()]).default(0), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + duration: Type.Union([Type.Number(), Type.String()], { default: 0 }), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupBan extends OneBotAction { override actionName = ActionName.SetGroupBan; diff --git a/src/onebot/action/group/SetGroupCard.ts b/src/onebot/action/group/SetGroupCard.ts index bd45f957..2e825c68 100644 --- a/src/onebot/action/group/SetGroupCard.ts +++ b/src/onebot/action/group/SetGroupCard.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - user_id: z.union([z.number(), z.string()]), - card: z.string().optional(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + card: Type.Optional(Type.String()) }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupCard extends OneBotAction { override actionName = ActionName.SetGroupCard; diff --git a/src/onebot/action/group/SetGroupKick.ts b/src/onebot/action/group/SetGroupKick.ts index 3967ad96..7b57d48c 100644 --- a/src/onebot/action/group/SetGroupKick.ts +++ b/src/onebot/action/group/SetGroupKick.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - user_id: z.union([z.number(), z.string()]), - reject_add_request: z.union([z.boolean(), z.string()]).optional(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + reject_add_request: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupKick extends OneBotAction { override actionName = ActionName.SetGroupKick; diff --git a/src/onebot/action/group/SetGroupLeave.ts b/src/onebot/action/group/SetGroupLeave.ts index 6930af12..4d9a4083 100644 --- a/src/onebot/action/group/SetGroupLeave.ts +++ b/src/onebot/action/group/SetGroupLeave.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - is_dismiss: z.boolean().optional(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + is_dismiss: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupLeave extends OneBotAction { override actionName = ActionName.SetGroupLeave; diff --git a/src/onebot/action/group/SetGroupName.ts b/src/onebot/action/group/SetGroupName.ts index d19e9782..cde09908 100644 --- a/src/onebot/action/group/SetGroupName.ts +++ b/src/onebot/action/group/SetGroupName.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - group_name: z.string(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + group_name: Type.String(), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupName extends OneBotAction { override actionName = ActionName.SetGroupName; diff --git a/src/onebot/action/group/SetGroupWholeBan.ts b/src/onebot/action/group/SetGroupWholeBan.ts index dc1ee1a3..a4c84c44 100644 --- a/src/onebot/action/group/SetGroupWholeBan.ts +++ b/src/onebot/action/group/SetGroupWholeBan.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - group_id: z.union([z.number(), z.string()]), - enable: z.union([z.boolean(), z.string()]).optional(), +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + enable: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; export default class SetGroupWholeBan extends OneBotAction { override actionName = ActionName.SetGroupWholeBan; diff --git a/src/onebot/action/msg/DeleteMsg.ts b/src/onebot/action/msg/DeleteMsg.ts index 9aa67a30..a4b27aa2 100644 --- a/src/onebot/action/msg/DeleteMsg.ts +++ b/src/onebot/action/msg/DeleteMsg.ts @@ -1,13 +1,13 @@ import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { MessageUnique } from '@/common/message-unique'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - message_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; class DeleteMsg extends OneBotAction { override actionName = ActionName.DeleteMsg; diff --git a/src/onebot/action/msg/ForwardSingleMsg.ts b/src/onebot/action/msg/ForwardSingleMsg.ts index bc2f5546..7156159c 100644 --- a/src/onebot/action/msg/ForwardSingleMsg.ts +++ b/src/onebot/action/msg/ForwardSingleMsg.ts @@ -2,15 +2,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ChatType, Peer } from '@/core/types'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - message_id: z.union([z.number(), z.string()]), - group_id: z.string().optional(), - user_id: z.string().optional(), +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), + group_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + user_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; class ForwardSingleMsg extends OneBotAction { protected async getTargetPeer(payload: Payload): Promise { diff --git a/src/onebot/action/msg/GetMsg.ts b/src/onebot/action/msg/GetMsg.ts index 28cc629a..08b2e955 100644 --- a/src/onebot/action/msg/GetMsg.ts +++ b/src/onebot/action/msg/GetMsg.ts @@ -3,16 +3,16 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; import { RawMessage } from '@/core'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; import { NetworkAdapterConfig } from '@/onebot/config/config'; export type ReturnDataType = OB11Message -const SchemaData = z.object({ - message_id: z.union([z.number(), z.string()]), +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), }); -type Payload = z.infer; +type Payload = Static; class GetMsg extends OneBotAction { override actionName = ActionName.GetMsg; diff --git a/src/onebot/action/msg/MarkMsgAsRead.ts b/src/onebot/action/msg/MarkMsgAsRead.ts index 98f5a9cf..f36a653a 100644 --- a/src/onebot/action/msg/MarkMsgAsRead.ts +++ b/src/onebot/action/msg/MarkMsgAsRead.ts @@ -2,15 +2,15 @@ import { ChatType, Peer } from '@/core/types'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - user_id: z.union([z.string(), z.number()]).optional(), - group_id: z.union([z.string(), z.number()]).optional(), - message_id: z.union([z.string(), z.number()]).optional(), +const SchemaData = Type.Object({ + user_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + group_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + message_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), }); -type PlayloadType = z.infer; +type PlayloadType = Static; class MarkMsgAsRead extends OneBotAction { async getPeer(payload: PlayloadType): Promise { diff --git a/src/onebot/action/msg/SetMsgEmojiLike.ts b/src/onebot/action/msg/SetMsgEmojiLike.ts index b7ddf580..02ce4e01 100644 --- a/src/onebot/action/msg/SetMsgEmojiLike.ts +++ b/src/onebot/action/msg/SetMsgEmojiLike.ts @@ -1,15 +1,15 @@ import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { MessageUnique } from '@/common/message-unique'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - message_id: z.union([z.number(), z.string()]), - emoji_id: z.union([z.number(), z.string()]), - set: z.boolean().optional(), +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), + emoji_id: Type.Union([Type.Number(), Type.String()]), + set: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) }); -type Payload = z.infer; +type Payload = Static; export class SetMsgEmojiLike extends OneBotAction { override actionName = ActionName.SetMsgEmojiLike; diff --git a/src/onebot/action/packet/GetRkeyEx.ts b/src/onebot/action/packet/GetRkeyEx.ts index ca95dfbd..d330b8ee 100644 --- a/src/onebot/action/packet/GetRkeyEx.ts +++ b/src/onebot/action/packet/GetRkeyEx.ts @@ -8,7 +8,7 @@ export class GetRkeyEx extends GetPacketStatusDepends { let rkeys = await this.core.apis.PacketApi.pkt.operation.FetchRkey(); return rkeys.map(rkey => { return { - type: rkey.type === 10 ? 'private' : 'group', + type: rkey.type === 10 ? "private" : "group", rkey: rkey.rkey, created_at: rkey.time, ttl: rkey.ttl, diff --git a/src/onebot/action/packet/GetRkeyServer.ts b/src/onebot/action/packet/GetRkeyServer.ts index 17e04c35..ebfa7049 100644 --- a/src/onebot/action/packet/GetRkeyServer.ts +++ b/src/onebot/action/packet/GetRkeyServer.ts @@ -30,7 +30,7 @@ export class GetRkeyServer extends GetPacketStatusDepends; +type Payload = Static; export class SendPoke extends GetPacketStatusDepends { override actionName = ActionName.SendPoke; diff --git a/src/onebot/action/system/GetCredentials.ts b/src/onebot/action/system/GetCredentials.ts index a8d50e16..90ef79ca 100644 --- a/src/onebot/action/system/GetCredentials.ts +++ b/src/onebot/action/system/GetCredentials.ts @@ -1,17 +1,17 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; interface Response { cookies: string, token: number } -const SchemaData = z.object({ - domain: z.string() +const SchemaData = Type.Object({ + domain: Type.String() }); -type Payload = z.infer; +type Payload = Static; export class GetCredentials extends OneBotAction { diff --git a/src/onebot/action/user/FriendPoke.ts b/src/onebot/action/user/FriendPoke.ts index 644763eb..e447a987 100644 --- a/src/onebot/action/user/FriendPoke.ts +++ b/src/onebot/action/user/FriendPoke.ts @@ -1,12 +1,12 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - user_id: z.union([z.number(), z.string()]) +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]) }); -type Payload = z.infer; +type Payload = Static; export class FriendPoke extends GetPacketStatusDepends { override actionName = ActionName.FriendPoke; diff --git a/src/onebot/action/user/GetCookies.ts b/src/onebot/action/user/GetCookies.ts index bc3e34e0..00773fe3 100644 --- a/src/onebot/action/user/GetCookies.ts +++ b/src/onebot/action/user/GetCookies.ts @@ -1,16 +1,16 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; interface Response { cookies: string, bkn: string } -const SchemaData = z.object({ - domain: z.string() +const SchemaData = Type.Object({ + domain: Type.String() }); -type Payload = z.infer; +type Payload = Static; export class GetCookies extends OneBotAction { override actionName = ActionName.GetCookies; diff --git a/src/onebot/action/user/GetFriendList.ts b/src/onebot/action/user/GetFriendList.ts index 227ca12f..6850f0f6 100644 --- a/src/onebot/action/user/GetFriendList.ts +++ b/src/onebot/action/user/GetFriendList.ts @@ -2,13 +2,13 @@ import { OB11User } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - no_cache: z.boolean().optional(), +const SchemaData = Type.Object({ + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); -type Payload = z.infer; +type Payload = Static; export default class GetFriendList extends OneBotAction { override actionName = ActionName.GetFriendList; diff --git a/src/onebot/action/user/GetRecentContact.ts b/src/onebot/action/user/GetRecentContact.ts index 01b3fc0f..91f25484 100644 --- a/src/onebot/action/user/GetRecentContact.ts +++ b/src/onebot/action/user/GetRecentContact.ts @@ -2,13 +2,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { NetworkAdapterConfig } from '@/onebot/config/config'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - count: z.number().default(10), +const SchemaData = Type.Object({ + count: Type.Union([Type.Number(), Type.String()], { default: 10 }), }); -type Payload = z.infer; +type Payload = Static; export default class GetRecentContact extends OneBotAction { override actionName = ActionName.GetRecentContact; diff --git a/src/onebot/action/user/SendLike.ts b/src/onebot/action/user/SendLike.ts index 04b719c0..828b46a5 100644 --- a/src/onebot/action/user/SendLike.ts +++ b/src/onebot/action/user/SendLike.ts @@ -1,13 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - times: z.union([z.number(), z.string()]).default(1), - user_id: z.union([z.number(), z.string()]) +const SchemaData = Type.Object({ + times: Type.Union([Type.Number(), Type.String()], { default: 1 }), + user_id: Type.Union([Type.Number(), Type.String()]) }); -type Payload = z.infer; +type Payload = Static; export default class SendLike extends OneBotAction { override actionName = ActionName.SendLike; diff --git a/src/onebot/action/user/SetFriendAddRequest.ts b/src/onebot/action/user/SetFriendAddRequest.ts index 72551a9e..bda5964a 100644 --- a/src/onebot/action/user/SetFriendAddRequest.ts +++ b/src/onebot/action/user/SetFriendAddRequest.ts @@ -1,14 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { z } from 'zod'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = z.object({ - flag: z.union([z.string(), z.number()]), - approve: z.union([z.string(), z.boolean()]).default(true), - remark: z.union([z.string(), z.null()]).nullable().optional() +const SchemaData = Type.Object({ + flag: Type.Union([Type.String(), Type.Number()]), + approve: Type.Optional(Type.Union([Type.String(), Type.Boolean()])), + remark: Type.Optional(Type.String()) }); -type Payload = z.infer; +type Payload = Static; export default class SetFriendAddRequest extends OneBotAction { override actionName = ActionName.SetFriendAddRequest; diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 107a66cc..86e943eb 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -1000,16 +1000,16 @@ export class OneBotMsgApi { const calculateTotalSize = async (elements: SendMessageElement[]): Promise => { const sizePromises = elements.map(async element => { switch (element.elementType) { - case ElementType.PTT: - return (await fsPromise.stat(element.pttElement.filePath)).size; - case ElementType.FILE: - return (await fsPromise.stat(element.fileElement.filePath)).size; - case ElementType.VIDEO: - return (await fsPromise.stat(element.videoElement.filePath)).size; - case ElementType.PIC: - return (await fsPromise.stat(element.picElement.sourcePath)).size; - default: - return 0; + case ElementType.PTT: + return (await fsPromise.stat(element.pttElement.filePath)).size; + case ElementType.FILE: + return (await fsPromise.stat(element.fileElement.filePath)).size; + case ElementType.VIDEO: + return (await fsPromise.stat(element.videoElement.filePath)).size; + case ElementType.PIC: + return (await fsPromise.stat(element.picElement.sourcePath)).size; + default: + return 0; } }); const sizes = await Promise.all(sizePromises); @@ -1099,14 +1099,14 @@ export class OneBotMsgApi { groupChangDecreseType2String(type: number): GroupDecreaseSubType { switch (type) { - case 130: - return 'leave'; - case 131: - return 'kick'; - case 3: - return 'kick_me'; - default: - return 'kick'; + case 130: + return 'leave'; + case 131: + return 'kick'; + case 3: + return 'kick_me'; + default: + return 'kick'; } } diff --git a/src/onebot/config/config.ts b/src/onebot/config/config.ts index ffc29339..cfa9c4a1 100644 --- a/src/onebot/config/config.ts +++ b/src/onebot/config/config.ts @@ -1,107 +1,108 @@ -import { z } from 'zod'; +import { Type, Static } from '@sinclair/typebox'; +import Ajv from 'ajv'; -const HttpServerConfigSchema = z.object({ - name: z.string().default('http-server'), - enable: z.boolean().default(false), - port: z.number().default(3000), - host: z.string().default('0.0.0.0'), - enableCors: z.boolean().default(true), - enableWebsocket: z.boolean().default(true), - messagePostFormat: z.string().default('array'), - token: z.string().default(''), - debug: z.boolean().default(false) +const HttpServerConfigSchema = Type.Object({ + name: Type.String({ default: 'http-server' }), + enable: Type.Boolean({ default: false }), + port: Type.Number({ default: 3000 }), + host: Type.String({ default: '0.0.0.0' }), + enableCors: Type.Boolean({ default: true }), + enableWebsocket: Type.Boolean({ default: true }), + messagePostFormat: Type.String({ default: 'array' }), + token: Type.String({ default: '' }), + debug: Type.Boolean({ default: false }) }); -const HttpSseServerConfigSchema = z.object({ - name: z.string().default('http-sse-server'), - enable: z.boolean().default(false), - port: z.number().default(3000), - host: z.string().default('0.0.0.0'), - enableCors: z.boolean().default(true), - enableWebsocket: z.boolean().default(true), - messagePostFormat: z.string().default('array'), - token: z.string().default(''), - debug: z.boolean().default(false), - reportSelfMessage: z.boolean().default(false) +const HttpSseServerConfigSchema = Type.Object({ + name: Type.String({ default: 'http-sse-server' }), + enable: Type.Boolean({ default: false }), + port: Type.Number({ default: 3000 }), + host: Type.String({ default: '0.0.0.0' }), + enableCors: Type.Boolean({ default: true }), + enableWebsocket: Type.Boolean({ default: true }), + messagePostFormat: Type.String({ default: 'array' }), + token: Type.String({ default: '' }), + debug: Type.Boolean({ default: false }), + reportSelfMessage: Type.Boolean({ default: false }) }); -const HttpClientConfigSchema = z.object({ - name: z.string().default('http-client'), - enable: z.boolean().default(false), - url: z.string().default('http://localhost:8080'), - messagePostFormat: z.string().default('array'), - reportSelfMessage: z.boolean().default(false), - token: z.string().default(''), - debug: z.boolean().default(false) +const HttpClientConfigSchema = Type.Object({ + name: Type.String({ default: 'http-client' }), + enable: Type.Boolean({ default: false }), + url: Type.String({ default: 'http://localhost:8080' }), + messagePostFormat: Type.String({ default: 'array' }), + reportSelfMessage: Type.Boolean({ default: false }), + token: Type.String({ default: '' }), + debug: Type.Boolean({ default: false }) }); -const WebsocketServerConfigSchema = z.object({ - name: z.string().default('websocket-server'), - enable: z.boolean().default(false), - host: z.string().default('0.0.0.0'), - port: z.number().default(3001), - messagePostFormat: z.string().default('array'), - reportSelfMessage: z.boolean().default(false), - token: z.string().default(''), - enableForcePushEvent: z.boolean().default(true), - debug: z.boolean().default(false), - heartInterval: z.number().default(30000) +const WebsocketServerConfigSchema = Type.Object({ + name: Type.String({ default: 'websocket-server' }), + enable: Type.Boolean({ default: false }), + host: Type.String({ default: '0.0.0.0' }), + port: Type.Number({ default: 3001 }), + messagePostFormat: Type.String({ default: 'array' }), + reportSelfMessage: Type.Boolean({ default: false }), + token: Type.String({ default: '' }), + enableForcePushEvent: Type.Boolean({ default: true }), + debug: Type.Boolean({ default: false }), + heartInterval: Type.Number({ default: 30000 }) }); -const WebsocketClientConfigSchema = z.object({ - name: z.string().default('websocket-client'), - enable: z.boolean().default(false), - url: z.string().default('ws://localhost:8082'), - messagePostFormat: z.string().default('array'), - reportSelfMessage: z.boolean().default(false), - reconnectInterval: z.number().default(5000), - token: z.string().default(''), - debug: z.boolean().default(false), - heartInterval: z.number().default(30000) +const WebsocketClientConfigSchema = Type.Object({ + name: Type.String({ default: 'websocket-client' }), + enable: Type.Boolean({ default: false }), + url: Type.String({ default: 'ws://localhost:8082' }), + messagePostFormat: Type.String({ default: 'array' }), + reportSelfMessage: Type.Boolean({ default: false }), + reconnectInterval: Type.Number({ default: 5000 }), + token: Type.String({ default: '' }), + debug: Type.Boolean({ default: false }), + heartInterval: Type.Number({ default: 30000 }) }); -const PluginConfigSchema = z.object({ - name: z.string().default('plugin'), - enable: z.boolean().default(false), - messagePostFormat: z.string().default('array'), - reportSelfMessage: z.boolean().default(false), - debug: z.boolean().default(false), +const PluginConfigSchema = Type.Object({ + name: Type.String({ default: 'plugin' }), + enable: Type.Boolean({ default: false }), + messagePostFormat: Type.String({ default: 'array' }), + reportSelfMessage: Type.Boolean({ default: false }), + debug: Type.Boolean({ default: false }), }); -const NetworkConfigSchema = z.object({ - httpServers: z.array(HttpServerConfigSchema).default([]), - httpSseServers: z.array(HttpSseServerConfigSchema).default([]), - httpClients: z.array(HttpClientConfigSchema).default([]), - websocketServers: z.array(WebsocketServerConfigSchema).default([]), - websocketClients: z.array(WebsocketClientConfigSchema).default([]), - plugins: z.array(PluginConfigSchema).default([]) -}).default({}); +const NetworkConfigSchema = Type.Object({ + httpServers: Type.Array(HttpServerConfigSchema, { default: [] }), + httpSseServers: Type.Array(HttpSseServerConfigSchema, { default: [] }), + httpClients: Type.Array(HttpClientConfigSchema, { default: [] }), + websocketServers: Type.Array(WebsocketServerConfigSchema, { default: [] }), + websocketClients: Type.Array(WebsocketClientConfigSchema, { default: [] }), + plugins: Type.Array(PluginConfigSchema, { default: [] }) +}, { default: {} }); -export const OneBotConfigSchema = z.object({ +export const OneBotConfigSchema = Type.Object({ network: NetworkConfigSchema, - musicSignUrl: z.string().default(''), - enableLocalFile2Url: z.boolean().default(false), - parseMultMsg: z.boolean().default(false) + musicSignUrl: Type.String({ default: '' }), + enableLocalFile2Url: Type.Boolean({ default: false }), + parseMultMsg: Type.Boolean({ default: false }) }); -export type OneBotConfig = z.infer; -export type HttpServerConfig = z.infer; -export type HttpSseServerConfig = z.infer; -export type HttpClientConfig = z.infer; -export type WebsocketServerConfig = z.infer; -export type WebsocketClientConfig = z.infer; -export type PluginConfig = z.infer; +export type OneBotConfig = Static; +export type HttpServerConfig = Static; +export type HttpSseServerConfig = Static; +export type HttpClientConfig = Static; +export type WebsocketServerConfig = Static; +export type WebsocketClientConfig = Static; +export type PluginConfig = Static; export type NetworkAdapterConfig = HttpServerConfig | HttpSseServerConfig | HttpClientConfig | WebsocketServerConfig | WebsocketClientConfig | PluginConfig; export type NetworkConfigKey = keyof OneBotConfig['network']; + export function loadConfig(config: Partial): OneBotConfig { - try { - return OneBotConfigSchema.parse(config); - } catch (error) { - if (error instanceof z.ZodError) { - throw new Error(error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')); - } - throw error; + const ajv = new Ajv({ useDefaults: true, coerceTypes: true }); + const validate = ajv.compile(OneBotConfigSchema); + const valid = validate(config); + if (!valid) { + throw new Error(ajv.errorsText(validate.errors)); } + return config as OneBotConfig; } \ No newline at end of file diff --git a/src/onebot/config/index.ts b/src/onebot/config/index.ts index 7e40d5d0..2c1f8221 100644 --- a/src/onebot/config/index.ts +++ b/src/onebot/config/index.ts @@ -1,11 +1,10 @@ import { ConfigBase } from '@/common/config-base'; import type { NapCatCore } from '@/core'; import { OneBotConfig } from './config'; -import { z } from 'zod'; - +import { AnySchema } from 'ajv'; export class OB11ConfigLoader extends ConfigBase { - constructor(core: NapCatCore, configPath: string, schema: z.ZodType) { + constructor(core: NapCatCore, configPath: string, schema: AnySchema) { super('onebot11', core, configPath, schema); } } diff --git a/src/shell/base.ts b/src/shell/base.ts index a8e53b34..540e19cb 100644 --- a/src/shell/base.ts +++ b/src/shell/base.ts @@ -143,7 +143,7 @@ async function handleLogin( handleLoginInner(context, logger, loginService, quickLoginUin, historyLoginList).then().catch(e => logger.logError(e)); loginListener.onLoginConnected = () => { }; }); - }; + } loginListener.onQRCodeGetPicture = ({ pngBase64QrcodeData, qrcodeUrl }) => { WebUiDataRuntime.setQQLoginQrcodeURL(qrcodeUrl); diff --git a/src/webui/src/helper/config.ts b/src/webui/src/helper/config.ts index d6455c68..a21b3639 100644 --- a/src/webui/src/helper/config.ts +++ b/src/webui/src/helper/config.ts @@ -1,27 +1,33 @@ import { webUiPathWrapper } from '@/webui'; +import { Type, Static } from '@sinclair/typebox'; +import Ajv from 'ajv'; import fs, { constants } from 'node:fs/promises'; + import { resolve } from 'node:path'; + import { deepMerge } from '../utils/object'; import { themeType } from '../types/theme'; -import { z } from 'zod'; + +// 限制尝试端口的次数,避免死循环 + // 定义配置的类型 -const WebUiConfigSchema = z.object({ - host: z.string().default('0.0.0.0'), - port: z.number().default(6099), - token: z.string().default('napcat'), - loginRate: z.number().default(10), - autoLoginAccount: z.string().default(''), +const WebUiConfigSchema = Type.Object({ + host: Type.String({ default: '0.0.0.0' }), + port: Type.Number({ default: 6099 }), + token: Type.String({ default: 'napcat' }), + loginRate: Type.Number({ default: 10 }), + autoLoginAccount: Type.String({ default: '' }), theme: themeType, }); -export type WebUiConfigType = z.infer; +export type WebUiConfigType = Static; // 读取当前目录下名为 webui.json 的配置文件,如果不存在则创建初始化配置文件 export class WebUiConfigWrapper { WebUiConfigData: WebUiConfigType | undefined = undefined; private validateAndApplyDefaults(config: Partial): WebUiConfigType { - config = WebUiConfigSchema.parse(config); + new Ajv({ coerceTypes: true, useDefaults: true }).compile(WebUiConfigSchema)(config); return config as WebUiConfigType; } diff --git a/src/webui/src/types/theme.ts b/src/webui/src/types/theme.ts index f265a0bc..593eb96c 100644 --- a/src/webui/src/types/theme.ts +++ b/src/webui/src/types/theme.ts @@ -1,260 +1,260 @@ -import { z } from 'zod'; +import { Type } from '@sinclair/typebox'; -export const themeType = z.object( +export const themeType = Type.Object( { - // dark: Type.Record(Type.String(), Type.String()), - // light: Type.Record(Type.String(), Type.String()), - dark: z.record(z.string(), z.string()), - light: z.record(z.string(), z.string()), + dark: Type.Record(Type.String(), Type.String()), + light: Type.Record(Type.String(), Type.String()), + }, + { + default: { + dark: { + '--heroui-background': '0 0% 0%', + '--heroui-foreground-50': '240 5.88% 10%', + '--heroui-foreground-100': '240 3.7% 15.88%', + '--heroui-foreground-200': '240 5.26% 26.08%', + '--heroui-foreground-300': '240 5.2% 33.92%', + '--heroui-foreground-400': '240 3.83% 46.08%', + '--heroui-foreground-500': '240 5.03% 64.9%', + '--heroui-foreground-600': '240 4.88% 83.92%', + '--heroui-foreground-700': '240 5.88% 90%', + '--heroui-foreground-800': '240 4.76% 95.88%', + '--heroui-foreground-900': '0 0% 98.04%', + '--heroui-foreground': '210 5.56% 92.94%', + '--heroui-focus': '212.01999999999998 100% 46.67%', + '--heroui-overlay': '0 0% 0%', + '--heroui-divider': '0 0% 100%', + '--heroui-divider-opacity': '0.15', + '--heroui-content1': '240 5.88% 10%', + '--heroui-content1-foreground': '0 0% 98.04%', + '--heroui-content2': '240 3.7% 15.88%', + '--heroui-content2-foreground': '240 4.76% 95.88%', + '--heroui-content3': '240 5.26% 26.08%', + '--heroui-content3-foreground': '240 5.88% 90%', + '--heroui-content4': '240 5.2% 33.92%', + '--heroui-content4-foreground': '240 4.88% 83.92%', + '--heroui-default-50': '240 5.88% 10%', + '--heroui-default-100': '240 3.7% 15.88%', + '--heroui-default-200': '240 5.26% 26.08%', + '--heroui-default-300': '240 5.2% 33.92%', + '--heroui-default-400': '240 3.83% 46.08%', + '--heroui-default-500': '240 5.03% 64.9%', + '--heroui-default-600': '240 4.88% 83.92%', + '--heroui-default-700': '240 5.88% 90%', + '--heroui-default-800': '240 4.76% 95.88%', + '--heroui-default-900': '0 0% 98.04%', + '--heroui-default-foreground': '0 0% 100%', + '--heroui-default': '240 5.26% 26.08%', + '--heroui-danger-50': '301.89 82.61% 22.55%', + '--heroui-danger-100': '308.18 76.39% 28.24%', + '--heroui-danger-200': '313.85 70.65% 36.08%', + '--heroui-danger-300': '319.73 65.64% 44.51%', + '--heroui-danger-400': '325.82 69.62% 53.53%', + '--heroui-danger-500': '331.82 75% 65.49%', + '--heroui-danger-600': '337.84 83.46% 73.92%', + '--heroui-danger-700': '343.42 90.48% 83.53%', + '--heroui-danger-800': '350.53 90.48% 91.76%', + '--heroui-danger-900': '324 90.91% 95.69%', + '--heroui-danger-foreground': '0 0% 100%', + '--heroui-danger': '325.82 69.62% 53.53%', + '--heroui-primary-50': '340 84.91% 10.39%', + '--heroui-primary-100': '339.33 86.54% 20.39%', + '--heroui-primary-200': '339.11 85.99% 30.78%', + '--heroui-primary-300': '339 86.54% 40.78%', + '--heroui-primary-400': '339.2 90.36% 51.18%', + '--heroui-primary-500': '339 90% 60.78%', + '--heroui-primary-600': '339.11 90.6% 70.78%', + '--heroui-primary-700': '339.33 90% 80.39%', + '--heroui-primary-800': '340 91.84% 90.39%', + '--heroui-primary-900': '339.13 92% 95.1%', + '--heroui-primary-foreground': '0 0% 100%', + '--heroui-primary': '339.2 90.36% 51.18%', + '--heroui-secondary-50': '270 66.67% 9.41%', + '--heroui-secondary-100': '270 66.67% 18.82%', + '--heroui-secondary-200': '270 66.67% 28.24%', + '--heroui-secondary-300': '270 66.67% 37.65%', + '--heroui-secondary-400': '270 66.67% 47.06%', + '--heroui-secondary-500': '270 59.26% 57.65%', + '--heroui-secondary-600': '270 59.26% 68.24%', + '--heroui-secondary-700': '270 59.26% 78.82%', + '--heroui-secondary-800': '270 59.26% 89.41%', + '--heroui-secondary-900': '270 61.54% 94.9%', + '--heroui-secondary-foreground': '0 0% 100%', + '--heroui-secondary': '270 59.26% 57.65%', + '--heroui-success-50': '145.71 77.78% 8.82%', + '--heroui-success-100': '146.2 79.78% 17.45%', + '--heroui-success-200': '145.79 79.26% 26.47%', + '--heroui-success-300': '146.01 79.89% 35.1%', + '--heroui-success-400': '145.96 79.46% 43.92%', + '--heroui-success-500': '146.01 62.45% 55.1%', + '--heroui-success-600': '145.79 62.57% 66.47%', + '--heroui-success-700': '146.2 61.74% 77.45%', + '--heroui-success-800': '145.71 61.4% 88.82%', + '--heroui-success-900': '146.67 64.29% 94.51%', + '--heroui-success-foreground': '0 0% 0%', + '--heroui-success': '145.96 79.46% 43.92%', + '--heroui-warning-50': '37.14 75% 10.98%', + '--heroui-warning-100': '37.14 75% 21.96%', + '--heroui-warning-200': '36.96 73.96% 33.14%', + '--heroui-warning-300': '37.01 74.22% 44.12%', + '--heroui-warning-400': '37.03 91.27% 55.1%', + '--heroui-warning-500': '37.01 91.26% 64.12%', + '--heroui-warning-600': '36.96 91.24% 73.14%', + '--heroui-warning-700': '37.14 91.3% 81.96%', + '--heroui-warning-800': '37.14 91.3% 90.98%', + '--heroui-warning-900': '54.55 91.67% 95.29%', + '--heroui-warning-foreground': '0 0% 0%', + '--heroui-warning': '37.03 91.27% 55.1%', + '--heroui-code-background': '240 5.56% 7.06%', + '--heroui-strong': '190.14 94.67% 44.12%', + '--heroui-code-mdx': '190.14 94.67% 44.12%', + '--heroui-divider-weight': '1px', + '--heroui-disabled-opacity': '.5', + '--heroui-font-size-tiny': '0.75rem', + '--heroui-font-size-small': '0.875rem', + '--heroui-font-size-medium': '1rem', + '--heroui-font-size-large': '1.125rem', + '--heroui-line-height-tiny': '1rem', + '--heroui-line-height-small': '1.25rem', + '--heroui-line-height-medium': '1.5rem', + '--heroui-line-height-large': '1.75rem', + '--heroui-radius-small': '8px', + '--heroui-radius-medium': '12px', + '--heroui-radius-large': '14px', + '--heroui-border-width-small': '1px', + '--heroui-border-width-medium': '2px', + '--heroui-border-width-large': '3px', + '--heroui-box-shadow-small': + '0px 0px 5px 0px rgba(0, 0, 0, .05), 0px 2px 10px 0px rgba(0, 0, 0, .2), inset 0px 0px 1px 0px hsla(0, 0%, 100%, .15)', + '--heroui-box-shadow-medium': + '0px 0px 15px 0px rgba(0, 0, 0, .06), 0px 2px 30px 0px rgba(0, 0, 0, .22), inset 0px 0px 1px 0px hsla(0, 0%, 100%, .15)', + '--heroui-box-shadow-large': + '0px 0px 30px 0px rgba(0, 0, 0, .07), 0px 30px 60px 0px rgba(0, 0, 0, .26), inset 0px 0px 1px 0px hsla(0, 0%, 100%, .15)', + '--heroui-hover-opacity': '.9', + }, + light: { + '--heroui-background': '0 0% 100%', + '--heroui-foreground-50': '240 5.88% 95%', + '--heroui-foreground-100': '240 3.7% 90%', + '--heroui-foreground-200': '240 5.26% 80%', + '--heroui-foreground-300': '240 5.2% 70%', + '--heroui-foreground-400': '240 3.83% 60%', + '--heroui-foreground-500': '240 5.03% 50%', + '--heroui-foreground-600': '240 4.88% 40%', + '--heroui-foreground-700': '240 5.88% 30%', + '--heroui-foreground-800': '240 4.76% 20%', + '--heroui-foreground-900': '0 0% 10%', + '--heroui-foreground': '210 5.56% 7.06%', + '--heroui-focus': '212.01999999999998 100% 53.33%', + '--heroui-overlay': '0 0% 100%', + '--heroui-divider': '0 0% 0%', + '--heroui-divider-opacity': '0.85', + '--heroui-content1': '240 5.88% 95%', + '--heroui-content1-foreground': '0 0% 10%', + '--heroui-content2': '240 3.7% 90%', + '--heroui-content2-foreground': '240 4.76% 20%', + '--heroui-content3': '240 5.26% 80%', + '--heroui-content3-foreground': '240 5.88% 30%', + '--heroui-content4': '240 5.2% 70%', + '--heroui-content4-foreground': '240 4.88% 40%', + '--heroui-default-50': '240 5.88% 95%', + '--heroui-default-100': '240 3.7% 90%', + '--heroui-default-200': '240 5.26% 80%', + '--heroui-default-300': '240 5.2% 70%', + '--heroui-default-400': '240 3.83% 60%', + '--heroui-default-500': '240 5.03% 50%', + '--heroui-default-600': '240 4.88% 40%', + '--heroui-default-700': '240 5.88% 30%', + '--heroui-default-800': '240 4.76% 20%', + '--heroui-default-900': '0 0% 10%', + '--heroui-default-foreground': '0 0% 0%', + '--heroui-default': '240 5.26% 80%', + '--heroui-danger-50': '324 90.91% 95.69%', + '--heroui-danger-100': '350.53 90.48% 91.76%', + '--heroui-danger-200': '343.42 90.48% 83.53%', + '--heroui-danger-300': '337.84 83.46% 73.92%', + '--heroui-danger-400': '331.82 75% 65.49%', + '--heroui-danger-500': '325.82 69.62% 53.53%', + '--heroui-danger-600': '319.73 65.64% 44.51%', + '--heroui-danger-700': '313.85 70.65% 36.08%', + '--heroui-danger-800': '308.18 76.39% 28.24%', + '--heroui-danger-900': '301.89 82.61% 22.55%', + '--heroui-danger-foreground': '0 0% 100%', + '--heroui-danger': '325.82 69.62% 53.53%', + '--heroui-primary-50': '339.13 92% 95.1%', + '--heroui-primary-100': '340 91.84% 90.39%', + '--heroui-primary-200': '339.33 90% 80.39%', + '--heroui-primary-300': '339.11 90.6% 70.78%', + '--heroui-primary-400': '339 90% 60.78%', + '--heroui-primary-500': '339.2 90.36% 51.18%', + '--heroui-primary-600': '339 86.54% 40.78%', + '--heroui-primary-700': '339.11 85.99% 30.78%', + '--heroui-primary-800': '339.33 86.54% 20.39%', + '--heroui-primary-900': '340 84.91% 10.39%', + '--heroui-primary-foreground': '0 0% 100%', + '--heroui-primary': '339.2 90.36% 51.18%', + '--heroui-secondary-50': '270 61.54% 94.9%', + '--heroui-secondary-100': '270 59.26% 89.41%', + '--heroui-secondary-200': '270 59.26% 78.82%', + '--heroui-secondary-300': '270 59.26% 68.24%', + '--heroui-secondary-400': '270 59.26% 57.65%', + '--heroui-secondary-500': '270 66.67% 47.06%', + '--heroui-secondary-600': '270 66.67% 37.65%', + '--heroui-secondary-700': '270 66.67% 28.24%', + '--heroui-secondary-800': '270 66.67% 18.82%', + '--heroui-secondary-900': '270 66.67% 9.41%', + '--heroui-secondary-foreground': '0 0% 100%', + '--heroui-secondary': '270 66.67% 47.06%', + '--heroui-success-50': '146.67 64.29% 94.51%', + '--heroui-success-100': '145.71 61.4% 88.82%', + '--heroui-success-200': '146.2 61.74% 77.45%', + '--heroui-success-300': '145.79 62.57% 66.47%', + '--heroui-success-400': '146.01 62.45% 55.1%', + '--heroui-success-500': '145.96 79.46% 43.92%', + '--heroui-success-600': '146.01 79.89% 35.1%', + '--heroui-success-700': '145.79 79.26% 26.47%', + '--heroui-success-800': '146.2 79.78% 17.45%', + '--heroui-success-900': '145.71 77.78% 8.82%', + '--heroui-success-foreground': '0 0% 0%', + '--heroui-success': '145.96 79.46% 43.92%', + '--heroui-warning-50': '54.55 91.67% 95.29%', + '--heroui-warning-100': '37.14 91.3% 90.98%', + '--heroui-warning-200': '37.14 91.3% 81.96%', + '--heroui-warning-300': '36.96 91.24% 73.14%', + '--heroui-warning-400': '37.01 91.26% 64.12%', + '--heroui-warning-500': '37.03 91.27% 55.1%', + '--heroui-warning-600': '37.01 74.22% 44.12%', + '--heroui-warning-700': '36.96 73.96% 33.14%', + '--heroui-warning-800': '37.14 75% 21.96%', + '--heroui-warning-900': '37.14 75% 10.98%', + '--heroui-warning-foreground': '0 0% 0%', + '--heroui-warning': '37.03 91.27% 55.1%', + '--heroui-code-background': '221.25 17.39% 18.04%', + '--heroui-strong': '316.95 100% 65.29%', + '--heroui-code-mdx': '316.95 100% 65.29%', + '--heroui-divider-weight': '1px', + '--heroui-disabled-opacity': '.5', + '--heroui-font-size-tiny': '0.75rem', + '--heroui-font-size-small': '0.875rem', + '--heroui-font-size-medium': '1rem', + '--heroui-font-size-large': '1.125rem', + '--heroui-line-height-tiny': '1rem', + '--heroui-line-height-small': '1.25rem', + '--heroui-line-height-medium': '1.5rem', + '--heroui-line-height-large': '1.75rem', + '--heroui-radius-small': '8px', + '--heroui-radius-medium': '12px', + '--heroui-radius-large': '14px', + '--heroui-border-width-small': '1px', + '--heroui-border-width-medium': '2px', + '--heroui-border-width-large': '3px', + '--heroui-box-shadow-small': + '0px 0px 5px 0px rgba(0, 0, 0, .02), 0px 2px 10px 0px rgba(0, 0, 0, .06), 0px 0px 1px 0px rgba(0, 0, 0, .3)', + '--heroui-box-shadow-medium': + '0px 0px 15px 0px rgba(0, 0, 0, .03), 0px 2px 30px 0px rgba(0, 0, 0, .08), 0px 0px 1px 0px rgba(0, 0, 0, .3)', + '--heroui-box-shadow-large': + '0px 0px 30px 0px rgba(0, 0, 0, .04), 0px 30px 60px 0px rgba(0, 0, 0, .12), 0px 0px 1px 0px rgba(0, 0, 0, .3)', + '--heroui-hover-opacity': '.8', + }, + }, } -).default({ - dark: { - '--heroui-background': '0 0% 0%', - '--heroui-foreground-50': '240 5.88% 10%', - '--heroui-foreground-100': '240 3.7% 15.88%', - '--heroui-foreground-200': '240 5.26% 26.08%', - '--heroui-foreground-300': '240 5.2% 33.92%', - '--heroui-foreground-400': '240 3.83% 46.08%', - '--heroui-foreground-500': '240 5.03% 64.9%', - '--heroui-foreground-600': '240 4.88% 83.92%', - '--heroui-foreground-700': '240 5.88% 90%', - '--heroui-foreground-800': '240 4.76% 95.88%', - '--heroui-foreground-900': '0 0% 98.04%', - '--heroui-foreground': '210 5.56% 92.94%', - '--heroui-focus': '212.01999999999998 100% 46.67%', - '--heroui-overlay': '0 0% 0%', - '--heroui-divider': '0 0% 100%', - '--heroui-divider-opacity': '0.15', - '--heroui-content1': '240 5.88% 10%', - '--heroui-content1-foreground': '0 0% 98.04%', - '--heroui-content2': '240 3.7% 15.88%', - '--heroui-content2-foreground': '240 4.76% 95.88%', - '--heroui-content3': '240 5.26% 26.08%', - '--heroui-content3-foreground': '240 5.88% 90%', - '--heroui-content4': '240 5.2% 33.92%', - '--heroui-content4-foreground': '240 4.88% 83.92%', - '--heroui-default-50': '240 5.88% 10%', - '--heroui-default-100': '240 3.7% 15.88%', - '--heroui-default-200': '240 5.26% 26.08%', - '--heroui-default-300': '240 5.2% 33.92%', - '--heroui-default-400': '240 3.83% 46.08%', - '--heroui-default-500': '240 5.03% 64.9%', - '--heroui-default-600': '240 4.88% 83.92%', - '--heroui-default-700': '240 5.88% 90%', - '--heroui-default-800': '240 4.76% 95.88%', - '--heroui-default-900': '0 0% 98.04%', - '--heroui-default-foreground': '0 0% 100%', - '--heroui-default': '240 5.26% 26.08%', - '--heroui-danger-50': '301.89 82.61% 22.55%', - '--heroui-danger-100': '308.18 76.39% 28.24%', - '--heroui-danger-200': '313.85 70.65% 36.08%', - '--heroui-danger-300': '319.73 65.64% 44.51%', - '--heroui-danger-400': '325.82 69.62% 53.53%', - '--heroui-danger-500': '331.82 75% 65.49%', - '--heroui-danger-600': '337.84 83.46% 73.92%', - '--heroui-danger-700': '343.42 90.48% 83.53%', - '--heroui-danger-800': '350.53 90.48% 91.76%', - '--heroui-danger-900': '324 90.91% 95.69%', - '--heroui-danger-foreground': '0 0% 100%', - '--heroui-danger': '325.82 69.62% 53.53%', - '--heroui-primary-50': '340 84.91% 10.39%', - '--heroui-primary-100': '339.33 86.54% 20.39%', - '--heroui-primary-200': '339.11 85.99% 30.78%', - '--heroui-primary-300': '339 86.54% 40.78%', - '--heroui-primary-400': '339.2 90.36% 51.18%', - '--heroui-primary-500': '339 90% 60.78%', - '--heroui-primary-600': '339.11 90.6% 70.78%', - '--heroui-primary-700': '339.33 90% 80.39%', - '--heroui-primary-800': '340 91.84% 90.39%', - '--heroui-primary-900': '339.13 92% 95.1%', - '--heroui-primary-foreground': '0 0% 100%', - '--heroui-primary': '339.2 90.36% 51.18%', - '--heroui-secondary-50': '270 66.67% 9.41%', - '--heroui-secondary-100': '270 66.67% 18.82%', - '--heroui-secondary-200': '270 66.67% 28.24%', - '--heroui-secondary-300': '270 66.67% 37.65%', - '--heroui-secondary-400': '270 66.67% 47.06%', - '--heroui-secondary-500': '270 59.26% 57.65%', - '--heroui-secondary-600': '270 59.26% 68.24%', - '--heroui-secondary-700': '270 59.26% 78.82%', - '--heroui-secondary-800': '270 59.26% 89.41%', - '--heroui-secondary-900': '270 61.54% 94.9%', - '--heroui-secondary-foreground': '0 0% 100%', - '--heroui-secondary': '270 59.26% 57.65%', - '--heroui-success-50': '145.71 77.78% 8.82%', - '--heroui-success-100': '146.2 79.78% 17.45%', - '--heroui-success-200': '145.79 79.26% 26.47%', - '--heroui-success-300': '146.01 79.89% 35.1%', - '--heroui-success-400': '145.96 79.46% 43.92%', - '--heroui-success-500': '146.01 62.45% 55.1%', - '--heroui-success-600': '145.79 62.57% 66.47%', - '--heroui-success-700': '146.2 61.74% 77.45%', - '--heroui-success-800': '145.71 61.4% 88.82%', - '--heroui-success-900': '146.67 64.29% 94.51%', - '--heroui-success-foreground': '0 0% 0%', - '--heroui-success': '145.96 79.46% 43.92%', - '--heroui-warning-50': '37.14 75% 10.98%', - '--heroui-warning-100': '37.14 75% 21.96%', - '--heroui-warning-200': '36.96 73.96% 33.14%', - '--heroui-warning-300': '37.01 74.22% 44.12%', - '--heroui-warning-400': '37.03 91.27% 55.1%', - '--heroui-warning-500': '37.01 91.26% 64.12%', - '--heroui-warning-600': '36.96 91.24% 73.14%', - '--heroui-warning-700': '37.14 91.3% 81.96%', - '--heroui-warning-800': '37.14 91.3% 90.98%', - '--heroui-warning-900': '54.55 91.67% 95.29%', - '--heroui-warning-foreground': '0 0% 0%', - '--heroui-warning': '37.03 91.27% 55.1%', - '--heroui-code-background': '240 5.56% 7.06%', - '--heroui-strong': '190.14 94.67% 44.12%', - '--heroui-code-mdx': '190.14 94.67% 44.12%', - '--heroui-divider-weight': '1px', - '--heroui-disabled-opacity': '.5', - '--heroui-font-size-tiny': '0.75rem', - '--heroui-font-size-small': '0.875rem', - '--heroui-font-size-medium': '1rem', - '--heroui-font-size-large': '1.125rem', - '--heroui-line-height-tiny': '1rem', - '--heroui-line-height-small': '1.25rem', - '--heroui-line-height-medium': '1.5rem', - '--heroui-line-height-large': '1.75rem', - '--heroui-radius-small': '8px', - '--heroui-radius-medium': '12px', - '--heroui-radius-large': '14px', - '--heroui-border-width-small': '1px', - '--heroui-border-width-medium': '2px', - '--heroui-border-width-large': '3px', - '--heroui-box-shadow-small': - '0px 0px 5px 0px rgba(0, 0, 0, .05), 0px 2px 10px 0px rgba(0, 0, 0, .2), inset 0px 0px 1px 0px hsla(0, 0%, 100%, .15)', - '--heroui-box-shadow-medium': - '0px 0px 15px 0px rgba(0, 0, 0, .06), 0px 2px 30px 0px rgba(0, 0, 0, .22), inset 0px 0px 1px 0px hsla(0, 0%, 100%, .15)', - '--heroui-box-shadow-large': - '0px 0px 30px 0px rgba(0, 0, 0, .07), 0px 30px 60px 0px rgba(0, 0, 0, .26), inset 0px 0px 1px 0px hsla(0, 0%, 100%, .15)', - '--heroui-hover-opacity': '.9', - }, - light: { - '--heroui-background': '0 0% 100%', - '--heroui-foreground-50': '240 5.88% 95%', - '--heroui-foreground-100': '240 3.7% 90%', - '--heroui-foreground-200': '240 5.26% 80%', - '--heroui-foreground-300': '240 5.2% 70%', - '--heroui-foreground-400': '240 3.83% 60%', - '--heroui-foreground-500': '240 5.03% 50%', - '--heroui-foreground-600': '240 4.88% 40%', - '--heroui-foreground-700': '240 5.88% 30%', - '--heroui-foreground-800': '240 4.76% 20%', - '--heroui-foreground-900': '0 0% 10%', - '--heroui-foreground': '210 5.56% 7.06%', - '--heroui-focus': '212.01999999999998 100% 53.33%', - '--heroui-overlay': '0 0% 100%', - '--heroui-divider': '0 0% 0%', - '--heroui-divider-opacity': '0.85', - '--heroui-content1': '240 5.88% 95%', - '--heroui-content1-foreground': '0 0% 10%', - '--heroui-content2': '240 3.7% 90%', - '--heroui-content2-foreground': '240 4.76% 20%', - '--heroui-content3': '240 5.26% 80%', - '--heroui-content3-foreground': '240 5.88% 30%', - '--heroui-content4': '240 5.2% 70%', - '--heroui-content4-foreground': '240 4.88% 40%', - '--heroui-default-50': '240 5.88% 95%', - '--heroui-default-100': '240 3.7% 90%', - '--heroui-default-200': '240 5.26% 80%', - '--heroui-default-300': '240 5.2% 70%', - '--heroui-default-400': '240 3.83% 60%', - '--heroui-default-500': '240 5.03% 50%', - '--heroui-default-600': '240 4.88% 40%', - '--heroui-default-700': '240 5.88% 30%', - '--heroui-default-800': '240 4.76% 20%', - '--heroui-default-900': '0 0% 10%', - '--heroui-default-foreground': '0 0% 0%', - '--heroui-default': '240 5.26% 80%', - '--heroui-danger-50': '324 90.91% 95.69%', - '--heroui-danger-100': '350.53 90.48% 91.76%', - '--heroui-danger-200': '343.42 90.48% 83.53%', - '--heroui-danger-300': '337.84 83.46% 73.92%', - '--heroui-danger-400': '331.82 75% 65.49%', - '--heroui-danger-500': '325.82 69.62% 53.53%', - '--heroui-danger-600': '319.73 65.64% 44.51%', - '--heroui-danger-700': '313.85 70.65% 36.08%', - '--heroui-danger-800': '308.18 76.39% 28.24%', - '--heroui-danger-900': '301.89 82.61% 22.55%', - '--heroui-danger-foreground': '0 0% 100%', - '--heroui-danger': '325.82 69.62% 53.53%', - '--heroui-primary-50': '339.13 92% 95.1%', - '--heroui-primary-100': '340 91.84% 90.39%', - '--heroui-primary-200': '339.33 90% 80.39%', - '--heroui-primary-300': '339.11 90.6% 70.78%', - '--heroui-primary-400': '339 90% 60.78%', - '--heroui-primary-500': '339.2 90.36% 51.18%', - '--heroui-primary-600': '339 86.54% 40.78%', - '--heroui-primary-700': '339.11 85.99% 30.78%', - '--heroui-primary-800': '339.33 86.54% 20.39%', - '--heroui-primary-900': '340 84.91% 10.39%', - '--heroui-primary-foreground': '0 0% 100%', - '--heroui-primary': '339.2 90.36% 51.18%', - '--heroui-secondary-50': '270 61.54% 94.9%', - '--heroui-secondary-100': '270 59.26% 89.41%', - '--heroui-secondary-200': '270 59.26% 78.82%', - '--heroui-secondary-300': '270 59.26% 68.24%', - '--heroui-secondary-400': '270 59.26% 57.65%', - '--heroui-secondary-500': '270 66.67% 47.06%', - '--heroui-secondary-600': '270 66.67% 37.65%', - '--heroui-secondary-700': '270 66.67% 28.24%', - '--heroui-secondary-800': '270 66.67% 18.82%', - '--heroui-secondary-900': '270 66.67% 9.41%', - '--heroui-secondary-foreground': '0 0% 100%', - '--heroui-secondary': '270 66.67% 47.06%', - '--heroui-success-50': '146.67 64.29% 94.51%', - '--heroui-success-100': '145.71 61.4% 88.82%', - '--heroui-success-200': '146.2 61.74% 77.45%', - '--heroui-success-300': '145.79 62.57% 66.47%', - '--heroui-success-400': '146.01 62.45% 55.1%', - '--heroui-success-500': '145.96 79.46% 43.92%', - '--heroui-success-600': '146.01 79.89% 35.1%', - '--heroui-success-700': '145.79 79.26% 26.47%', - '--heroui-success-800': '146.2 79.78% 17.45%', - '--heroui-success-900': '145.71 77.78% 8.82%', - '--heroui-success-foreground': '0 0% 0%', - '--heroui-success': '145.96 79.46% 43.92%', - '--heroui-warning-50': '54.55 91.67% 95.29%', - '--heroui-warning-100': '37.14 91.3% 90.98%', - '--heroui-warning-200': '37.14 91.3% 81.96%', - '--heroui-warning-300': '36.96 91.24% 73.14%', - '--heroui-warning-400': '37.01 91.26% 64.12%', - '--heroui-warning-500': '37.03 91.27% 55.1%', - '--heroui-warning-600': '37.01 74.22% 44.12%', - '--heroui-warning-700': '36.96 73.96% 33.14%', - '--heroui-warning-800': '37.14 75% 21.96%', - '--heroui-warning-900': '37.14 75% 10.98%', - '--heroui-warning-foreground': '0 0% 0%', - '--heroui-warning': '37.03 91.27% 55.1%', - '--heroui-code-background': '221.25 17.39% 18.04%', - '--heroui-strong': '316.95 100% 65.29%', - '--heroui-code-mdx': '316.95 100% 65.29%', - '--heroui-divider-weight': '1px', - '--heroui-disabled-opacity': '.5', - '--heroui-font-size-tiny': '0.75rem', - '--heroui-font-size-small': '0.875rem', - '--heroui-font-size-medium': '1rem', - '--heroui-font-size-large': '1.125rem', - '--heroui-line-height-tiny': '1rem', - '--heroui-line-height-small': '1.25rem', - '--heroui-line-height-medium': '1.5rem', - '--heroui-line-height-large': '1.75rem', - '--heroui-radius-small': '8px', - '--heroui-radius-medium': '12px', - '--heroui-radius-large': '14px', - '--heroui-border-width-small': '1px', - '--heroui-border-width-medium': '2px', - '--heroui-border-width-large': '3px', - '--heroui-box-shadow-small': - '0px 0px 5px 0px rgba(0, 0, 0, .02), 0px 2px 10px 0px rgba(0, 0, 0, .06), 0px 0px 1px 0px rgba(0, 0, 0, .3)', - '--heroui-box-shadow-medium': - '0px 0px 15px 0px rgba(0, 0, 0, .03), 0px 2px 30px 0px rgba(0, 0, 0, .08), 0px 0px 1px 0px rgba(0, 0, 0, .3)', - '--heroui-box-shadow-large': - '0px 0px 30px 0px rgba(0, 0, 0, .04), 0px 30px 60px 0px rgba(0, 0, 0, .12), 0px 0px 1px 0px rgba(0, 0, 0, .3)', - '--heroui-hover-opacity': '.8', - }, - -}) +);