/**
 * 路由配置验证 Schema（使用 Zod）
 */ import { z } from "zod";
/**
 * RouteItemHandle Schema
 */ export const routeItemHandleSchema = z.object({
    title: z.string().min(1, '路由标题不能为空'),
    i18nKey: z.string().optional(),
    order: z.number().int('排序值必须是整数'),
    icon: z.string().optional(),
    hideInMenu: z.boolean().optional(),
    hideFooter: z.boolean().optional(),
    keepAlive: z.boolean().optional(),
    needLogin: z.boolean().optional(),
    roles: z.array(z.string()).optional(),
    name: z.string().optional()
}).passthrough(); // 允许其他自定义字段
/**
 * ComponentImport Schema
 * 可以是字符串路径或函数
 */ export const componentImportSchema = z.union([
    z.string().min(1, '组件路径不能为空'),
    z.function(),
    z.null()
]);
/**
 * RouteConfig Schema
 */ export const routeConfigSchema = z.lazy(()=>z.object({
        layout: componentImportSchema.optional().nullable(),
        page: componentImportSchema.optional().nullable(),
        loading: componentImportSchema.optional().nullable(),
        errors: componentImportSchema.optional().nullable(),
        name: z.string().min(1, '路由名称不能为空'),
        path: z.string().optional(),
        isGroup: z.boolean().optional(),
        enableRedirection: z.boolean().optional(),
        handle: routeItemHandleSchema,
        children: z.array(routeConfigSchema).optional()
    }));
/**
 * RouterConfig Schema
 */ export const routerConfigSchema = z.object({
    enabled: z.union([
        z.boolean(),
        z.literal('disabled')
    ]).optional(),
    routes: z.union([
        z.array(routeConfigSchema),
        z.function()
    ]).optional(),
    mode: z.enum([
        'browser',
        'hash',
        'memory'
    ]).optional(),
    options: z.any().optional(),
    pathResolve: z.object({
        basePath: z.string().optional(),
        pathAliases: z.record(z.string(), z.string()).optional()
    }).optional(),
    transformOptions: z.any().optional()
});
/**
 * 验证路由配置
 * 
 * @param config - 要验证的路由配置
 * @returns 验证后的路由配置
 * @throws z.ZodError 如果配置验证失败
 */ export function validateRouterConfig(config) {
    return routerConfigSchema.parse(config);
}
/**
 * 安全验证路由配置（不抛出异常）
 * 
 * @param config - 要验证的路由配置
 * @returns 验证结果
 */ export function safeValidateRouterConfig(config) {
    return routerConfigSchema.safeParse(config);
}

//# sourceMappingURL=schema.js.map