From f535a89ca251b5b77df2d1d6500ffc266d8276c8 Mon Sep 17 00:00:00 2001 From: Fernando Lisboa Costa <fernando.costa@codeminer42.com> Date: Wed, 24 Jan 2024 05:30:18 -0300 Subject: [PATCH 1/4] fix: default tlds: { allow: true } on domain validation --- lib/types/string.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/types/string.js b/lib/types/string.js index d472e610..c5fcec55 100755 --- a/lib/types/string.js +++ b/lib/types/string.js @@ -742,7 +742,8 @@ module.exports = Any.extend({ internals.addressOptions = function (options) { if (!options) { - return options; + assert(internals.tlds, 'Built-in TLD list disabled'); + return Object.assign({}, options, internals.tlds); } // minDomainSegments From 9a62741c174386da0c4ce20ff0e662ff9a3d9146 Mon Sep 17 00:00:00 2001 From: Fernando Lisboa Costa <fernando.costa@codeminer42.com> Date: Wed, 24 Jan 2024 05:30:27 -0300 Subject: [PATCH 2/4] test: default tlds: { allow: true } on domain validation --- test/types/string.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/types/string.js b/test/types/string.js index 438d553b..dcb3462f 100755 --- a/test/types/string.js +++ b/test/types/string.js @@ -1323,7 +1323,8 @@ describe('string', () => { type: 'string.domain', context: { value: '"example.com', label: 'value' } }], - ['mail@example.com', false, '"value" must contain a valid domain name'] + ['mail@example.com', false, '"value" must contain a valid domain name'], + ['joi.dev.whatevertldiwant', false, '"value" must contain a valid domain name'] ]); }); @@ -1496,7 +1497,8 @@ describe('string', () => { type: 'string.email', context: { value: '123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345.toolong.com', invalids: ['123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345.toolong.com'], label: 'value' } }], - ['foo@bar%2ecom', false, '"value" must be a valid email'] + ['foo@bar%2ecom', false, '"value" must be a valid email'], + ['invalid_tlds@email.ccc', false, '"value" must be a valid email'] ]); }); From 1ed55fb0210f3720614b60cce30e4313fb607383 Mon Sep 17 00:00:00 2001 From: Fernando Lisboa Costa <fernando.costa@codeminer42.com> Date: Wed, 24 Jan 2024 14:14:30 -0300 Subject: [PATCH 3/4] refactor: remove Object.assign and internals.tlds assert --- lib/types/string.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/types/string.js b/lib/types/string.js index c5fcec55..db2b8b51 100755 --- a/lib/types/string.js +++ b/lib/types/string.js @@ -742,8 +742,7 @@ module.exports = Any.extend({ internals.addressOptions = function (options) { if (!options) { - assert(internals.tlds, 'Built-in TLD list disabled'); - return Object.assign({}, options, internals.tlds); + return internals.tlds; } // minDomainSegments From 582e81209c6fbb02c4394c3ed5afd5a8fb662219 Mon Sep 17 00:00:00 2001 From: Nicolas Morel <nicolas@morel.io> Date: Mon, 29 Jan 2024 14:08:36 +0100 Subject: [PATCH 4/4] Apply suggestions from code review --- lib/types/string.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/string.js b/lib/types/string.js index db2b8b51..57b3d34b 100755 --- a/lib/types/string.js +++ b/lib/types/string.js @@ -742,7 +742,7 @@ module.exports = Any.extend({ internals.addressOptions = function (options) { if (!options) { - return internals.tlds; + return internals.tlds || options; // $lab:coverage:ignore$ } // minDomainSegments