@sumor/validator

validateur

Un Outil Sumor Cloud.
Plus de Documentation

Il s'agit d'un validateur léger pour Node.JS. Il peut valider la chaîne d'entrée ou le nombre en fonction des règles que vous avez définies.

CI Test Couverture Audit

Installation

npm i @sumor/validateur --save

Prérequis

Version de Node.JS

Nécessite Node.JS version 16.x ou supérieure

Requiert le module ES de Node.JS

Comme ce package est écrit en module ES, veuillez modifier le code suivant dans votre fichier package.json:

{
  "type": "module"
}

Utilisation

Utilisation de Validation de Chaîne

import { validate } from '@sumor/validateur'

const infosParamètre = {
  type: 'string',
  required: true,
  length: 10,
  rule: [
    // autoriser uniquement a-z, A-Z, 0-9
    {
      code: 'ONLY_CHAR_DIGIT',
      expression: '^[a-zA-Z0-9]*$',
      message: 'autoriser uniquement a-z, A-Z, 0-9'
    },
    // besoin d'inclure demo
    {
      code: 'INCLUDE_DEMO',
      expression: 'demo',
      message: 'besoin d'inclure demo'
    },
    // utiliser une fonction pour vérifier
    {
      code: 'LENGTH_GREATER_THAN_5',
      expression: value => {
        return value.length > 5
      },
      message: 'la longueur doit être supérieure à 5'
    }
  ],
  i18n: {
    zh: {
      ONLY_CHAR_DIGIT: 'uniquement autoriser les lettres et chiffres',
      INCLUDE_DEMO: 'doit inclure demo',
      LENGTH_GREATER_THAN_5: 'la longueur devrait être supérieure à 5'
    },
    'zh-TW': {
      ONLY_CHAR_DIGIT: 'uniquement autoriser les lettres et chiffres',
      INCLUDE_DEMO: 'doit inclure demo',
      LENGTH_GREATER_THAN_5: 'la longueur devrait être supérieure à 5'
    }
  }
}

const messages1 = validate(infosParamètre, 'demo123456')
console.log(messages1) // []

const messages2 = validate(infosParamètre, 'de1234567')
console.log(messages2) // [ 'autoriser uniquement a-z, A-Z, 0-9' ]

const messages3 = validate(infosParamètre, 'demo!')
console.log(messages3) // [ 'autoriser uniquement a-z, A-Z, 0-9', 'besoin d'inclure demo' ]

const messages4 = validate(infosParamètre, 'de!mo')
console.log(messages4) // [ 'autoriser uniquement a-z, A-Z, 0-9', 'besoin d'inclure demo' ]

const messages5 = validate(infosParamètre, 'de')
console.log(messages5) // [ 'autoriser uniquement a-z, A-Z, 0-9', 'besoin d'inclure demo', 'la longueur doit être supérieure à 5' ]

// traduire en zh
const messages6 = validate(infosParamètre, 'de', 'zh')
console.log(messages6) // [ 'uniquement autoriser les lettres et chiffres', 'doit inclure demo', 'la longueur devrait être supérieure à 5' ]

// traduire en zh-TW
const messages7 = validate(infosParamètre, 'de', 'zh-TW')
console.log(messages7) // [ 'uniquement autoriser les lettres et chiffres', 'doit inclure demo', 'la longueur devrait être supérieure à 5' ]

Utilisation de Validation de Nombre

import { validate } from '@sumor/validateur'

const infosParamètre = {
  type: 'number',
  required: true,
  rule: [
    // besoin d'être supérieur à 5
    {
      code: 'GREATER_THAN_5',
      expression: value => {
        return value > 5
      },
      message: 'la valeur doit être supérieure à 5'
    }
  ],
  i18n: {
    zh: {
      GREATER_THAN_5: 'la valeur doit être supérieure à 5'
    },
    'zh-TW': {
      GREATER_THAN_5: 'la valeur doit être supérieure à 5'
    }
  }
}

const messages1 = validate(infosParamètre, 6)
console.log(messages1) // []

const messages2 = validate(infosParamètre, 5)
console.log(messages2) // [ 'la valeur doit être supérieure à 5' ]

const messages3 = validate(infosParamètre, 4)
console.log(messages3) // [ 'la valeur doit être supérieure à 5' ]

// traduire en zh
const messages4 = validate(infosParamètre, 4, 'zh')
console.log(messages4) // [ 'la valeur doit être supérieure à 5' ]

// traduire en zh-TW
const messages5 = validate(infosParamètre, 4, 'zh-TW')
console.log(messages5) // [ 'la valeur doit être supérieure à 5' ]

Utilisation de Format de Chaîne

Utilisation de Trim

supprimera les espaces inutiles en préfixe et en suffixe

import { format } from '@sumor/validateur'

const infosParamètre = {
  type: 'string',
  trim: true // par défaut true pour le type de chaîne
}

const valeur = format(infosParamètre, ' demo ')
console.log(valeur) // affichera "demo", les espaces inutiles seront supprimés
Utilisation de Lowercase

convertira la chaîne en minuscules

import { format } from '@sumor/validateur'

const infosParamètre = {
  type: 'string',
  lowercase: true
}

const valeur = format(infosParamètre, 'Demo')
console.log(valeur) // affichera "demo", tous les caractères seront convertis en minuscules
Utilisation de Uppercase

convertira la chaîne en majuscules

import { format } from '@sumor/validateur'

const infosParamètre = {
  type: 'string',
  uppercase: true
}

const valeur = format(infosParamètre, 'Demo')
console.log(valeur) // affichera "DEMO", tous les caractères seront convertis en majuscules

Utilisation de Format de Nombre

import { format } from '@sumor/validateur'

const infosParamètre = {
  type: 'number',
  decimal: 2
}

const valeur1 = format(infosParamètre, 1.234)
console.log(valeur1) // affichera 1.23, ne gardera que 2 chiffres décimaux

const valeur2 = format(infosParamètre, '1.234')
console.log(valeur2) // convertira en nombre 1.23, ne gardera que 2 chiffres décimaux

Activer la Sortie d'Erreur

Si vous passez error:true, la réponse sera un objet SumorError. Vous pouvez changer de langue et exporter le support json avec @sumor/error

import { validate } from '@sumor/validateur'

const infosParamètre = {
  error: true,
  type: 'string',
  required: true,
  length: 10,
  rule: [
    {
      code: 'LENGTH_GREATER_THAN_5',
      expression: value => {
        return value.length > 5
      },
      message: 'la longueur doit être supérieure à 5'
    }
  ]
}

const messages = validate(infosParamètre, 'demo123456')
console.log(messages)
/* 
SumorError
{
  code: 'LENGTH_GREATER_THAN_5',
  message: 'la longueur doit être supérieure à 5'
}
*/