UNPKG

validlyjs

Version:

ValidlyJS is a lightweight, type-safe validation library inspired by Laravel's validation syntax

41 lines 1.77 kB
import { Validator } from "../../core/Validator.js"; export const objectRule = { validate: (value) => typeof value === "object" && !Array.isArray(value) && value !== null, message: ([], ctx) => { const message = ctx.config.messages?.object; return typeof message === "string" ? ctx.formatMessage({ attribute: ctx.field || "field" }, message) : `${ctx.field} must be an object`; }, additionalRules: { shape: (schema) => ({ validate: async (obj, params, ctx) => { const validator = new Validator(schema); const result = await validator.validateAsync(obj); return result.isValid; }, message: (params, ctx) => { const message = ctx.config.messages?.shape; return typeof message === "string" ? ctx.formatMessage({ attribute: ctx.field || "field" }, message) : `${ctx.field} has an invalid structure`; }, }), strict: () => ({ validate: (obj, [], ctx) => { if (!ctx.schema) { throw new Error("Schema is required for strict validation"); } const extraKeys = Object.keys(obj).filter((key) => !(key in ctx.schema)); return extraKeys.length === 0; }, message: ([], ctx) => { const message = ctx.config.messages?.strict; return typeof message === "string" ? ctx.formatMessage({ attribute: ctx.field || "field" }, message) : `${ctx.field} contains unexpected fields`; }, }), }, }; //# sourceMappingURL=Object.js.map