carvalhoviniciusluiz / cpf-cnpj-validator

Valida e formata strings de CPF ou CNPJ.
MIT License
206 stars 27 forks source link

Erro ao utilizar com Joi #14

Closed fuza closed 4 years ago

fuza commented 4 years ago

`/teste/node_modules/@hapi/joi/lib/index.js:243 throw error; ^

Error [ValidationError]: { "cpf": { "verifierDigit": (digits) => {\r\n const numbers = digits\r\n .split('')\r\n .map(number => {\r\n return parseInt(number, 10);\r\n });\r\n const modulus = numbers.length + 1;\r\n const multiplied = numbers.map((number, index) => number (modulus - index));\r\n const mod = multiplied.reduce((buffer, number) => buffer + number) % 11;\r\n return (mod < 2 ? 0 : 11 - mod);\r\n}, "strip": (number, strict) => {\r\n const regex = strict ? STRICT_STRIP_REGEX : LOOSE_STRIP_REGEX;\r\n return (number || '').replace(regex, '');\r\n}, "format": (number) => {\r\n return strip(number).replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/, '$1.$2.$3-$4');\r\n}, "isValid": (number, strict) => {\r\n const stripped = strip(number, strict);\r\n if (!stripped) {\r\n return false;\r\n }\r\n if (stripped.length !== 11) {\r\n return false;\r\n }\r\n if (BLACKLIST.includes(stripped)) {\r\n return false;\r\n }\r\n let numbers = stripped.substr(0, 9);\r\n numbers += verifierDigit(numbers);\r\n numbers += verifierDigit(numbers);\r\n return numbers.substr(-2) === stripped.substr(-2);\r\n}, "generate": (formatted) => {\r\n let numbers = '';\r\n for (let i = 0; i < 9; i += 1) {\r\n numbers += Math.floor(Math.random() 9);\r\n }\r\n numbers += verifierDigit(numbers);\r\n numbers += verifierDigit(numbers);\r\n return (formatted ? format(numbers) : numbers);\r\n} }, "cnpj": { "verifierDigit": (digits) => {\r\n let index = 2;\r\n const reverse = digits.split('').reduce((buffer, number) => {\r\n return [parseInt(number, 10)].concat(buffer);\r\n }, []);\r\n const sum = reverse.reduce((buffer, number) => {\r\n buffer += number index;\r\n index = (index === 9 ? 2 : index + 1);\r\n return buffer;\r\n }, 0);\r\n const mod = sum % 11;\r\n return (mod < 2 ? 0 : 11 - mod);\r\n}, "strip": (number, strict) => {\r\n const regex = strict ? STRICT_STRIP_REGEX$1 : LOOSE_STRIP_REGEX$1;\r\n return (number || '').replace(regex, '');\r\n}, "format": (number) => {\r\n return strip$1(number).replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, '$1.$2.$3/$4-$5');\r\n}, "isValid": (number, strict) => {\r\n const stripped = strip$1(number, strict);\r\n if (!stripped) {\r\n return false;\r\n }\r\n if (stripped.length !== 14) {\r\n return false;\r\n }\r\n if (BLACKLIST$1.includes(stripped)) {\r\n return false;\r\n }\r\n let numbers = stripped.substr(0, 12);\r\n numbers += verifierDigit$1(numbers);\r\n numbers += verifierDigit$1(numbers);\r\n return numbers.substr(-2) === stripped.substr(-2);\r\n}, "generate": (formatted) => {\r\n let numbers = '';\r\n for (let i = 0; i < 12; i += 1) {\r\n numbers += Math.floor(Math.random() 9);\r\n }\r\n numbers += verifierDigit$1(numbers);\r\n numbers += verifierDigit$1(numbers);\r\n return (formatted ? format$1(numbers) : numbers);\r\n} }, "validator": "[joi => ({\r\n type: 'document',\r\n base: joi.string(),\r\n messages: {\r\n 'document.cpf': 'CPF inválido',\r\n 'document.cnpj': 'CNPJ inválido'\r\n },\r\n rules: {\r\n cpf: {\r\n validate(value, helpers, args, options) {\r\n if (!cpf.isValid(value)) {\r\n return helpers.error('document.cpf');\r\n }\r\n return value;\r\n }\r\n },\r\n cnpj: {\r\n validate(value, helpers, args, options) {\r\n if (!cnpj.isValid(value)) {\r\n return helpers.error('document.cnpj');\r\n }\r\n return value;\r\n }\r\n }\r\n }\r\n})]", "default": "[joi => ({\r\n type: 'document',\r\n base: joi.string(),\r\n messages: {\r\n 'document.cpf': 'CPF inválido',\r\n 'document.cnpj': 'CNPJ inválido'\r\n },\r\n rules: {\r\n cpf: {\r\n validate(value, helpers, args, options) {\r\n if (!cpf.isValid(value)) {\r\n return helpers.error('document.cpf');\r\n }\r\n return value;\r\n }\r\n },\r\n cnpj: {\r\n validate(value, helpers, args, options) {\r\n if (!cnpj.isValid(value)) {\r\n return helpers.error('document.cnpj');\r\n }\r\n return value;\r\n }\r\n }\r\n }\r\n})]", "type" [1]: -- missing -- }

[1] "type" is required at Object.exports.process (/teste/node_modules/@hapi/joi/lib/errors.js:184:16) at Object.internals.entry (/teste/node_modules/@hapi/joi/lib/validator.js:140:26) at Object.exports.entry (/teste/node_modules/@hapi/joi/lib/validator.js:26:30) at internals.Base.validate (/teste/node_modules/@hapi/joi/lib/base.js:534:26) at Object.internals.assert (/teste/node_modules/@hapi/joi/lib/index.js:225:27) at Object.assert (/teste/node_modules/@hapi/joi/lib/index.js:102:19) at Object.extend (/teste/node_modules/@hapi/joi/lib/index.js:166:18) at Object. (/teste/t2.js:5:34) at Module._compile (internal/modules/cjs/loader.js:1158:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10) { _original: { cpf: { verifierDigit: [Function: verifierDigit], strip: [Function: strip], format: [Function: format], isValid: [Function: isValid], generate: [Function: generate] }, cnpj: { verifierDigit: [Function: verifierDigit$1], strip: [Function: strip$1], format: [Function: format$1], isValid: [Function: isValid$1], generate: [Function: generate$1] }, validator: [Function: validator], default: [Function: validator] }, details: [ { message: '"type" is required', path: [Array], type: 'any.required', context: [Object] } ] }`

carvalhoviniciusluiz commented 4 years ago

qual versão do joi?

alexandreMelloTW commented 4 years ago

Estou tendo o mesmo problema, estou usando o joi 17.1.1

alexandreMelloTW commented 4 years ago

@fuza consegui utilizar o validador assim:

import * as _joi from '@hapi/joi'; import { validator } from 'cpf-cnpj-validator';

const Joi = _joi.extend(validator);

carvalhoviniciusluiz commented 4 years ago

em envie uma simulação do problema para que possa ser corrigido.