diff --git a/src/routes/setting/vendorConfig/addVendor.ts b/src/routes/setting/vendorConfig/addVendor.ts index ab2d090..185bf93 100644 --- a/src/routes/setting/vendorConfig/addVendor.ts +++ b/src/routes/setting/vendorConfig/addVendor.ts @@ -1,4 +1,5 @@ import express from "express"; +import { serializeError } from "serialize-error"; import { success, error } from "@/lib/responseFormat"; import { validateFields } from "@/middleware/middleware"; import u from "@/utils"; @@ -70,30 +71,35 @@ export default router.post( tsCode: z.string(), }), async (req, res) => { - const { tsCode } = req.body; - const jsCode = transform(tsCode, { transforms: ["typescript"] }).code; - const exports = u.vm(jsCode); - if (!exports) return res.status(400).send(success("脚本文件必须导出对象")); - if (!exports.textRequest) return res.status(400).send(success("脚本文件必须导出文本请求对象")); - if (!exports.imageRequest) return res.status(400).send(success("脚本文件必须导出图像请求对象")); - if (!exports.videoRequest) return res.status(400).send(success("脚本文件必须导出视频请求对象")); - if (!exports.vendor) return res.status(400).send(success("脚本文件必须导出vendor对象")); - const vendor = exports.vendor; - const result = vendorConfigSchema.safeParse(vendor); - if (!result.success) { - const errorMsg = result.error.issues.map((e) => `${e.path.join(".")}: ${e.message}`).join("; "); - return res.status(400).send(error(`vendor配置校验失败: ${errorMsg}`)); + try { + const { tsCode } = req.body; + const jsCode = transform(tsCode, { transforms: ["typescript"] }).code; + const exports = u.vm(jsCode); + if (!exports) return res.status(400).send(success("脚本文件必须导出对象")); + if (!exports.textRequest) return res.status(400).send(success("脚本文件必须导出文本请求对象")); + if (!exports.imageRequest) return res.status(400).send(success("脚本文件必须导出图像请求对象")); + if (!exports.videoRequest) return res.status(400).send(success("脚本文件必须导出视频请求对象")); + if (!exports.vendor) return res.status(400).send(success("脚本文件必须导出vendor对象")); + const vendor = exports.vendor; + const result = vendorConfigSchema.safeParse(vendor); + if (!result.success) { + const errorMsg = result.error.issues.map((e) => `${e.path.join(".")}: ${e.message}`).join("; "); + return res.status(400).send(error(`vendor配置校验失败: ${errorMsg}`)); + } + await u.db("o_vendorConfig").insert({ + name: vendor.name, + version: vendor.version.toString(), + icon: vendor.icon || "", + inputs: JSON.stringify(vendor.inputs), + inputValues: JSON.stringify(vendor.inputValues), + models: JSON.stringify(vendor.models), + code: tsCode, + createTime: Date.now(), + }); + res.status(200).send(success(result.data)); + } catch (err) { + console.log(err); + res.status(400).send(error(serializeError(err).message || "未知错误")); } - await u.db("o_vendorConfig").insert({ - name: vendor.name, - version: vendor.version.toString(), - icon: vendor.icon || "", - inputs: JSON.stringify(vendor.inputs), - inputValues: JSON.stringify(vendor.inputValues), - models: JSON.stringify(vendor.models), - code: tsCode, - createTime: Date.now(), - }); - res.status(200).send(success(result.data)); }, ); diff --git a/src/types/database.d.ts b/src/types/database.d.ts index f27634d..8b966b5 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,4 +1,4 @@ -// @db-hash 5ea1f1cf9926d08390093d10da66e6ae +// @db-hash b6146b9f91d8b9853e0f6fcb41c3145b //该文件由脚本自动生成,请勿手动修改 export interface memories { @@ -88,6 +88,8 @@ export interface o_novel { 'chapterData'?: string | null; 'chapterIndex'?: number | null; 'createTime'?: number | null; + 'event'?: string | null; + 'eventState'?: number | null; 'id'?: number; 'projectId'?: number | null; 'reel'?: string | null; diff --git a/src/utils/vm.ts b/src/utils/vm.ts index a6bb526..dde5021 100644 --- a/src/utils/vm.ts +++ b/src/utils/vm.ts @@ -25,7 +25,6 @@ export default function runCode(code: string) { createOpenAICompatible, createXai, createGoogleGenerativeAI, - zipImage, zipImageResolution, urlToBase64,