Spaces:
Sleeping
Sleeping
| ; | |
| const Domain = require('./domain'); | |
| const Email = require('./email'); | |
| const Tlds = require('./tlds'); | |
| const internals = { | |
| defaultTlds: { allow: Tlds, deny: null } | |
| }; | |
| module.exports = { | |
| domain: { | |
| analyze(domain, options) { | |
| options = internals.options(options); | |
| return Domain.analyze(domain, options); | |
| }, | |
| isValid(domain, options) { | |
| options = internals.options(options); | |
| return Domain.isValid(domain, options); | |
| } | |
| }, | |
| email: { | |
| analyze(email, options) { | |
| options = internals.options(options); | |
| return Email.analyze(email, options); | |
| }, | |
| isValid(email, options) { | |
| options = internals.options(options); | |
| return Email.isValid(email, options); | |
| } | |
| } | |
| }; | |
| internals.options = function (options) { | |
| if (!options) { | |
| return { tlds: internals.defaultTlds }; | |
| } | |
| if (options.tlds === false) { // Defaults to true | |
| return options; | |
| } | |
| if (!options.tlds || | |
| options.tlds === true) { | |
| return Object.assign({}, options, { tlds: internals.defaultTlds }); | |
| } | |
| if (typeof options.tlds !== 'object') { | |
| throw new Error('Invalid options: tlds must be a boolean or an object'); | |
| } | |
| if (options.tlds.deny) { | |
| if (options.tlds.deny instanceof Set === false) { | |
| throw new Error('Invalid options: tlds.deny must be a Set object'); | |
| } | |
| if (options.tlds.allow) { | |
| throw new Error('Invalid options: cannot specify both tlds.allow and tlds.deny lists'); | |
| } | |
| return options; | |
| } | |
| if (options.tlds.allow === true) { | |
| return Object.assign({}, options, { tlds: internals.defaultTlds }); | |
| } | |
| if (options.tlds.allow instanceof Set === false) { | |
| throw new Error('Invalid options: tlds.allow must be a Set object or true'); | |
| } | |
| return options; | |
| }; | |