"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const startsWithWildcardRegExp = /^\*\./; const endsWithWildcardRegExp = /\.\*$/; const trailingSlashesRegExp = /\/.*$/; const portRegExp = /:(\d+)$/; const protocolRegExp = /^(\w+):\/\//; const wildcardRegExp = /\\\.\\\*/g; function parseUrl(url) { if (!url || typeof url !== 'string') return null; let protocol = url.match(protocolRegExp); protocol = protocol ? protocol[1] : null; url = url.replace(protocolRegExp, ''); url = url.replace(trailingSlashesRegExp, ''); let port = url.match(portRegExp); port = port ? parseInt(port[1], 10) : null; url = url.replace(portRegExp, ''); return { protocol, url, port }; } function prepareRule(url) { const rule = parseUrl(url); if (rule) { rule.url = rule.url.replace(startsWithWildcardRegExp, '.'); rule.url = rule.url.replace(endsWithWildcardRegExp, '.'); } return rule; } function urlMatchRule(sourceUrl, rule) { if (!sourceUrl || !rule) return false; const matchByProtocols = !rule.protocol || !sourceUrl.protocol || rule.protocol === sourceUrl.protocol; const matchByPorts = !rule.port || sourceUrl.port === rule.port; const domainRequiredBeforeRule = rule.url.startsWith('.'); const domainRequiredAfterRule = rule.url.endsWith('.'); let regExStr = '^'; if (domainRequiredBeforeRule) regExStr += '.+'; regExStr += (0, lodash_1.escapeRegExp)(rule.url).replace(wildcardRegExp, '\\..*'); if (domainRequiredAfterRule) regExStr += '.+'; regExStr += '$'; return new RegExp(regExStr).test(sourceUrl.url) && matchByProtocols && matchByPorts; } function default_1(url, rules) { if (!Array.isArray(rules)) rules = [rules]; return rules.some(rule => urlMatchRule(parseUrl(url), prepareRule(rule))); } exports.default = default_1; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NoZWNrLXVybC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFrRDtBQUVsRCxNQUFNLHdCQUF3QixHQUFHLE9BQU8sQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFLLE9BQU8sQ0FBQztBQUN6QyxNQUFNLHFCQUFxQixHQUFNLE9BQU8sQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBaUIsU0FBUyxDQUFDO0FBQzNDLE1BQU0sY0FBYyxHQUFhLGFBQWEsQ0FBQztBQUMvQyxNQUFNLGNBQWMsR0FBYSxXQUFXLENBQUM7QUFFN0MsU0FBUyxRQUFRLENBQUUsR0FBRztJQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFFaEIsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV6QyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6QyxHQUFHLEdBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsR0FBRyxHQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsR0FBRyxHQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRW5DLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBRSxHQUFHO0lBQ3JCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQixJQUFJLElBQUksRUFBRTtRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUM1RDtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBRSxTQUFTLEVBQUUsSUFBSTtJQUNsQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSTtRQUNuQixPQUFPLEtBQUssQ0FBQztJQUVqQixNQUFNLGdCQUFnQixHQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQy9HLE1BQU0sWUFBWSxHQUFlLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDNUUsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxNQUFNLHVCQUF1QixHQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhELElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUVuQixJQUFJLHdCQUF3QjtRQUN4QixRQUFRLElBQUksSUFBSSxDQUFDO0lBRXJCLFFBQVEsSUFBSSxJQUFBLHFCQUFRLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFaEUsSUFBSSx1QkFBdUI7UUFDdkIsUUFBUSxJQUFJLElBQUksQ0FBQztJQUVyQixRQUFRLElBQUksR0FBRyxDQUFDO0lBRWhCLE9BQU8sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsSUFBSSxZQUFZLENBQUM7QUFDeEYsQ0FBQztBQUVELG1CQUF5QixHQUFHLEVBQUUsS0FBSztJQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDckIsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFcEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFMRCw0QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVzY2FwZVJlZ0V4cCBhcyBlc2NhcGVSZSB9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IHN0YXJ0c1dpdGhXaWxkY2FyZFJlZ0V4cCA9IC9eXFwqXFwuLztcbmNvbnN0IGVuZHNXaXRoV2lsZGNhcmRSZWdFeHAgICA9IC9cXC5cXCokLztcbmNvbnN0IHRyYWlsaW5nU2xhc2hlc1JlZ0V4cCAgICA9IC9cXC8uKiQvO1xuY29uc3QgcG9ydFJlZ0V4cCAgICAgICAgICAgICAgID0gLzooXFxkKykkLztcbmNvbnN0IHByb3RvY29sUmVnRXhwICAgICAgICAgICA9IC9eKFxcdyspOlxcL1xcLy87XG5jb25zdCB3aWxkY2FyZFJlZ0V4cCAgICAgICAgICAgPSAvXFxcXFxcLlxcXFxcXCovZztcblxuZnVuY3Rpb24gcGFyc2VVcmwgKHVybCkge1xuICAgIGlmICghdXJsIHx8IHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgIGxldCBwcm90b2NvbCA9IHVybC5tYXRjaChwcm90b2NvbFJlZ0V4cCk7XG5cbiAgICBwcm90b2NvbCA9IHByb3RvY29sID8gcHJvdG9jb2xbMV0gOiBudWxsO1xuICAgIHVybCAgICAgID0gdXJsLnJlcGxhY2UocHJvdG9jb2xSZWdFeHAsICcnKTtcbiAgICB1cmwgICAgICA9IHVybC5yZXBsYWNlKHRyYWlsaW5nU2xhc2hlc1JlZ0V4cCwgJycpO1xuXG4gICAgbGV0IHBvcnQgPSB1cmwubWF0Y2gocG9ydFJlZ0V4cCk7XG5cbiAgICBwb3J0ID0gcG9ydCA/IHBhcnNlSW50KHBvcnRbMV0sIDEwKSA6IG51bGw7XG4gICAgdXJsICA9IHVybC5yZXBsYWNlKHBvcnRSZWdFeHAsICcnKTtcblxuICAgIHJldHVybiB7IHByb3RvY29sLCB1cmwsIHBvcnQgfTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVJ1bGUgKHVybCkge1xuICAgIGNvbnN0IHJ1bGUgPSBwYXJzZVVybCh1cmwpO1xuXG4gICAgaWYgKHJ1bGUpIHtcbiAgICAgICAgcnVsZS51cmwgPSBydWxlLnVybC5yZXBsYWNlKHN0YXJ0c1dpdGhXaWxkY2FyZFJlZ0V4cCwgJy4nKTtcbiAgICAgICAgcnVsZS51cmwgPSBydWxlLnVybC5yZXBsYWNlKGVuZHNXaXRoV2lsZGNhcmRSZWdFeHAsICcuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGU7XG59XG5cbmZ1bmN0aW9uIHVybE1hdGNoUnVsZSAoc291cmNlVXJsLCBydWxlKSB7XG4gICAgaWYgKCFzb3VyY2VVcmwgfHwgIXJ1bGUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IG1hdGNoQnlQcm90b2NvbHMgICAgICAgICA9ICFydWxlLnByb3RvY29sIHx8ICFzb3VyY2VVcmwucHJvdG9jb2wgfHwgcnVsZS5wcm90b2NvbCA9PT0gc291cmNlVXJsLnByb3RvY29sO1xuICAgIGNvbnN0IG1hdGNoQnlQb3J0cyAgICAgICAgICAgICA9ICFydWxlLnBvcnQgfHwgc291cmNlVXJsLnBvcnQgPT09IHJ1bGUucG9ydDtcbiAgICBjb25zdCBkb21haW5SZXF1aXJlZEJlZm9yZVJ1bGUgPSBydWxlLnVybC5zdGFydHNXaXRoKCcuJyk7XG4gICAgY29uc3QgZG9tYWluUmVxdWlyZWRBZnRlclJ1bGUgID0gcnVsZS51cmwuZW5kc1dpdGgoJy4nKTtcblxuICAgIGxldCByZWdFeFN0ciA9ICdeJztcblxuICAgIGlmIChkb21haW5SZXF1aXJlZEJlZm9yZVJ1bGUpXG4gICAgICAgIHJlZ0V4U3RyICs9ICcuKyc7XG5cbiAgICByZWdFeFN0ciArPSBlc2NhcGVSZShydWxlLnVybCkucmVwbGFjZSh3aWxkY2FyZFJlZ0V4cCwgJ1xcXFwuLionKTtcblxuICAgIGlmIChkb21haW5SZXF1aXJlZEFmdGVyUnVsZSlcbiAgICAgICAgcmVnRXhTdHIgKz0gJy4rJztcblxuICAgIHJlZ0V4U3RyICs9ICckJztcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKHJlZ0V4U3RyKS50ZXN0KHNvdXJjZVVybC51cmwpICYmIG1hdGNoQnlQcm90b2NvbHMgJiYgbWF0Y2hCeVBvcnRzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAodXJsLCBydWxlcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShydWxlcykpXG4gICAgICAgIHJ1bGVzID0gW3J1bGVzXTtcblxuICAgIHJldHVybiBydWxlcy5zb21lKHJ1bGUgPT4gdXJsTWF0Y2hSdWxlKHBhcnNlVXJsKHVybCksIHByZXBhcmVSdWxlKHJ1bGUpKSk7XG59XG4iXX0=