12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 'use strict';
- const Decode = require('./decode');
- const Domain = require('./domain');
- const Email = require('./email');
- const Errors = require('./errors');
- const Ip = require('./ip');
- const Tlds = require('./tlds');
- const Uri = require('./uri');
- const internals = {
- defaultTlds: { allow: Tlds, deny: null }
- };
- module.exports = {
- errors: Errors.codes,
- 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);
- }
- },
- ip: {
- regex: Ip.regex
- },
- uri: {
- decode: Decode.decode,
- regex: Uri.regex
- }
- };
- 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;
- };
|