@palmares/schemas
Version:
This defines a default schema definition for validation of data, it abstract popular schema validation libraries like zod, yup, valibot and others"
47 lines (45 loc) • 1.68 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
// src/validators/object.ts
function objectValidation(keysToFallback) {
return {
name: "object",
type: "low",
callback: /* @__PURE__ */ __name(async (value, path, options) => {
const isNotAnObject = typeof value !== "object" && Array.isArray(value) === false && value !== null;
if (isNotAnObject) return {
parsed: value,
preventChildValidation: true,
errors: [
{
isValid: false,
code: "object",
// eslint-disable-next-line ts/no-unnecessary-condition
path: path || [],
message: "The value must be an object. Received: " + typeof value
}
]
};
const errors = {};
const toValidateEntries = Object.entries(keysToFallback);
await Promise.all(toValidateEntries.map(async ([key, schema]) => {
const schemaWithProtected = schema;
const { parsed, errors: parseErrors } = await schemaWithProtected.__parse(value[key], [
...path,
key
], options);
if (Array.isArray(parseErrors) && parseErrors.length > 0) errors[key] = parseErrors;
else value[key] = parsed;
if (schemaWithProtected.__toInternal && options.toInternalToBubbleUp) options.toInternalToBubbleUp.push(async () => value[key] = await schema.__toInternal(parsed));
}));
return {
parsed: value,
errors: Object.values(errors).flat()
};
}, "callback")
};
}
__name(objectValidation, "objectValidation");
export {
objectValidation
};