Non-Potable Macchiato

    joker-validator

    1.0.6 • Public • Published

    Logo de Joker Validator

    Validador de dados JSON para Node.js

    O joker-validator analisa os dados JSON enviados conforme regras personalizadas indicadas como parâmetros na função, retorna o resultado da validação e, caso os dados estejam inválidos, retorna também uma mensagem de erro padrão ou personalizada.

    Instalação

    npm install joker-validator

    Parâmetros da Função:

    Este método funciona através de 3 argumentos: data, rules e allowedFields.

    Índice:

    1. data
    2. rules
    3. allowedFields

    Exemplo

    data

    JSON baseado em chaves e valores como { "library": "json-validator" }. Este pode ser os dados enviados através de uma requisição HTTP (REST). Verificar const dataExample no exemplo abaixo.

    rules

    Objeto Javascript que contêm as regras para validação dos valores enviados em data.

    Propriedades aceitáveis:

    Esta propriedade serve para comparar se o tipo de dado enviado em data (conforme a chave indicada) corresponde ao valor setado aqui. Valores aceitáveis: string, number, boolean, date (UTC), object e array Ex: library: {dataType: "string"}

    Define a quantidade mínima e máxima de caracteres de uma String ou itens de um Array. Você deve utilizar as propriedades min e/ou max. Ex: library: {len: { min: 4, max: 14 }}

    Define um intervalo númerico ou de data (date) aceitável para o valor enviado em data na chave indicada. Você deve utilizar as propriedades min e/ou max. Ex: date: {range: { min: "1921-01-01", max: "1999-01-01"}}

    --> Neste exemplo, queremos determinar que o valor de date em data só é aceitável em um intervalo entre 18 e 100 anos em relação à 01/01/2021

    Array de Strings e/ou Números aceitáveis para o valor de uma determinada chave em data. Ex: uf: {list: ["AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RO", "RS", "RR", "SC", "SE", "SP", "TO"]}

    Exige que o valor de um determinado campo em data seja igual à outro campo também enviado em data. Normalmente utilizado para confirmar um campo de senha ou e-mail. Ex: check_pass: {equals: "password"}

    Determina se o valor do campo em data é de preenchimento obrigatório. Ex: library: {required: true}

    Compara se o valor do campo em data se enquadra na Expressão Regular em Javascript. definida na propriedade. Ex: cep: {regex: /^[0-9]{8}|([0-9]{5}|[0-9]{2}.[0-9]{3})-[0-9]{3}$/i}

    Compara o valor do campo em data conforme configuração de validação no Objeto customValidation em custom.validation.js. Ex: email: {custom: "email"}

    Em customValidation, você pode adicionar um conjunto de regras de validação e atribuir o nome que desejar.
    Por padrão, customValidation possui validação de número de celular (formato brasileiro), e-mail, CEP, URL e formato de senha.

    Personaliza a mensagem de erro no retorno da função conforme a regra definida. Na String da mensagem, utilize {value} para imprimir o valor do campo em data, {field} para o nome do campo/chave em data e {NomeDaRegra} para o valor da regra (Ex: {list}) Para valores das regras utilize: {dataType}, {minLength}, {maxLength}, {minRange}, {maxRange}, {list}, {required}, {regex} e {custom}. Ex: library: {dataType: "number", message: {dataType: "'{value}' do campo '{field}' não corresponde ao tipo de dado '{dataType}'"} } Retorno do exemplo acima: {validate: false, message: "'json-validator' do campo 'library' não corresponde ao tipo de dado 'number'"}

    Verificar const rules no exemplo abaixo.

    allowedFields

    Array que contêm os nomes dos campos aceitáveis em data. Este parâmetro serve para limitar quais campos serão aceitos e não permite que tenha outros campos em data, ou seja, caso tenha algum campo com nome diferente dos que estão listados em allowedFields, a função retornará {validate: false} Verificar const allowedFields no exemplo abaixo.

    Exemplo

    const validate = require('joker-validator');
    
    const dataExample = {
        "username": "daiangm",
        "email": "daiangm@github.com",
        "password": "Pa$$w0rd",
        "check_pass": "Pa$$w0rd",
        "phone": "(62)99999-9999",
        "cpf": "000.000.000-00",
        "birthdate": "12/12/1990",
        "uf": "GO",
    }
    
    const rules = {
        username: {
            dataType: "string",
            len: { min: 3, max: 16 },
            required: true,
            message: {len: "O valor de {field} deve ter entre {len[min]} e {len[max]} caracteres"}
        },
        email: {
            custom: "email",
            required: true,
            message: { custom: "'{value}' não é um endereço de {field} válido" }
        },
        password: {
            dataType: "string",
            custom: "Pa$$w0rd",
            len: { min: 8, max: 16 },
            required: true,
            message: {required: "É obrigatório o preenchimento do campo '{field}'"}
        },
        check_pass:{
            equals: "password",
            required: true
        },
        phone: {
            custom: "phone",
            required: true
        },
        cpf: {
            regex: /^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/i
        },
        birthdate: {
            dataType: "date",
            range: { min: "1900-01-01", max: "2003-01-01"}
        },
        uf: {
            list: ["GO", "MT", "MS"],
            message: { list: "O valor do campo '{field}' precisa ser preenchido com um dos valores da lista: {list}" }
        }
    }
    
    const allowedFields = ["username", "email", "password", "check_pass", "phone", "cpf", "birthdate", "uf"]
    
    const result = validate(dataExample, rules, allowedFields);
    
    console.log(result);
    
    if(!result.validate){
        return false;
    }

    Install

    npm i joker-validator

    DownloadsWeekly Downloads

    5

    Version

    1.0.6

    License

    MIT

    Unpacked Size

    30.8 kB

    Total Files

    14

    Last publish

    Collaborators

    • daiangm