EDlabsEDcheck

Varios campos a la vez

Una regla puede mirar dos o más campos juntos, por ejemplo edad y ocupación.

A veces un campo solo no basta. “CEO” puede ser un trabajo válido. “12 años” puede ser una edad válida. Juntos, no tienen sentido.

Para eso usas crossField. Declaras qué campos mirar y escribes una regla que habla de todos ellos.

Ejemplo: edad y ocupación

const PersonSemantic = edcheck.define(Person, {  rules: {    fullName: semantic("Un nombre completo creíble de una persona real"),  },  crossField: [    {      paths: ["age", "occupation"],      rule: semantic({        intent: "La `occupation` es creíble para alguien de esa `age`",        invalid: "La `occupation` pide más años de los que permite la `age`",        id: "occupation_age_coherence",      }),    },  ],});

Los nombres entre backticks

Si en intent, valid o invalid mencionas un campo entre backticks (por ejemplo occupation), ese nombre tiene que estar en paths. Si pones un campo que no declaraste, define() falla con EDcheckConfigError y el código unknown_reference.

Textos con espacios o signos, por ejemplo N/A entre backticks, se ignoran. No se tratan como campos.

Un issue por cada campo

Si la regla falla o da aviso, EDcheck crea un issue para cada path. El mensaje es el mismo. Cambia path, para que puedas pintar el error en ambos inputs.

Cada issue también trae paths (todos los campos de la regla) y el mismo ruleId. Así tu código puede no mostrar el mismo error dos veces si no quiere.

Si falta un valor

Si alguno de los campos es undefined o null, EDcheck se salta esa regla. No inventa un error. Zod ya se encargó (o el campo era opcional).

No puedes usar un array dentro de paths. define() lo rechaza.