Innovenergy_trunk/frontend/node_modules/testcafe/lib/utils/check-url.js

53 lines
7.6 KiB
JavaScript

"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=