duplojs / zod-accelerator

34 stars 1 forks source link

[fix] object optimization #7

Closed mathcovax closed 6 months ago

mathcovax commented 6 months ago
Object.entries(shape).forEach(([key, zodSchema]) => {
    const propsZac = ZodAccelerator.findAcceleratorContent(zodSchema);
    if(
        zodSchema instanceof zod.ZodUndefined ||
        zodSchema instanceof zod.ZodVoid ||
        zodSchema instanceof zod.ZodUnknown ||
        zodSchema instanceof zod.ZodAny ||
        zodSchema instanceof zod.ZodOptional ||
        zodSchema instanceof zod.ZodDefault ||
        (
            zodSchema instanceof zod.ZodLiteral &&
            zodSchema._def.value === undefined 
        )
    ){
        zac.addContent(
            [
                propsZac, 
                {
                    path: key,
                    input: `$input["${key}"]`,
                    output: "//",
                }
            ],
            /* js */`
                if(${propsZac.replacer("$input")} != undefined){
                    $output["${key}"] = ${propsZac.replacer("$input")}
                }
            `
        );
    }
    else {
        zac.addContent(
            [
                propsZac, 
                {
                    path: key,
                    input: `$input["${key}"]`,
                    output: `$output["${key}"]`,
                }
            ]
        );
    }
});