42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { z } from "zod";
|
|
|
|
const allowFromEntry = z.union([z.string(), z.number()]);
|
|
|
|
const dmSchema = z
|
|
.object({
|
|
enabled: z.boolean().optional(),
|
|
policy: z.enum(["pairing", "allowlist", "open", "disabled"]).optional(),
|
|
allowFrom: z.array(allowFromEntry).optional(),
|
|
})
|
|
.optional();
|
|
|
|
export const WecomConfigSchema = z.object({
|
|
name: z.string().optional(),
|
|
enabled: z.boolean().optional(),
|
|
|
|
webhookPath: z.string().optional(),
|
|
token: z.string().optional(),
|
|
encodingAESKey: z.string().optional(),
|
|
receiveId: z.string().optional(),
|
|
|
|
streamPlaceholderContent: z.string().optional(),
|
|
debounceMs: z.number().optional(),
|
|
|
|
welcomeText: z.string().optional(),
|
|
dm: dmSchema,
|
|
|
|
defaultAccount: z.string().optional(),
|
|
accounts: z.object({}).catchall(z.object({
|
|
name: z.string().optional(),
|
|
enabled: z.boolean().optional(),
|
|
webhookPath: z.string().optional(),
|
|
token: z.string().optional(),
|
|
encodingAESKey: z.string().optional(),
|
|
receiveId: z.string().optional(),
|
|
streamPlaceholderContent: z.string().optional(),
|
|
debounceMs: z.number().optional(),
|
|
welcomeText: z.string().optional(),
|
|
dm: dmSchema,
|
|
})).optional(),
|
|
});
|