Closed thiagoanselmo closed 4 years ago
Adicionei o suporte hapi__joi v17.1.0, verifica se está tudo ok!
Vou verificar, obrigado!!!
Bom dia, muito legal esse recurso facilita muito nossa vida! estou com problema ao extender esse recurso ao joi é me apresentado o sequinte erro no console
/home/williancarlos/Documents/Estudos/grupoA/backend/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 (/home/williancarlos/Documents/Estudos/grupoA/backend/node_modules/@hapi/joi/lib/errors.js:184:16)
at Object.internals.entry (/home/williancarlos/Documents/Estudos/grupoA/backend/node_modules/@hapi/joi/lib/validator.js:140:26)
at Object.exports.entry (/home/williancarlos/Documents/Estudos/grupoA/backend/node_modules/@hapi/joi/lib/validator.js:26:30)
at internals.Base.validate (/home/williancarlos/Documents/Estudos/grupoA/backend/node_modules/@hapi/joi/lib/base.js:534:26)
at Object.internals.assert (/home/williancarlos/Documents/Estudos/grupoA/backend/node_modules/@hapi/joi/lib/index.js:225:27)
at Object.assert (/home/williancarlos/Documents/Estudos/grupoA/backend/node_modules/@hapi/joi/lib/index.js:102:19)
at Object.extend (/home/williancarlos/Documents/Estudos/grupoA/backend/node_modules/@hapi/joi/lib/index.js:166:18)
at Object.<anonymous> (/home/williancarlos/Documents/Estudos/grupoA/backend/src/Routes/PrivateRoutes.js:2:34)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157: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: [ 'type' ],
type: 'any.required',
context: { label: 'type', key: 'type' }
}
]
}
estou usando o node na versão 12.18.4, joi é @hapi/joi: 17.1.1 e @hapi/hapi: 19.2.0
Boa noite, primeiramente muito show a lib!
Estou usando o @hapi/joi v17.1.0 e está dando erro ao extender como schema, veja que mudou a estrutura na v17
https://github.com/hapijs/joi/blob/master/API.md#extensions
Abaixo o erro que está dando devido a nova estrutura joi.
Seria muito bem vindo fazer o update! ; )