'use strict'; 
 | 
  
 | 
const RFC3986 = require('./rfc3986'); 
 | 
  
 | 
  
 | 
const internals = { 
 | 
    Ip: { 
 | 
        cidrs: { 
 | 
            ipv4: { 
 | 
                required: '\\/(?:' + RFC3986.ipv4Cidr + ')', 
 | 
                optional: '(?:\\/(?:' + RFC3986.ipv4Cidr + '))?', 
 | 
                forbidden: '' 
 | 
            }, 
 | 
            ipv6: { 
 | 
                required: '\\/' + RFC3986.ipv6Cidr, 
 | 
                optional: '(?:\\/' + RFC3986.ipv6Cidr + ')?', 
 | 
                forbidden: '' 
 | 
            }, 
 | 
            ipvfuture: { 
 | 
                required: '\\/' + RFC3986.ipv6Cidr, 
 | 
                optional: '(?:\\/' + RFC3986.ipv6Cidr + ')?', 
 | 
                forbidden: '' 
 | 
            } 
 | 
        }, 
 | 
        versions: { 
 | 
            ipv4: RFC3986.IPv4address, 
 | 
            ipv6: RFC3986.IPv6address, 
 | 
            ipvfuture: RFC3986.IPvFuture 
 | 
        } 
 | 
    } 
 | 
}; 
 | 
  
 | 
  
 | 
internals.Ip.createIpRegex = function (versions, cidr) { 
 | 
  
 | 
    let regex; 
 | 
    for (let i = 0; i < versions.length; ++i) { 
 | 
        const version = versions[i]; 
 | 
        if (!regex) { 
 | 
            regex = '^(?:' + internals.Ip.versions[version] + internals.Ip.cidrs[version][cidr]; 
 | 
        } 
 | 
        else { 
 | 
            regex += '|' + internals.Ip.versions[version] + internals.Ip.cidrs[version][cidr]; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    return new RegExp(regex + ')$'); 
 | 
}; 
 | 
  
 | 
module.exports = internals.Ip; 
 |