31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import { z } from "zod";
|
|
|
|
const allowFromEntry = z.union([z.string(), z.number()]);
|
|
|
|
const bluebubblesActionSchema = z
|
|
.object({
|
|
reactions: z.boolean().optional(),
|
|
})
|
|
.optional();
|
|
|
|
const bluebubblesAccountSchema = z.object({
|
|
name: z.string().optional(),
|
|
enabled: z.boolean().optional(),
|
|
serverUrl: z.string().optional(),
|
|
password: z.string().optional(),
|
|
webhookPath: z.string().optional(),
|
|
dmPolicy: z.enum(["pairing", "allowlist", "open", "disabled"]).optional(),
|
|
allowFrom: z.array(allowFromEntry).optional(),
|
|
groupAllowFrom: z.array(allowFromEntry).optional(),
|
|
groupPolicy: z.enum(["open", "disabled", "allowlist"]).optional(),
|
|
historyLimit: z.number().int().min(0).optional(),
|
|
dmHistoryLimit: z.number().int().min(0).optional(),
|
|
textChunkLimit: z.number().int().positive().optional(),
|
|
mediaMaxMb: z.number().int().positive().optional(),
|
|
});
|
|
|
|
export const BlueBubblesConfigSchema = bluebubblesAccountSchema.extend({
|
|
accounts: z.object({}).catchall(bluebubblesAccountSchema).optional(),
|
|
actions: bluebubblesActionSchema,
|
|
});
|