From 451a41826cdb4bf606cf32c34fe8e16eea51dd07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Adem=20I=C5=9EIKLI?= Date: Mon, 13 Jan 2025 19:23:12 +0100 Subject: [PATCH] Added docs --- docs/getting-started.md | 87 +++++++++++++++++++++++++++++++++++++++++ docs/index.md | 4 +- 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 58b018e..39b1565 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -89,3 +89,90 @@ By the example, you would get the following response: } } ``` + +## Nested data validation + +This feature allows dynamic traversal of nested data structures, supporting complex validation rules for paths like `users.*.addresses.*.city`. + +It is inspired by Laravel's validation system and works seamlessly with arrays and objects, including deeply nested data. + +```ts +import { validate, setLocales, en } from "robust-validator"; + +setLocales(en); + +const data = { + secret: "some secret", + users: [ + { + addresses: [ + { + city: "New York", + }, + { + city: "Istanbul", + }, + ], + }, + { + addresses: [ + { + city: "New York", + }, + { + street: "Wall Street", + }, + ], + }, + ], + permissons: { + read: true, + write: true, + }, +}; + +const definition = { + secret: "required|min:100", + "users.*.addresses.*.city": "required", + "permissons.read": "required|boolean", + "permissons.delete": "required|boolean", +}; + +const result = await validate(data, definition); +console.log(result); +``` + +And this is the content of the `result` variable: + +```json +{ + "isValid": false, + "isInvalid": true, + "fields": { + "secret": false, + "users.*.addresses.*.city": false, + "permissons.read": true, + "permissons.delete": false + }, + "errors": { + "secret": [ + { + "rule": "min", + "message": "The field must be at least 100." + } + ], + "users.1.addresses.1.city": [ + { + "rule": "required", + "message": "The field is required." + } + ], + "permissons.delete": [ + { + "rule": "required", + "message": "The field is required." + } + ] + } +} +``` diff --git a/docs/index.md b/docs/index.md index 76d2f6e..d65d0a3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -15,9 +15,9 @@ features: - title: Declarative ✍🏽 details: Declarative rule definition allows you to save your rules in different places such as configuration files, databases, etc. - title: Simple 🐀 - details: Starting to validate data is very fast instead of creating complicated validation rules. You just need seconds. + details: Starting to validate data is very fast. Instead of creating complicated validation rules, you just need seconds. - title: Proof of work πŸ’ͺ details: Laravel-ish data validation rules are well-tested as a concept. This library is just another implementation for JavaScript. - title: i18n πŸ‡ΊπŸ‡³ - details: Multi-language error messages are supported internally, unlike other libraries. It provides consistency. + details: Multi-language error messages are supported internally, unlike other libraries. ---