Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

nox-validation

milan_nowonline1.4kISC1.6.1

validate dynamic schema

validation, input-validation, nodejs, form-validation, server-side-validation, client-side-validation, data-validation, custom-validation-library

readme

Nox Validation

nox-validation is a powerful and flexible validation library for both client-side and server-side use. It supports nested fields, alias validation, and customizable rules, making it perfect for complex form data validation.

Installation

npm install nox-validation

Library Exports

Validation Functions:

  • validate - The core function for validating data.

Constants:

  • CONSTANTS - A collection of predefined constants (likely including data types, error messages, validation rules, etc.).

Helper Functions (HELPERS):

  • validateSingleField - Validates a single field against defined rules.
  • validateType - Performs type checks for data validation.
  • fieldsMapping - Groups fields by schemaId for structured access.
  • convertTree - Converts a flat structure into a nested tree format.
  • getValueByDynamicKey - Retrieves a value dynamically from an object using a key path.
  • setValueByDynamicKey - Sets a value dynamically in an object using a key path.

Usage

const { validate, helpers } = require("nox-validation");

const all_fields = []; 

const relations = []; 

const schema = [
  {
    _id: "67d2996955b853593b84a0c8",
    schema_id: "67d2993655b853593b84a086",
    field: "email",
    field_type: "Single",
    type: "String",
    path: "email",
    meta: {
      field: "email",
      interface: "input",
      hidden: false,
      sort: null,
      required: true,
      nullable: false,
      validations: {
        rules: [
          {
            rule: "matchesRegExp",
            matchesRegExp: {
              value: "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/",
            },
          },
        ],
      },
      readonly: false,
    },
    schema_definition: {
      name: "email",
      type: "String",
      default: null,
      unique: true,
    },
  },
  {
    _id: "67d2995955b853593b84a0bc",
    schema_id: "67d2993655b853593b84a086",
    field: "user_name",
    field_type: "Single",
    type: "String",
    path: "user_name",
    meta: {
      field: "user_name",
      interface: "input",
      hidden: false,
      sort: null,
      required: true,
      nullable: false,
      readonly: false,
    },
    schema_definition: {
      name: "user_name",
      type: "String",
      default: null,
    },
  },
];

When isSeparatedFields is true

const result = validate({
  formData: {
    user_name: "John Doe",
    email: "john.doe@example.com",
  },
  isSeparatedFields: true,
  fields: schema,
  relationalFields: helpers.fieldsMapping(all_fields),
  relations: relations,
  formId: "67d2993655b853593b84a086",
  abortEarly: false,
  byPassKeys: [],
  apiVersion: "v1",
  language: "nl",
  maxLevel: 3,
  onlyFormFields: false,
  language_codes:[]
});

When isSeparatedFields is false

const result = validate({
  formData: {
    user_name: "John Doe",
    email: "john.doe@example.com",
  },
  isSeparatedFields: false,
  fields: all_fields,
  relationalFields: {},
  relations: relations,
  formId: "67d2993655b853593b84a086",
  abortEarly: false,
  byPassKeys: [],
  apiVersion: "v1",
  language: "nl",
  maxLevel: 3,
  onlyFormFields: false, 
  language_codes:[]
});

Output Example:

{
  status: true, 
  error: {},    
  data: {}      
}

Parameters

Schema Parameter Descriptions:

formData (Object)

  • Represents the primary data structure for form submission.
  • Contains key-value pairs corresponding to form fields.

formId (ObjectId)

  • A unique identifier for the form schema.
  • Required when isSeparatedFields is true, indicating that only form-specific fields are provided.

isSeparatedFields (Boolean)

  • Determines how fields are structured in the request.
  • If true → Only form schema fields are included in fields.
  • If false → All fields for a specific tenant are included. Additionally, relationalFields will contain { schema_id: [related fields] }.

relations (Array of Objects)

  • Defines the relationships between different entities.
  • Contains objects specifying relation types and linked entities.

fields (Array of Objects)

  • Holds the form schema fields when isSeparatedFields is true.
  • If false, it contains all fields for the specific tenant.

relationalFields (Object)

  • Maps schema IDs to their related fields.
  • Used when isSeparatedFields is false to maintain relationships between schemas and related fields.

abortEarly (Boolean)

  • Determines validation behavior.
  • If true → Validation stops on the first error encountered.
  • If false → All validation errors are collected and returned.

byPassKeys (Array of Strings)

  • Contains field names that should be skipped during validation.
  • Allows exclusion of specific fields from validation checks.

apiVersion (String)

  • Specifies the API version ("v1" or "v2").
  • Helps in maintaining compatibility and version control.

language (String)

  • Specifies the locale language ("nl" or "en").
  • Determines the locale for validation messages.

maxLevel (Number)

  • Defines the level for generate tree structure.

onlyFormFields (Boolean)

Indicates the context in which the form is being used.

  • false: Used when creating new data (full form).
  • true: Used when editing or displaying only existing form fields.

language_codes (Array of IDs)

  • Represents the selected translation language IDs.
  • Each item in the array should be a valid language code or _id used for handling multilingual content.

Result

The validate function returns an object with two keys:

  • status (boolean): true if validation passed, false if there were errors.
  • error (object): Contains validation errors, with field paths as keys and error messages as values.