@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/validator --save

Prérequis

Version de Node.JS

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

Require Node.JS ES Module

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

{
  "type": "module"
}

Utilisation

Utilisation de la validation de chaîne

import { validate } from '@sumor/validator'

const infoParamètre = {
  type: 'string',
  required: true,
  length: 10,
  rule: [
    // permet uniquement a-z, A-Z, 0-9
    {
      code: 'ONLY_CHAR_DIGIT',
      expression: '^[a-zA-Z0-9]*$',
      message: 'Seuls les caractères a-z, A-Z, 0-9 sont autorisés'
    },
    // besoin de contenir "demo"
    {
      code: 'INCLUDE_DEMO',
      expression: 'demo',
      message: 'besoin de contenir 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: '只允许输入字母和数字',
      INCLUDE_DEMO: '需要包含demo',
      LENGTH_GREATER_THAN_5: '长度应大于5'
    },
    'zh-TW': {
      ONLY_CHAR_DIGIT: '只允许输入字母和数字',
      INCLUDE_DEMO: '需要包含demo',
      LENGTH_GREATER_THAN_5: '长度應大於5'
    }
  }
}

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

const messages2 = validate(infoParamètre, 'de1234567')
console.log(messages2) // [ 'Seuls les caractères a-z, A-Z, 0-9 sont autorisés' ]

const messages3 = validate(infoParamètre, 'demo!')
console.log(messages3) // [ 'Seuls les caractères a-z, A-Z, 0-9 sont autorisés', 'besoin de contenir "demo"' ]

const messages4 = validate(infoParamètre, 'de!mo')
console.log(messages4) // [ 'Seuls les caractères a-z, A-Z, 0-9 sont autorisés', 'besoin de contenir "demo"' ]

const messages5 = validate(infoParamètre, 'de')
console.log(messages5) // [ 'Seuls les caractères a-z, A-Z, 0-9 sont autorisés', 'besoin de contenir "demo"', 'la longueur doit être supérieure à 5' ]

// traduit en chinois
const messages6 = validate(infoParamètre, 'de', 'zh')
console.log(messages6) // [ '只允许输入字母和数字', '需要包含demo', '长度应大于5' ]

// traduit en chinois traditionnel
const messages7 = validate(infoParamètre, 'de', 'zh-TW')
console.log(messages7) // [ '只允許輸入字母和數字', '需要包含demo', '長度應大於5' ]

Utilisation de la validation de nombre

import { validate } from '@sumor/validator'

const infoParamètre = {
  type: 'number',
  required: true,
  rule: [
    // doit ê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: '值应大于5'
    },
    'zh-TW': {
      GREATER_THAN_5: '值應大於5'
    }
  }
}

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

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

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

// traduit en chinois
const messages4 = validate(infoParamètre, 4, 'zh')
console.log(messages4) // [ '值应大于5' ]

// traduit en chinois traditionnel
const messages5 = validate(infoParamètre, 4, 'zh-TW')
console.log(messages5) // [ '值應大於5' ]

Utilisation du format de chaîne

Utilisation de la suppression des espaces

enlèvera les espaces inutiles du préfixe et du suffixe

import { format } from '@sumor/validator'

const infoParamètre = {
  type: 'string',
  trim: true // par défaut, true pour le type string
}

const valeur = format(infoParamètre, ' demo ')
console.log(valeur) // affichera "demo", les espaces inutiles seront supprimés
Utilisation de la mise en minuscule

convertira la chaîne en minuscules

import { format } from '@sumor/validator'

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

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

convertira la chaîne en majuscules

import { format } from '@sumor/validator'

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

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

Utilisation du format de nombre

import { format } from '@sumor/validator'

const infoParamètre = {
  type: 'number',
  décimal: 2
}

const valeur1 = format(infoParamètre, 1.234)
console.log(valeur1) // affichera 1.23, ne conservera que 2 décimales

const valeur2 = format(infoParamètre, '1.234')
console.log(valeur2) // sera converti en nombre 1.23, ne conservera que 2 décimales

Activer la sortie d'erreur

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

import { validate } from '@sumor/validator'

const infoParamètre = {
  erreur: 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(infoParamètre, 'demo123456', 'fr', true)
console.log(messages)
/* 
SumorError
{
  code: 'LENGTH_GREATER_THAN_5',
  message: 'la longueur doit être supérieure à 5'
}
*/